Аппаратная часть

NVLink или PCIe: пропускная способность, топология и когда это важно

NVLink даёт каждому GPU во много раз большую пропускную способность, чем слот PCIe, но многим задачам на нескольких GPU он вовсе не нужен. Разбираем цифры, задачи, которые зависят от интерконнекта, и то, как проверить, что установлено в вашем сервере.

7 мин чтения

Сравнение NVLink и PCIe сводится к одному вопросу: насколько быстро GPU могут обмениваться данными друг с другом. PCIe — универсальная шина, которая соединяет GPU с остальными компонентами сервера. NVLink — специализированный канал NVIDIA для связи между GPU: в расчёте на один GPU его пропускная способность примерно в 7–14 раз выше, чем у слота PCIe Gen5 x16. Нужен ли он вам, зависит от того, насколько интенсивно ваши GPU обмениваются данными: для тензорного параллелизма и масштабного обучения он решающий, а для задач на одном GPU и инференса с параллелизмом по данным почти ничего не меняет. Ниже — цифры и задачи для обоих случаев.

Сначала об одной ловушке: для PCIe цифры часто приводят для одного направления, а NVIDIA указывает для NVLink сумму по обоим направлениям. Сравнивайте сопоставимое. Для PCIe и NVLink цифры даны в расчёте на один GPU, для сетевых каналов — на один адаптер.

КаналВ обоих направленияхВ одном направленииГде встречается
PCIe Gen4 x16≈ 64 ГБ/с≈ 32 ГБ/сL40S
PCIe Gen5 x16≈ 128 ГБ/с≈ 64 ГБ/сRTX PRO 6000, RTX 5090
NVLink 4900 ГБ/с450 ГБ/сH100 и H200 на платах HGX
NVLink 51,8 ТБ/с900 ГБ/сB200 и B300 на платах HGX; GB300 NVL72
Сетевой адаптер 400G≈ 100 ГБ/с50 ГБ/сМежду серверами
Сетевой адаптер 800G≈ 200 ГБ/с100 ГБ/сМежду серверами

Получается, что NVLink 4 даёт каждому GPU примерно в 7 раз больше пропускной способности, чем слот PCIe Gen5 x16, а NVLink 5 — примерно в 14 раз больше. Цифры для PCIe следуют из спецификации PCIe (32 ГТ/с на линию для Gen5 и 16 ГТ/с для Gen4, с учётом накладных расходов на кодирование) и являются пиковыми; реальная передача данных идёт несколько медленнее. Цифры для NVLink приводит NVIDIA.

NVSwitch, платы HGX и стойки NVL72

Пропускная способность на GPU — лишь половина дела. Вторая половина — топология, то есть то, какой GPU может обращаться к какому другому GPU на полной скорости.

  • Серверы с PCIe. GPU подключены к корневым портам CPU или к коммутаторам PCIe. Трафик между GPU проходит через эти коммутаторы, а между процессорными сокетами — ещё и через канал между CPU. Кроме того, он может делить пропускную способность с сетевыми адаптерами и NVMe-накопителями.
  • Платы HGX. Восемь GPU SXM установлены на одной базовой плате вместе с чипами NVSwitch, которые соединяют каждый GPU с каждым другим на полной пропускной способности NVLink. Все восемь могут обмениваться данными одновременно и по любой схеме — именно это и нужно коллективным операциям.
  • Стойки NVL72. GB300 NVL72 расширяет домен NVLink с 8 до 72 GPU в пределах стойки с жидкостным охлаждением; суммарная пропускная способность NVLink, по данным NVIDIA, — 130 ТБ/с. Коллективные операции на всех 72 GPU вообще не затрагивают сеть.
  • AMD MI355X. 8-GPU-платформа AMD использует третий подход: коммутатора нет, зато у каждого GPU семь каналов Infinity Fabric — по данным AMD, по 153,6 ГБ/с каждый, — по одному к каждому из остальных семи GPU.

