Новая эра масштабирования: TensorRT 11.0
Компания NVIDIA выпустила TensorRT 11.0, ключевой особенностью которого стала встроенная поддержка многоустройственного инференса (Multi-Device Inference). Это решение позволяет разработчикам обходить ограничения памяти и вычислительной мощности одиночных GPU, распределяя нагрузку между несколькими устройствами без потери производительности. Интеграция с библиотекой NVIDIA NCCL обеспечивает высокоскоростные коллективные операции, абстрагируя сложность топологий связи (NVLink, PCIe, InfiniBand) за единым интерфейсом.
Стратегии параллелизма: Тензорное vs Контекстное
Для распределения вычислений TensorRT 11.0 поддерживает две основные стратегии. Тензорное параллелизм разделяет веса слоев по GPU, что критично, когда параметры одного слоя превышают объем памяти одного устройства. Контекстное параллелизм разделяет входную последовательность по оси длины, что особенно эффективно для задач с длинными контекстами (long-sequence), где внимание (attention) потребляет наибольшую часть ресурсов.
Оптимизации для длинных контекстов
Для работы с длинными последовательностями (десятки тысяч токенов) в TensorRT 11.0 реализованы специализированные примитивы IDistCollectiveLayer. Разработчики могут выбирать между тремя подходами, каждый из которых оптимизирует баланс между вычислениями, памятью и коммуникациями:
- AllGather KV: Ренки обмениваются ключами (K) и значениями (V) через коллективную операцию AllGather перед вычислением локального внимания. Это снижает объем локальных матричных умножений, но добавляет накладные расходы на коммуникацию на каждом шаге.
- Ring Attention: Позволяет перекрывать коммуникацию и вычисления. Данные K и V потоково передаются по кольцу, что снижает потребление памяти за счет использования онлайн-softmax и избегания материализации полноразмерных тензоров K и V.
- DeepSpeed Ulysses: Разделяет выборки по последовательности, а затем использует операции All-to-All для распределения голов внимания (attention heads). Каждая GPU вычисляет внимание для подмножества голов параллельно, что обеспечивает эффективное масштабирование.
Результаты бенчмарков
Тестирование на моделях NVIDIA Cosmos 3 и FLUX.1 показало, что для задач генерации медиа (диффузионные модели) при экстремально длинных контекстах стратегия DeepSpeed Ulysses стабильно демонстрирует наименьшую задержку (latency). Метод Ring Attention также показал сильное масштабирование вплоть до 4 GPU, предлагая альтернативу с меньшим потреблением памяти.
| Стратегия | Механизм | Преимущества | Оптимальное применение |
|---|---|---|---|
| AllGather KV | Обмен K/V тензорами через AllGather | Простота реализации, снижение локальных вычислений | Стандартные диффузионные пайплайны |
| Ring Attention | Кольцевая передача данных, перекрытие вычислений | Низкое потребление памяти, отсутствие материализации полных K/V | Модели с ограниченной памятью GPU |
| DeepSpeed Ulysses | All-to-All для голов внимания | Наименьшая задержка при длинных контекстах | Генерация медиа, экстремально длинные последовательности |
Интеграция с PyTorch
Для упрощения перехода разработчиков NVIDIA рекомендует связку TensorRT 11.0 и Torch-TensorRT. Это позволяет конвертировать и развертывать массивные модели PyTorch вне их родного фреймворка, автоматически распределяя веса и вычисления по нескольким GPU. Скачать обновленную версию можно на портале NVIDIA Developer Portal.
Источник: NVIDIA dev blog ↗