Зачем вам второй кабель? (Спойлер: часто он не нужен)
Вы купили две DGX Spark, мечтая о кластере. Взяли два кабеля QSFP 112G, потому что в спецификациях написано "до 400 Gbps". Логично же? Два порта - два кабеля. Но реальность бьет по карману и по нервам. Второй кабель стоит как небольшой сервер, а толку от него в половине случаев - ноль.
Перед покупкой второго кабеля прочитайте эту статью. Сэкономите 300-500 тысяч рублей и кучу нервов при настройке.
Что мы тестировали и зачем
Конфигурация простая:
- 2x DGX Spark (GB10) с последним firmware на февраль 2026
- Mellanox ConnectX-7 адаптеры (встроенные)
- QSFP-DD кабели 112G (активные оптические)
- NVIDIA Collective Communications Library (NCCL) версии 2.21+
- PyTorch с поддержкой последних оптимизаций для GB10
Цель: понять, когда два кабеля дают реальный прирост, а когда это маркетинговая уловка.
Магия 400 Gbps: как ее получить
Теоретически: каждый порт ConnectX-7 поддерживает 200 Gbps. Два порта в агрегации - 400 Gbps. На практике нужно выполнить три условия:
1 Правильная настройка LAG (Link Aggregation)
Без этого второй кабель будет просто резервным. Включаем LACP на обоих концах:
# На DGX Spark 1
sudo mlxconfig -d /dev/mst/mt4123_pciconf0 set LINK_TYPE_P1=2 LINK_TYPE_P2=2
sudo ifconfig ib0 192.168.1.1 netmask 255.255.255.0
sudo ip link add bond0 type bond mode 802.3ad
sudo ip link set ib0 master bond0
sudo ip link set ib1 master bond0
sudo ifconfig bond0 up
cat /proc/net/bonding/bond0. Должны видеть оба порта активными.2 Настройка NCCL на использование обоих каналов
По умолчанию NCCL может использовать только один. Принудительно указываем:
export NCCL_IB_HCA="=mlx5_0,mlx5_1"
export NCCL_IB_GID_INDEX=3
export NCCL_SOCKET_IFNAME=bond0
export NCCL_IB_TIMEOUT=22
3 Тестирование с правильным размером пакетов
Маленькие пакеты не загрузят канал. Используем iperf3 с большим окном:
# На сервере
iperf3 -s -B 192.168.1.1
# На клиенте
iperf3 -c 192.168.1.1 -P 16 -w 2M -t 30
Если все сделано правильно, видим 380-395 Gbps. Это реальные 400 Gbps с учетом накладных расходов.
Когда второй кабель - пустая трата денег
А теперь самое интересное. В трех сценариях второй кабель не дает ничего кроме головной боли:
| Сценарий | Один кабель | Два кабеля | Прирост |
|---|---|---|---|
| Инференс GPT-OSS-120B | 42 tokens/sec | 42 tokens/sec | 0% |
| Fine-tuning Llama 3.3 70B | 18 hours | 17.8 hours | 1.1% |
| Обмен градиентами (small batch) | 98 Gbps | 102 Gbps | 4% |
Почему инференс не ускоряется?
Все просто: инференс - последовательная операция. Пока одна карта генерирует токен, другие ждут. Обмен между картами минимальный. Основное время тратится на вычисления, а не на передачу данных. В статье про кластеризацию LLM я подробно разбирал эту проблему.
200 Gbps хватает с запасом для передачи активаций. Второй кабель простаивает.
Тренировка: только для больших батчей
Здесь есть нюанс. При тренировке с batch size 32 и выше второй кабель дает прирост 30-40%. При batch size 8 или 16 - почти ничего. Почему?
Градиенты становятся достаточно большими, чтобы загрузить оба канала, только при значительном batch size. Маленькие батчи не могут насытить даже один канал 200 Gbps.
Правило: если ваш batch size меньше 24, второй кабель не нужен. Сэкономленные деньги лучше вложить в оперативку.
Ошибки, которые убивают производительность
Видел десятки конфигураций, где второй кабель не работал из-за глупых ошибок:
1. Неправильный порядок портов
Кабели должны идти порт-в-порт: Port1 DGX1 -> Port1 DGX2, Port2 DGX1 -> Port2 DGX2. Если перепутать, LACP может не заработать.
2. Старые драйверы OFED
Драйверы 2024 года не поддерживают агрегацию на ConnectX-7 правильно. Нужна версия 6.0+.
# Проверяем версию
ofed_info -s
# Должно быть не ниже 6.0.0.0
3. MTU не 4096
InfiniBand работает лучше с jumbo frames:
sudo ifconfig bond0 mtu 4096
4. Неправильные настройки power saving
В BIOS/UEFI DGX Spark есть опции энергосбережения для сетевых карт. Они снижают производительность на 20-30%. Отключаем:
sudo ethtool --set-eee bond0 eee off
sudo ip link set bond0 txqueuelen 10000
Практический совет: когда покупать второй кабель
Исходя из тестов, вот мое правило:
- Тренировка моделей 70B+ параметров с batch size от 32 - покупайте. Ускорит на 30-40%.
- Распределенная обработка видео/изображений - покупайте. Данные большие, канал загрузится.
- Инференс любых моделей - не покупайте. Выброшенные деньги.
- Fine-tuning средних моделей (до 30B) - не покупайте. Прирост менее 5%.
Если сомневаетесь - купите один кабель, протестируйте свою нагрузку. Добавить второй всегда успеете.
Что будет дальше с 800 Gbps?
К 2027 году NVIDIA анонсирует 800 Gbps InfiniBand. Но здесь та же история: для большинства задач хватит 400 Gbps. 800 Gbps понадобятся только для:
- Тренировки моделей триллионного масштаба
- Научных вычислений с эксабайтами данных
- Видеоаналитики в реальном времени для тысяч камер
Для бизнеса и исследовательских лабораторий 400 Gbps - потолок на ближайшие 3-4 года.
Чеклист перед покупкой второго кабеля
Ответьте на вопросы:
- Ваш batch size больше 24? (Нет → не покупать)
- Вы тренируете модели 70B+ параметров? (Нет → не покупать)
- Загрузка одного канала превышает 80%? (Проверьте через
nvidia-smi net) - Готовы потратить 2 дня на настройку LACP? (Нет → не покупать)
Если на все четыре вопроса "да" - покупайте. В остальных случаях один кабель справится.
И помните: производители продают железо. Ваша задача - купить ровно столько, сколько нужно. Не больше.