English translation is not available yet. Showing Russian content.

Как работает NVLink Switch System на DGX H100?

Краткий тезис

NVLink Switch System — это полностью связанная (fully-connected) неблокирующая сеть между GPU в сервере DGX H100, обеспечивающая пропускную способность 900 ГБ/с на каждый GPU. Она построена на четырёх коммутаторах NVSwitch четвёртого поколения, которые соединяют восемь GPU H100 в единое адресное пространство, критически важное для parallelism|tensor parallelism и других стратегий распределённого обучения больших языковых моделей.


1. Термин: NVLink Switch System

NVLink — это высокоскоростной протокол прямой связи между GPU, разработанный NVIDIA. В отличие от традиционных сетевых интерфейсов (PCIe, InfiniBand), NVLink обеспечивает значительно меньшую задержку и большую пропускную способность за счёт прямых соединений «точка-точка».

NVSwitch — это аппаратный коммутатор (switch), который агрегирует множество NVLink-линков и позволяет организовать топологию «каждый с каждым» (all-to-all) без блокировок. В DGX H100 используются четыре таких коммутатора.

DGX H100 — это интегрированный сервер NVIDIA, содержащий восемь ускорителей H100 (Hopper), объединённых через NVLink Switch]] System. Он предназначен для обучения и инференса больших моделей.

NVLink Switch]] System — это совокупность NVLink-линков и NVSwitch, образующих единую высокоскоростную сеть внутри одного DGX-узла.


2. Зачем нужна высокоскоростная связь между GPU

При обучении больших моделей (например, GPT-3 с 175B параметров) одна GPU не может уместить всю модель. Используются стратегии распределённого обучения:

  • parallelism|Tensor Parallelism (TP) — разрезание тензоров (весов) по разным GPU; требует постоянного обмена промежуточными активациями и градиентами на каждом шаге.
  • Pipeline Parallelism (PP) — разбиение модели на последовательные стадии; обмен данными между стадиями.
  • Data Parallelism (DP) — копирование модели на каждую GPU, обмен градиентами после каждого шага.

Для TP и PP критична низкая задержка и высокая пропускная способность между GPU внутри одного узла. NVLink Switch System обеспечивает это, позволяя эффективно масштабировать обучение.


3. Архитектура DGX H100: 8 GPU, 4 NVSwitch

Внутри DGX H100:

  • 8 GPU H100 (Hopper) с поддержкой NVLink 4.0.
  • 4 NVSwitch четвёртого поколения.
  • Каждый NVSwitch имеет 64 порта NVLink 4.0 (каждый порт — 100 ГБ/с в каждую сторону).
  • Каждая GPU подключена к каждому NVSwitch четырьмя линками NVLink (4 линка × 100 ГБ/с = 400 ГБ/с на один NVSwitch). Поскольку NVSwitch четыре, суммарная пропускная способность от GPU к коммутаторам — 4 × 400 = 1600 ГБ/с, но это дуплексная величина. В одном направлении — 900 ГБ/с (8 линков × 112.5 ГБ/с? Уточним: NVLink 4.0 — 112.5 ГБ/с на линк в каждую сторону; 8 линков на GPU дают 900 ГБ/с полного дуплекса). NVIDIA заявляет 900 ГБ/с на GPU в обе стороны суммарно.

Физическая топология: каждый GPU соединён с каждым NVSwitch четырьмя линками. Все NVSwitch соединены между собой? В DGX H100 NVSwitch не соединены напрямую — они работают как единый логический коммутатор через внутреннюю архитектуру. Это обеспечивает полную связность.


4. Топология: Fully-connected non-blocking network

Fully-connected означает, что любая пара GPU может обмениваться данными напрямую через коммутаторы без необходимости проходить через другие GPU.

Non-blocking — сеть, в которой одновременная передача данных между любыми парами GPU не приводит к конфликтам и снижению пропускной способности. Каждый NVSwitch имеет достаточно внутренней пропускной способности, чтобы обслуживать все порты одновременно.

В результате для tensor parallelism с 8 GPU (размерность TP=8) все обмены происходят на полной скорости NVLink, без узких мест. Это ключевое преимущество DGX H100 перед кластерами, где GPU соединены только через InfiniBand или Ethernet.


5. Пропускная способность: 900 ГБ/с на GPU

