← На главную

Два Framework Desktop на Strix Halo по RoCE v2 запустили vLLM — 5 мкс

28.06.2026 00:46 · hackernews

Два ноутбучных материнских платы Framework с AMD Ryzen AI MAX+ «Strix Halo» (128 ГБ unified memory) соединили через Intel E810 (100 GbE, RoCE v2) — и запустили распределённый инференс моделей на vLLM с Tensor Parallelism. Звучит как безумие, но работает: задержка обмена данными между узлами — 5 микросекунд, а не 70–100 мкс по обычному TCP/IP.

Секрет — в RoCE v2 (RDMA over Converged Ethernet). RCCL (ROCm Collective Communication Library) пишет данные напрямую из памяти одной машины в другую, минуя CPU и ядро. vLLM использует Ray для оркестровки, а сам обмен градиентами (TP=2) идёт тысячи раз в секунду — без RDMA модель бы просто замерла.

Сборка не для слабонервных. Потребовались: два Framework Desktop Mainboards, Intel E810-CQDA1, riser CY PCI-E Express 4x to 16x (чтобы впихнуть плату 16x в физический слот x4), и DAC-кабель без коммутатора. Одна из плат ради эксперимента получила прорезь в слоте ультразвуковым ножом — но советуют riser, дешевле и без риска.

Хост — Fedora 43 (ядра 6.18.5 или 6.18.6). Ставим rdma-core, libibverbs-utils, perftest. Встроенные драйверы Intel (ice + irdma) работают, проприетарные не нужны. В UEFI выставляем iGPU минимум (512 МБ), остальное гипераллоцируется драйвером. В грэб добавляем параметры: iommu=pt (сквозной IOMMU для производительности RDMA), amdgpu.gttsize=126976 (124 ГБ адресуемой памяти), ttm.pages_limit под тот же лимит, pcie_aspm=off, pci=realloc. Статические IP (/30), MTU 9000, интерфейс в trusted зону.

Критичный компонент — toolbox (контейнер) с пропатченным librccl.so. Стоковый RCCL не поддерживает GPU Strix Halo (архитектура gfx1151). Патч из репозитория kyuz0/rocm-systems собран GitHub Actions и запакован в образ kyuz0/vllm-therock-gfx1151. Скрипт refresh_toolbox.sh сам цепляет /dev/dri, /dev/kfd, /dev/infiniband, группу rdma и отключает лимиты на memlock.

Проверка — скрипт compare_eth_vs_rdma.sh: RDMA показывает 5.23 мкс латентности и 50.6 Gbps против 0.068 мс и 55.7 Gbps по Ethernet (разница в микросекундах). Запуск — TUI утилита start-vllm-cluster. Сначала конфигурим IP, потом стартуем Ray (Head на .1, Worker на .2). При запуске vLLM ставим TP=2, выбираем модель (Meta-Llama-3.1-8B-Instruct, например). Важно: для gated моделей (Gemma) обязателен export HF_TOKEN. При падениях включаем Force Eager Mode (CUDA Graphs на APU-кластере приводят к фризам). Первый скач весов идёт на каждом узле независимо.

Есть альтернатива без 100GbE — Thunderbolt 4/USB4. Дешевле, проще, но без RDMA: задержка будет выше (через TCP/IP), хотя в разы лучше 1GbE. Всё то же самое, только IP из подсети 192.168.2.0/24, и скрипты автоматически определят thunderbolt0.

Читать оригинал →