Когда интерконнект имеет значение

Пропускная способность между GPU становится узким местом в трёх сценариях.

Тензорный параллелизм

Тензорный параллелизм делит каждый слой между GPU, и стандартная схема требует двух операций all-reduce на каждый слой трансформера при каждом прямом проходе. Возьмём модель класса 70B (80 слоёв, скрытая размерность 8 192), которая обслуживается с тензорным параллелизмом на 8 GPU и обрабатывает промпт на 8K токенов в BF16. Каждая операция all-reduce охватывает 8 192 токена × 8 192 значения × 2 байта = 128 МиБ. По стандартной оценке для кольцевого алгоритма каждый GPU отправляет за одну операцию all-reduce 2 × 7/8 этого объёма, а всего таких операций 160: около 37,6 ГБ на GPU за один этап prefill. При идеальной пропускной способности в одном направлении:

КаналВ одном направленииИдеализированное время передачи 37,6 ГБ
PCIe Gen5 x1664 ГБ/с≈ 0,59 с
NVLink 4450 ГБ/с≈ 0,08 с
NVLink 5900 ГБ/с≈ 0,04 с

Это нижние оценки: они не учитывают задержку и какое-либо перекрытие с вычислениями, но важно именно соотношение. На этапе декодирования (decode) сообщения крошечные, поэтому решающую роль играет уже не пропускная способность, а задержка, и 160 маленьких операций all-reduce на каждом шаге декодирования через PCIe складываются в заметное время.

Большие операции all-reduce при обучении

При обучении с параллелизмом по данным градиенты синхронизируются на каждом шаге. У модели 7B около 14 ГБ градиентов в BF16, и кольцевой all-reduce на 8 GPU передаёт около 24,5 ГБ на каждый GPU: примерно 0,38 с при скорости PCIe Gen5 в одном направлении против примерно 0,05 с через NVLink 4 — и так на каждом шаге. Фреймворки совмещают этот обмен с обратным проходом, поэтому он мешает, только когда обмен данными длится дольше вычислений, но подходы с шардированием, такие как FSDP и ZeRO-3, добавляют сверху операции all-gather для параметров и ещё больше увеличивают трафик.

All-to-all в MoE-моделях (mixture of experts)

При параллелизме экспертов скрытое состояние каждого токена отправляется на GPU, где находятся выбранные для него эксперты, и обратно: два обмена all-to-all на каждый MoE-слой. All-to-all нагружает все пары GPU одновременно — именно с такой нагрузкой хорошо справляется коммутируемая фабрика NVLink и плохо справляется древовидная топология PCIe.

ЗадачаТрафик между GPUЧувствительность к интерконнекту
Тензорный параллелизмДве операции all-reduce на слой на каждом шагеВысокая
Обучение с полным шардированием (FSDP, ZeRO-3)All-gather параметров и reduce-scatter градиентов, слой за слоемВысокая
Экспертный параллелизм (MoE)Два обмена all-to-all на каждый MoE-слойВысокая
Обучение с параллелизмом по даннымОдин all-reduce градиентов на шаг, совмещённый с вычислениямиСредняя; высокая для больших моделей
Конвейерный параллелизм (pipeline parallelism)Активации на границах между этапамиОт низкой до средней
Инференс с параллелизмом по данным, по копии модели на каждом GPUНетНет
Задачи на одном GPU, рендеринг, пакетная обработкаНетНет