Каждая GPU H100 имеет 18 NVLink-линков четвёртого поколения (но в DGX H100 используется 8 линков на GPU, остальные зарезервированы для межузловых соединений? На самом деле в DGX H100 каждая GPU использует 8 линков для внутриузловой связи, а остальные 10 линков — для NVLink Switch System между узлами? Уточнение: H100 поддерживает до 18 линков NVLink 4.0. В DGX H100 для внутриузловой связи задействовано 8 линков на GPU, что даёт 8 × 112.5 ГБ/с = 900 ГБ/с полного дуплекса. Остальные 10 линков могут использоваться для соединения с другими DGX через NVLink Switch System (NVLink 4.0 поддерживает масштабирование до 256 GPU через внешние NVSwitch). Таким образом, внутри одного DGX H100 пропускная способность между GPU — 900 ГБ/с.

Сравнение с PCIe Gen5 x16: ~64 ГБ/с (в дуплексе). NVLink быстрее примерно в 14 раз.


6. Сравнение с предыдущими поколениями

ПараметрDGX A100 (Ampere)DGX H100 (Hopper)
Количество GPU8 × A1008 × H100
Версия NVLinkNVLink 3.0NVLink 4.0
Пропускная способность на GPU600 ГБ/с (12 линков × 50 ГБ/с)900 ГБ/с (8 линков × 112.5 ГБ/с)
Количество NVSwitch6 × NVSwitch 34 × NVSwitch 4
ТопологияFully-connected, non-blockingFully-connected, non-blocking
Поддержка межузлового NVLinkЧерез NVSwitch 3 (до 8 узлов)Через NVSwitch 4 (до 32 узлов)

DGX H100 не только увеличил пропускную способность на 50%, но и уменьшил количество коммутаторов (6→4) за счёт более высокой плотности портов NVSwitch 4.


7. Роль в распределённом обучении

Tensor Parallelism (TP)

При TP=8 каждый слой модели разрезан на 8 частей. На каждом шаге forward/backward требуется all-reduce или reduce-scatter по активациям/градиентам. NVLink Switch System обеспечивает bandwidth в 900 ГБ/с, что делает all-reduce почти бесплатным по времени.

Pipeline Parallelism (PP)

При PP данные передаются между стадиями модели. Если стадии расположены на разных GPU внутри одного DGX, задержка NVLink (~1-2 мкс) значительно ниже, чем через InfiniBand (~5-10 мкс).

Data Parallelism (DP)

При DP градиенты усредняются между всеми GPU. All-reduce по 8 GPU через NVLink выполняется за микросекунды, что позволяет эффективно масштабировать batch size.

Fully Sharded Data Parallelism (FSDP)

FSDP использует комбинацию TP, PP и DP. NVLink Switch System критичен для TP, так как TP требует наибольшей пропускной способности.


8. Программная поддержка: NCCL и NVLink

NCCL (NVIDIA Collective Communications Library) — библиотека, реализующая коллективные операции (all-reduce, all-gather, reduce-scatter) с оптимизацией под NVLink и InfiniBand. NCCL автоматически определяет топологию NVLink и выбирает оптимальные маршруты.

При использовании NVLink Switch System NCCL может выполнять all-reduce на 8 GPU с пропускной способностью, близкой к пиковой (900 ГБ/с). Для сравнения, all-reduce через InfiniBand (200 ГБ/с) будет в 4-5 раз медленнее.

Пример кода для проверки пропускной способности NVLink (с использованием NCCL тестов):

# Установка nccl-tests
git clone https://github.com/NVIDIA/nccl-tests.git
cd nccl-tests
make

# Запуск all-reduce на 8 GPU
./build/all_reduce_perf -b 8 -e 128M -f 2 -g 8

Результат покажет пропускную способность в ГБ/с.


9. Ограничения и альтернативы

Ограничения

  • Внутри одного узла: NVLink Switch System работает только внутри DGX H100. Для соединения нескольких DGX требуется внешняя сеть (InfiniBand или NVLink Switch System между узлами через внешние NVSwitch).
  • Стоимость: DGX H100 — дорогое решение (~$300k). Не все организации могут позволить себе такие кластеры.
  • Энергопотребление: 8 GPU H100 + NVSwitch потребляют ~10 кВт.

Альтернативы

  • InfiniBand NDR 400: 400 ГБ/с на порт, но с большей задержкой (5-10 мкс) и меньшей пропускной способностью на GPU (обычно 200-400 ГБ/с после деления).
  • Ethernet с RoCE: дешевле, но задержка выше, пропускная способность ниже.
  • Google TPU Pods: собственные interconnect (ICI) с похожей производительностью, но закрытая экосистема.

Для tensor parallelism NVLink остаётся безальтернативным выбором внутри узла.


10. Пет-проект для закрепления

Задача: Измерить пропускную способность NVLink на DGX H100 и сравнить с InfiniBand.

Инструменты:

  • Доступ к DGX H100 (или симуляция на обычном сервере с несколькими GPU через NVLink, например, на DGX A100 или RTX 4090 с NVLink bridge).
  • NCCL-tests.
  • Python с PyTorch Distributed.

Шаги:

  1. Установите nccl-tests на DGX H100.
  2. Запустите all_reduce_perf для 8 GPU с размерами сообщений от 8 байт до 128 МБ.
  3. Запишите пропускную способность (ГБ/с) для каждого размера.
  4. Повторите тест, используя только InfiniBand (отключив NVLink через переменную окружения NCCL_NET=IB).
  5. Постройте график зависимости пропускной способности от размера сообщения.
  6. Объясните, почему для маленьких сообщений (до 1 МБ) NVLink даёт преимущество в задержке, а для больших — в пропускной способности.

Ожидаемый результат: Вы увидите, что NVLink обеспечивает ~900 ГБ/с для больших сообщений, а InfiniBand — ~200-400 ГБ/с. Для маленьких сообщений разница в задержке составит 2-3 мкс против 10 мкс.


11. Связь с другими вопросами

ВопросТема
315Tensor Parallelism: как разрезать модель на GPU
316Pipeline Parallelism: стадии и батчи
317Сравнение NVLink и InfiniBand для распределённого обучения
318Архитектура DGX A100 vs H100
319Роль NCCL в коллективных операциях
320FSDP и его зависимость от interconnect

12. Навигация


Навигация