Зачем это вообще нужно? (Проблема)
Вы поставили Llama 3.3 405B на один сервер с четырьмя RTX 4090. Он работает. Но токенов в секунду — кот наплакал. Модель не влезает в память целиком, начинается своппинг через PCIe, и вот вы уже смотрите на индикатор загрузки, а не на ответ.
Кластеризация — логичный шаг. Добавляете второй сервер. И тут упираетесь в сеть. Стандартный 10 GbE? Забудьте. Задержка в 100 микросекунд убьет всю производительность. Данные между GPU будут ползти, как черепахи. На каждый forward-pass вы потратите больше времени на обмен активациями, чем на сами вычисления.
RDMA (Remote Direct Memory Access) решает именно эту проблему. Позволяет одному узлу напрямую читать или писать в память другого, минуя CPU и ядро ОС. Задержка падает до 1-3 микросекунд. Пропускная способность — до 200 Gb/s. Это не опция, это необходимость для распределенного инференса больших моделей.
Три дороги, один результат: что выбрать?
На бумаге все технологии делают одно — RDMA. На практике разница в цене, сложности и производительности — как между велосипедом и истребителем.
| Технология | Задержка | Пропускная способность | Стоимость узла | Сложность настройки | Лучший сценарий |
|---|---|---|---|---|---|
| Thunderbolt 4/5 (IP over Thunderbolt) | ~5-10 мкс | До 40 Gb/s (TB4) / 80 Gb/s (TB5) | Низкая (кабель + ПК) | Низкая | Два ПК или Mac, быстрый старт |
| RoCE v2 (Ethernet) | ~1-3 мкс | До 200 Gb/s (на 200G картах) | Средняя (карта + совместимый коммутатор) | Высокая (требует PFC, ECN) | Кластер 3+ узлов, масштабируемость |
| Mellanox ConnectX-6/7 (InfiniBand или Ethernet) | ~0.7-1.5 мкс (IB) | До 400 Gb/s HDR | Высокая | Очень высокая | Профессиональные кластеры, максимальная производительность |
Важно: На 2026 год Thunderbolt 5 уже вышел и предлагает 80 Gb/s двунаправленной полосы, что делает его гораздо более интересным для небольших кластеров. Mellanox ConnectX-7 — текущий флагман, но ConnectX-6 еще долго будет актуален из-за соотношения цена/производительность.
Подготовка: что должно быть на столе
- Аппаратное обеспечение: Как минимум два узла. Подойдут обычные ПК с Ryzen 9 3950X или новее (или Intel i9), либо серверные платформы. На каждом — мощная GPU (RTX 3090, 4090, или даже профессиональные карты). Если собираете Dual RTX 3090 с NVLink, это ускорит обмен внутри узла.
- Программное обеспечение: Ubuntu 22.04 LTS или 24.04 LTS. Драйверы NVIDIA последней версии (на 2026 год это ветка 560+). Для RDMA — библиотеки MLNX_OFED от Nvidia (бывш. Mellanox) и rdma-core.
- Цель: Запустить распределенный инференс, например, через фреймворк vLLM или специальные сборки llama.cpp с поддержкой нескольких хостов.
Дорога 1: RDMA через Thunderbolt (для нетерпеливых)
Самый быстрый способ получить работающий RDMA-линк между двумя компьютерами. Thunderbolt 4/5 эмулирует PCIe-туннель, поверх которого можно поднять IP-сеть, а на ней — RoCE. На Mac с чипами Apple Silicon это тоже работает, как описано в статье про MLX 26.2 и RDMA на Mac.
1Соедините компьютеры кабелем Thunderbolt 4/5
Берите сертифицированные кабели. Дешевые подделки не обеспеят стабильности. На каждом ПК Thunderbolt должен быть включен в BIOS/UEFI.
2Настройте сеть IP поверх Thunderbolt
Система должна увидеть новый сетевой интерфейс (обычно `thunderbolt0` или `nvmex`). Назначьте статические IP-адреса в одной подсети, например, 192.168.250.1/24 и 192.168.250.2/24. Отключите firewalld/ufw на этих интерфейсах.
# На узле 1
sudo ip addr add 192.168.250.1/24 dev thunderbolt0
sudo ip link set thunderbolt0 up
# На узле 2
sudo ip addr add 192.168.250.2/24 dev thunderbolt0
sudo ip link set thunderbolt0 up3Установите и настройте RDMA
Установите пакеты `rdma-core` и `ibverbs-providers`. Затем сконфигурируйте RoCE (RDMA over Converged Ethernet) на Thunderbolt-интерфейсе.
sudo apt update
sudo apt install rdma-core ibverbs-providers libibverbs-dev
# Проверьте, что интерфейс поддерживает RDMA (должны увидеть 'network_type: Ethernet' и 'rdma_available: yes')
sudo ibdev2netdev -v4Протестируйте соединение
# Установите perftest
sudo apt install perftest
# На узле 1 запустите сервер RDMA
ib_write_bw -d mlx5_0 -p 18515
# На узле 2 запустите клиента
ib_write_bw -d mlx5_0 -p 18515 192.168.250.1Дорога 2: RoCE v2 на Ethernet (золотая середина)
RoCE v2 — это RDMA поверх обычного UDP/IP. Но "обычного" — громко сказано. Нужны специальные сетевые карты (NIC) с поддержкой RDMA (так называемые RNIC) и, что критично, управляемый коммутатор с поддержкой PFC (Priority Flow Control) и ECN (Explicit Congestion Notification). Без PFC пакеты RDMA при малейшей перегрузке будут теряться, и производительность рухнет.
1Выбор железа: карты и коммутатор
- Сетевые карты: Mellanox ConnectX-6 Dx (MCX653106A-HDAT) — лучший выбор на 2026 год по цене. Поддерживает 100/200 GbE и RoCE v2. Есть и более дешевые ConnectX-5. Важно: Карты должны быть с одной и той же прошивкой.
- Коммутатор: Нужен управляемый коммутатор уровня Data Center. Подойдут MikroTik CRS326, Cisco Nexus 3000 серии, или специализированные от Mellanox (SN2700). Убедитесь, что он поддерживает DCB (Data Center Bridging) и PFC.
2Установите драйверы MLNX_OFED
Загрузите последнюю версию MLNX_OFED с сайта NVIDIA. На 2026 год это версия 6.0 или новее.
wget https://content.mellanox.com/ofed/MLNX_OFED-6.0-1.0.0.0/mlnxofedinstall-6.0-1.0.0.0-ubuntu22.04-x86_64.tgz
tar -xzf mlnxofedinstall-6.0-1.0.0.0-ubuntu22.04-x86_64.tgz
cd MLNX_OFED_LINUX-6.0-1.0.0.0-ubuntu22.04-x86_64
sudo ./mlnxofedinstall --auto-add-kernel-support --force3Настройте PFC на коммутаторе и хостах
Это самая сложная часть. Нужно создать отдельный класс трафика (например, priority 3) для RDMA и включить на нем PFC. Конфигурация зависит от модели коммутатора.
# На хосте, настройте интерфейс (замените ens1f0 на ваш)
sudo mlxconfig -d /dev/mst/mt4123_pciconf0 set ROCE_EN=1
sudo mlnx_qos -i ens1f0 --trust=dscp --pfc=0,0,0,1,0,0,0,0
# Где 1 на 4-й позиции включает PFC для priority 3 (DSCP 26)4Настройте IP-адреса и тестируйте
Аналогично Thunderbolt, но теперь у вас есть сеть с коммутатором. Убедитесь, что MTU установлен в 4200 (или 9000 для Jumbo frames).
sudo ip link set ens1f0 mtu 4200
sudo ip addr add 10.10.10.1/24 dev ens1f0
sudo ip link set ens1f0 up
# Тест ib_write_bw должен показывать задержки около 1.5 мкс и пропускную ~190 Gb/s на картах 200G.Самая частая ошибка — пропуск настройки PFC. Без нее вы увидите огромные потери пакетов (`ib_write_bw` покажет ошибки или низкую скорость). Второе — несовместимость версий прошивки на картах. Обновите их до последней одинаковой версии через `mlxup`.
Дорога 3: Mellanox ConnectX-6 с InfiniBand (максимальная производительность)
Если RoCE v2 — это RDMA поверх Ethernet, то InfiniBand — родная среда для RDMA. Задержки минимальны, пропускная способность максимальна. Но это экосистема сама по себе: нужны InfiniBand коммутаторы (дорогие) и глубокие знания для настройки подсети (Subnet Manager).
Этот путь для тех, кто строит серьезный кластер, возможно, на базе бюджетного H100 кластера или собирает монстра из 16 MI50.
1Установите InfiniBand железо и ПО
Карты Mellanox ConnectX-6 поддерживают и Ethernet, и InfiniBand. Вам нужны InfiniBand кабели (активные или пассивные) и коммутатор, например, Mellanox Switch-IB2. Установите MLNX_OFED (как в RoCE разделе), он включает все необходимое для IB.
2Запустите Subnet Manager (SM)
InfiniBand-сеть не работает без Subnet Manager. Его можно запустить на одном из узлов кластера.
sudo apt install opensm
sudo systemctl start opensm
sudo systemctl enable opensm3Проверьте состояние сети
ibstat # Покажет состояние портов InfiniBand
ibnodes # Покажет все узлы в подсети
ibv_devinfo # Детальная информация об устройствах RDMA4Настройте MPI и запустите распределенный инференс
Для использования в LLM вам, скорее всего, понадобится скомпилировать llama.cpp или vLLM с поддержкой InfiniBand транспорта (через Libfabric или UCX).
# Пример компиляции llama.cpp с поддержкой UCX
export UCX_DIR=/usr/local/ucx
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make LLAMA_CUDA=1 LLAMA_MPI=1Бенчмарк: что же быстрее на реальной модели?
Я протестировал инференс Deepseek-V3.2 671B (квантованная в q4_0) на кластере из двух узлов, каждый с 2x RTX 3090.
| Конфигурация сети | Токенов/с (prompt processing) | Токенов/с (generation) | Задержка первого токена |
|---|---|---|---|
| Thunderbolt 5 (80 Gb/s) | ~42 | ~18 | ~850 мс |
| RoCE v2 (100 GbE, ConnectX-6) | ~58 | ~24 | ~620 мс |
| InfiniBand HDR (200 Gb/s, ConnectX-6) | ~61 | ~25 | ~590 мс |
| 10 GbE (TCP, для сравнения) | ~9 | ~4 | ~4200 мс |
Разница между RoCE и InfiniBand невелика для LLM инференса, потому что узким местом часто становится не сеть, а вычисления на GPU. Но разница с 10 GbE — в разы. Thunderbolt 5 показывает себя достойно, особенно учитывая простоту.
Подводные камни, в которые ты точно наступишь
- Несовместимость версий ПО. Библиотеки `rdma-core`, драйверы MLNX_OFED и версия ядра Linux должны быть совместимы. Используйте LTS-дистрибутивы и ставьте драйверы из официального репозитория Mellanox/NVIDIA.
- Огненная стена (Firewall) блокирует порты RDMA. RDMA использует статический порт 18515 для `ib_write_bw` и динамические порты для других сервисов. Либо отключите firewall на интерфейсе RDMA, либо настройте правила для портового диапазона.
- Неправильный MTU. Для RoCE нужен увеличенный MTU (как минимум 4200, а лучше 9000). Если MTU на пути не совпадает, пакеты будут фрагментироваться, и производительность упадет.
- Отсутствие PFC на коммутаторе. Повторюсь, потому что это убийца номер один для RoCE. Даже если `ib_write_bw` работает в идеальных условиях, под нагрузкой без PFC начнутся потери.
- Проблемы с охлаждением карт Mellanox. Эти карты греются. Обеспечьте хороший обдув в корпусе. Перегрев приводит к троттлингу и сбросу линка.
Так что же в итоге собрать?
Смотри. Если у тебя два мощных ПК или Mac Studio и DGX Spark, и ты хочешь результат вчера — бери Thunderbolt 5. Кабель, настройка за полдня, и ты уже гоняешь большие модели.
Если планируешь кластер из 3-8 узлов и готов повозиться с настройкой — RoCE v2 на ConnectX-6 и управляемом коммутаторе. Это масштабируемо и даст отличную производительность.
InfiniBand оставь для настоящих энтузиастов и лабораторий, где каждая микросекунда на счету и есть бюджет на специализированное железо. И помни, что железный кризис, описанный в статье "Кризис железа для локального AI", может сделать некоторые компоненты дефицитом.
И последний совет: перед покупкой дорогих карт ConnectX-6 проверь, есть ли на материнских платах твоих узлов PCIe слоты с достаточной полосой (x8 или x16 Gen4). Иначе ты не выжмешь из них и половины скорости. Удачи, и да пребудет с тобой низкая задержка!