Когда достаточно PCIe

  • Инференс с параллелизмом по данным для модели, которая помещается на один GPU. Каждый GPU обслуживает собственную копию модели, а балансировщик нагрузки распределяет запросы. GPU никогда не обмениваются тензорами, поэтому производительность растёт с числом реплик независимо от того, чем они соединены. Какие модели помещаются на одну карту, показано в нашем руководстве о лучшем GPU для инференса LLM (больших языковых моделей).
  • Задачи на одном GPU. Дообучение (fine-tuning) с LoRA для модели, которая помещается на карту, генерация изображений и видео, рендеринг, эмбеддинги и большая часть разработки.
  • Конвейерный параллелизм. Если модели всё же нужно несколько GPU, при разделении по слоям через каждую границу передаются только активации: для того же промпта на 8K токенов и модели класса 70B — около 134 МБ на границу, примерно 2 мс на скорости PCIe Gen5, против 37,6 ГБ на GPU при тензорном параллелизме. Платить за это приходится задержкой, поскольку для каждого запроса этапы работают последовательно.
  • Тривиально распараллеливаемые задачи. Пакетный инференс, перебор гиперпараметров и рендер-фермы без труда распределяются по GPU.

И в серверах HGX, и в серверах с PCIe GPU обмениваются данными с хостом по PCIe, чтобы загружать данные и веса, так что PCIe на стороне хоста важен везде. NVLink снимает с шины именно трафик между GPU.

Мы сдаём в аренду 8-GPU-серверы обоих типов, и интерконнект во многом определяет разницу между ними.

СерверСвязь между GPUПамять GPUСетьЦена в месяц
HGX H100NVLink 4, 900 ГБ/с на GPU8 × 80 ГБ8 × 400G ConnectX-716 900 $
HGX H200NVLink 4, 900 ГБ/с на GPU8 × 141 ГБ8 × 400G ConnectX-723 900 $
HGX B200NVLink 5, 1,8 ТБ/с на GPU8 × 180 ГБ8 × 400G ConnectX-734 900 $
HGX B300NVLink 5, 1,8 ТБ/с на GPU8 × 288 ГБ8 × 800G ConnectX-839 900 $
8× MI355XПолносвязная топология Infinity Fabric, 7 × 153,6 ГБ/с8 × 288 ГБ8 × 400G RoCE19 900 $
8× RTX PRO 6000PCIe Gen5, без NVLink8 × 96 ГБ2 × 100 GbE10 490 $

Сервер с RTX PRO 6000 — самый доступный по цене 8-GPU-сервер в нашем каталоге, с 768 ГБ видеопамяти (VRAM), и для подходящих задач отсутствие NVLink ничего не стоит. Он подходит для таких задач:

  • Восемь независимых реплик моделей, которые помещаются в 96 ГБ, — например, модель 70B в FP8 на каждой карте.
  • Рендеринг, генерация изображений и видео и другие задачи, где каждый GPU работает сам по себе.
  • Инференс с конвейерным параллелизмом для моделей, слишком больших для одного GPU.

Выбирайте вместо него сервер HGX, если вы полагаетесь на тензорный параллелизм в больших масштабах, обучаете модели, которые нужно шардировать между GPU, запускаете MoE-модели с параллелизмом экспертов или планируете обучение на нескольких узлах: в серверах HGX восемь адаптеров 400G или 800G, а в сервере с PCIe — два порта 100 GbE. Тот же выбор для конфигураций с одним GPU разобран в нашем сравнении RTX PRO 6000 и H100.

За пределами одного сервера: InfiniBand и RoCE

Если не считать стоек NVL72, NVLink заканчивается на границе сервера. Между серверами GPU обмениваются данными через сетевые адаптеры по RDMA — через InfiniBand или через Ethernet с RoCE (RDMA over Converged Ethernet). Адаптер 400G передаёт 50 ГБ/с в одном направлении, поэтому даже при одном адаптере на GPU каждому GPU при обмене с другим сервером достаётся примерно девятая часть его пропускной способности NVLink 4.

