RDMA кластер для LLM: Thunderbolt vs RoCE v2 vs Mellanox | Гайд 2026 | AiManual
AiManual Logo Ai / Manual.
08 Мар 2026 Гайд

Как собрать RDMA-кластер для локальных LLM: сравнение Thunderbolt, RoCE v2 и Mellanox ConnectX-6

Полное руководство по сборке RDMA-кластера для локальных LLM. Сравнение Thunderbolt, RoCE v2 и Mellanox ConnectX-6. Настройка, тесты, ошибки.

Зачем это вообще нужно? (Проблема)

Вы поставили 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 up

3Установите и настройте 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 -v

4Протестируйте соединение

# Установите 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
💡
Thunderbolt — это быстро и просто, но масштабировать больше чем на 2 узла очень проблематично. Нет коммутаторов. Если нужно 3+ узла, смотрите на RoCE v2.

Дорога 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 --force

3Настройте 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 opensm

3Проверьте состояние сети

ibstat  # Покажет состояние портов InfiniBand
ibnodes # Покажет все узлы в подсети
ibv_devinfo # Детальная информация об устройствах RDMA

4Настройте 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", может сделать некоторые компоненты дефицитом.

💡
Не гонись за самой быстрой технологией с первого дня. Начни с Thunderbolt, чтобы проверить, что твое ПО и модели вообще работают в распределенном режиме. Затем, если нужно, масштабируйся на RoCE. Прыжок с 0 до 1 сложнее, чем с 1 до 2.

И последний совет: перед покупкой дорогих карт ConnectX-6 проверь, есть ли на материнских платах твоих узлов PCIe слоты с достаточной полосой (x8 или x16 Gen4). Иначе ты не выжмешь из них и половины скорости. Удачи, и да пребудет с тобой низкая задержка!

Подписаться на канал