Есть задачи, которые не умещаются в одном GPU. Не потому что ускоритель слабый, а потому что модель просто больше. GPT-4, Llama 3, Gemini Ultra - у этих систем сотни миллиардов параметров, и ни один одиночный чип физически не удержит их в своей памяти. Выход казался очевидным - взять несколько GPU и заставить их работать сообща. Но тут и начинается настоящая инженерная головоломка: как именно они должны общаться, чтобы не превратить потенциально мощную систему в толпу, которая вечно ждёт у узкого прохода?
Ответ NVIDIA - NVLink и NVSwitch. Два компонента, которые за несколько лет изменили само понятие "многопроцессорная система" применительно к GPU-вычислениям.
Почему PCIe давно перестал справляться
Чтобы оценить значение NVLink, нужно честно взглянуть на то, что было до него. Стандарт PCIe создавался для другого мира - мира, где видеокарты занимались рендерингом, а не обучением нейронных сетей с триллионами операций в секунду.
PCIe 4.0 в режиме x16 обеспечивает около 32 гигабайт в секунду двунаправленной полосы. Звучит неплохо, если не знать, что современный GPU при операции AllReduce - синхронизации весов между ускорителями - может требовать передачи десятков гигабайт за один шаг обучения. На PCIe это превращается в очередь, в ожидание, в простаивающие вычислительные блоки.
Первое поколение NVLink появилось в 2016 году с архитектурой Pascal и уже тогда предлагало около 160 гигабайт в секунду - примерно в пять раз больше PCIe 3.0. Но дело не только в цифрах. NVLink создавал прямое соединение между GPU, минуя CPU и системную шину. Данные больше не делали крюк через процессор - они шли напрямую.
Каждое последующее поколение удваивало ставки. Hopper (H100) принёс NVLink 4.0 с 900 гигабайтами в секунду. Blackwell (B200) в 2024 году - NVLink 5.0 с 1,8 терабайта в секунду на один GPU. Это в 14 раз превышает возможности PCIe 5.0. Следующая архитектура Rubin с NVLink 6.0 обещает 3,6 терабайта в секунду и суммарную пропускную способность 260 терабайт в секунду для 72 объединённых ускорителей.
Проверить текущее состояние NVLink-соединений и топологию системы:
# Статус всех NVLink-портов первого GPU
nvidia-smi nvlink --status -i 0
# Матрица связей между всеми GPU в системе
nvidia-smi topo -m
NVSwitch - коммутатор, который изменил правила
NVLink в исходном виде хорошо работал для малого числа GPU. Но если ускорителей восемь или шестнадцать - как связать их все так, чтобы каждый мог разговаривать с любым другим напрямую и на полной скорости?
Прямое соединение всех со всеми физически нереализуемо при большом числе узлов - у GPU просто не хватит портов. Здесь вступает NVSwitch - специализированный коммутатор, построенный исключительно для работы с NVLink.
NVSwitch реализует некоммутируемую (non-blocking) матрицу коммутации. Это означает, что любой GPU может обмениваться данными с любым другим одновременно и на полной скорости, без конкуренции за ресурсы. В DGX H100 четыре чипа NVSwitch третьего поколения обеспечивают суммарную пропускную способность 25,6 терабит в секунду каждый. И всё это - прозрачно для приложений.
Ключевое слово именно "прозрачно". CUDA и библиотека NCCL автоматически обнаруживают топологию NVSwitch и строят оптимальные маршруты для коллективных операций. Разработчику не нужно писать специальный код - достаточно запустить стандартный многопроцессорный PyTorch, и он уже использует всю мощь фабрики.
Что происходит, когда NVSwitch нет
Разница между системой с NVSwitch и без него - это не просто разница в скорости. Это принципиально разные топологии.
В точечном соединении (point-to-point), когда каждый GPU связан напрямую с соседями, полоса пропускания делится между активными соединениями. Восемь GPU, объединённых таким способом, при взаимодействии получают только 128 гигабайт в секунду на пару - вместо полных 900. Скорость зависит от числа участников, что создаёт непредсказуемую производительность при масштабировании.
NVSwitch устраняет эту зависимость. Каждый GPU получает полные 900 гигабайт в секунду вне зависимости от того, сколько других ускорителей одновременно передают данные. Операция AllReduce для 20-гигабайтного тензора на восьми H100 без NVSwitch занимает около 150 миллисекунд - с NVSwitch это время падает до 22 миллисекунд. Семикратный выигрыш, который напрямую влияет на скорость обучения и стоимость каждого токена.
Для диагностики производительности в реальных нагрузках используются тесты NCCL:
git clone https://github.com/NVIDIA/nccl-tests.git
cd nccl-tests && make
./build/all_reduce_perf -b 8 -e 8G -f 2 -g 8
Результат покажет достигнутую полосу пропускания при разных размерах тензоров и позволит сравнить её с теоретическим максимумом для данной конфигурации.
Rack-scale - когда стойка становится одним GPU
DGX H100 с восемью ускорителями уже впечатляет. Но что происходит, когда целая стойка превращается в единую вычислительную единицу? Это реализовано в GB200 NVL72 - системе, где 72 GPU архитектуры Blackwell и 36 процессоров Grace объединены через NVLink 5.0 и внешние чипы NVSwitch.
Суммарная полоса пропускания этой конструкции - 130 терабайт в секунду. Все 72 GPU видят общую память и могут обращаться к данным любого соседа с одинаковой скоростью. С точки зрения приложения это один гигантский ускоритель с колоссальным объёмом памяти.
Архитектурно интересно то, что в NVL72 нет прямого соединения GPU-GPU внутри отдельного сервера. Все 72 карты топологически равнозначны - каждая подключена к внешним коммутаторам NVSwitch в стойке, путь данных между любыми двумя GPU одинаков. Это устраняет проблему "шумных соседей", когда нагрузка одной карты замедляет связь другой.
Планирование распределённых задач на таких системах с помощью Slurm выглядит следующим образом:
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=72
srun --segment=2 python train.py \
--tensor-parallel-size 8 \
--pipeline-parallel-size 4
Параметр --segment удерживает связанные задачи внутри одной NVLink-стойки, минимизируя межстоечный трафик через InfiniBand.
SHARP, NCCL и невидимый программный слой
Железо создаёт возможности, программный стек их реализует. Библиотека NCCL - это то, что делает NVLink и NVSwitch видимыми для PyTorch и TensorFlow. Она автоматически обнаруживает топологию системы и выбирает оптимальные алгоритмы: кольцевые, древовидные или NVLS-алгоритмы для систем с NVSwitch.
Отдельного внимания заслуживает протокол SHARP. Идея элегантная: вместо того чтобы каждый GPU отправлял градиенты, а один из них всё это суммировал - агрегация происходит прямо внутри коммутатора NVSwitch. Данные суммируются в пути, не занимая вычислительные блоки GPU. Поддержка SHARP в NCCL 2.27 даёт до 2,5 раза более высокую скорость AllReduce на тензорах, типичных для трансформерных моделей.
Типичная конфигурация окружения для максимальной производительности:
export NCCL_NVLS_ENABLE=1 # NVLink SHARP включён
export NCCL_P2P_LEVEL=NVL # NVLink для P2P-обменов
export NCCL_NET_GDR_LEVEL=2 # GPUDirect RDMA между узлами
NVLink Fusion - первый шаг к открытой экосистеме
Долгие годы NVLink был закрытым стандартом, работавшим только внутри экосистемы NVIDIA. На Computex 2025 компания объявила NVLink Fusion - программу, которая открывает доступ к NVLink-фабрике для сторонних производителей CPU и ускорителей через встраиваемый чиплет NVLink 5.
Qualcomm, Fujitsu, Marvell, MediaTek - все получили возможность создавать чипы, напрямую подключающиеся к NVSwitch-инфраструктуре. Полоса пропускания при таком соединении в 14 раз выше, чем у PCIe 5.0. Крупные облачные провайдеры получают возможность строить полузаказные системы, где рядом с GPU NVIDIA работают их собственные ускорители. NVIDIA при этом остаётся "соединительной тканью" всей инфраструктуры - позиция, которую очень сложно обойти конкурентам.
Параллельно развивается открытый стандарт UALink, за которым стоят AMD, Intel, Google, Microsoft и Broadcom. В апреле 2025 года опубликована спецификация UALink 200G 1.0, нацеленная на связь до 1024 ускорителей. Первые коммерческие продукты ожидаются в 2026 году. Насколько этот стандарт составит реальную конкуренцию NVLink в производительности и зрелости экосистемы - покажет время. Но сам факт его появления говорит о том, что отрасль не готова принять монополию одного стандарта как данность.
Что же в итоге означает вся эта технология для тех, кто строит AI-инфраструктуру? Ответ прямой: NVLink и NVSwitch решают фундаментальную проблему масштабирования, которая иначе не решается. Если нейронная сеть не помещается в один GPU, единственный способ обучать её эффективно - это сделать так, чтобы множество ускорителей работали как единое целое, а не как набор изолированных машин. Именно это и делает связка NVLink плюс NVSwitch: превращает независимые карты в единую вычислительную ткань, где данные текут со скоростью, которая ещё десять лет назад казалась физически недостижимой.