Этот разрыв диктует стандартную схему обучения на нескольких узлах: тензорный параллелизм держат внутри сервера, где есть NVLink, а между серверами используют конвейерный параллелизм и параллелизм по данным. NCCL (на AMD — RCCL) выбирает транспорт автоматически: NVLink внутри узла и сеть между узлами. Если задать NCCL_DEBUG=INFO, вы увидите, что именно выбрано, а NCCL_IB_HCA и NCCL_SOCKET_IFNAME позволяют управлять выбором, когда у сервера несколько интерфейсов. Частная сеть между вашими серверами доступна по запросу, а настройка подробно разобрана в нашем руководстве по работе с несколькими GPU и NCCL.

Как проверить, чем соединены ваши GPU

Не верьте спецификациям на слово. Три команды покажут, что на самом деле установлено в сервере NVIDIA:

# Connection matrix: NV# means NVLink; PIX, PXB, PHB, NODE and SYS are
# paths of increasing distance through PCIe switches, host bridges and CPUs
nvidia-smi topo -m

# State and speed of each NVLink link (HGX servers)
nvidia-smi nvlink --status

# Measured all-reduce bandwidth across all eight GPUs, from NVIDIA's nccl-tests
./build/all_reduce_perf -b 8M -e 4G -f 2 -g 8

В выводе all-reduce столбец «busbw» нормирован так, чтобы его можно было сравнивать с пропускной способностью канала, поэтому он сразу показывает, какую производительность вы получаете — уровня NVLink или уровня PCIe. На сервере с MI355X тот же тест есть в rccl-tests. Запустите его один раз при выдаче сервера и затем каждый раз, когда производительность кажется подозрительной: деградировавший канал здесь заметить гораздо проще, чем в логе обучения.

Часто задаваемые вопросы

Быстрее ли NVLink, чем PCIe?

Да, и намного. NVIDIA указывает 900 ГБ/с на GPU для NVLink 4 на H100 и H200 и 1,8 ТБ/с для NVLink 5 на B200 и B300, тогда как у слота PCIe Gen5 x16 — около 128 ГБ/с в обоих направлениях.

Нужен ли NVLink для инференса LLM?

Только если модель нужно разделить между GPU с помощью тензорного параллелизма. Если модель помещается на один GPU, при запуске отдельной копии на каждом GPU трафика между GPU нет, и PCIe вполне достаточно.

Поддерживает ли RTX PRO 6000 NVLink?

Нет. RTX PRO 6000 Blackwell Server Edition подключается через PCIe Gen5 и не имеет NVLink, поэтому наш сервер 8× RTX PRO 6000 лучше подходит для независимых реплик, рендеринга и инференса с конвейерным параллелизмом, чем для интенсивного тензорного параллелизма.

Что такое NVSwitch?

NVSwitch — это чип-коммутатор на базовых платах NVIDIA HGX, который соединяет все восемь GPU друг с другом на полной пропускной способности NVLink, так что все пары могут обмениваться данными одновременно. Стойки NVL72 распространяют ту же идею на домен NVLink из 72 GPU.

Можно ли обучать модель на нескольких серверах без NVLink между ними?

Да. NVLink соединяет GPU внутри сервера или стойки NVL72, а трафик между серверами идёт через сетевые адаптеры InfiniBand или RoCE. Держите тензорный параллелизм внутри сервера, а между серверами используйте параллелизм по данным или конвейерный параллелизм.

Выделенные GPU с помесячной оплатой

Целые GPU от 449 $ в месяц, root-доступ, трафик включён. Оплата криптовалютой.

Смотреть GPU и цены Подберите GPU с помощью калькулятора видеопамяти

Развернуть GPU-сервер

Получите GPU-сервер уже в этом месяце.

Выберите конфигурацию, создайте аккаунт в той же форме и оплатите первый месяц с баланса. Сервер выдаётся менее чем за 10 минут.

  • Выдача менее чем за 10 минут
  • Отмена в любом месяце
  • Оплата криптовалютой, бонус до +50%

Вход в FullGPU

Управляйте GPU-серверами, балансом и счетами.

Впервые в FullGPU? Создать аккаунт