本文へ
ハクソク

世界を動かす技術を、日本語で。

AMD Strix Halo RDMA クラスター設定ガイド

元記事: 原文(github.com)

概要

本ガイドは、 AMD Strix Halo クラスタを Intel E810 (RoCE v2) で接続し、 vLLM分散推論 をTensor Parallelismで実行するためのセットアップ手順を解説します。 Fedora 43 環境でのホスト設定から RDMA有効化、 Toolbox導入、 クラスタ起動 までを網羅。 Thunderboltネットワーキング による代替構成も紹介。 トラブルシューティングや 重要な注意点 も記載。 実践的な手順を箇条書きで整理。

AMD Strix Halo RDMAクラスタセットアップガイド

TL;DR(クイックスタート)

  • 両ノードで Fedora 43 と Intel E810 NIC をインストール・更新
  • BIOS/iGPU設定 :iGPUメモリ512MB、kernelパラメータ(iommu=pt, pci=realloc等)適用
  • パスワードなしSSH を両ノード間で設定
  • 静的IP割当 (192.168.100.1/2)、MTU9000、ファイアウォールでインターフェース信頼化
  • Toolbox導入 :./refresh_toolbox.sh実行(RDMA対応コンテナ&librccl.soパッチ自動適用)
  • クラスタ起動 :start-vllm-cluster →「2. Start Ray Cluster」「4. Launch VLLM Serve」選択
  • gatedモデル 利用時はHF_TOKENをexport

概念&アーキテクチャ

  • vLLM :高性能推論エンジン、Tensor Parallelismで大規模モデル分割推論
  • Ray :分散コンピューティング基盤、クラスタ制御・プロセス管理
  • RCCL :AMD版NCCL、GPU間の高速テンソル同期(TP=2時は全レイヤーで部分結果交換)
  • RoCE v2 :RDMAプロトコル、CPU/OSカーネルをバイパスしノード間で直接メモリ転送
    • RDMA未使用:レイテンシ約70-100µs
    • RDMA使用:レイテンシ約5µs
  • インタラクティブ推論 での低遅延実現

ハードウェア前提条件

  • ノード :Framework Desktop Mainboard + AMD Ryzen AI MAX+ "Strix Halo"、128GB Unified Memory
  • NIC :Intel E810-CQDA1(100GbE QSFP28対応)
  • 接続 :DACケーブル直結(2ノードならスイッチ不要)
  • PCIe :x4スロット→x16カード用ライザー必須(例:CY PCI-E Express 4x to 16x Extender)
    • 改造スロットは非推奨、ライザー使用が安全
    • 性能差なし(帯域50Gbps、遅延5µs)

ホスト設定(Fedora)

  • 動作確認済み構成
    • Node 1:Fedora 43, Kernel 6.18.5, IP 192.168.100.1/30
    • Node 2:Fedora 43, Kernel 6.18.6, IP 192.168.100.2/30
4.1 パッケージインストール
  • RDMAツール類 :sudo dnf install rdma-core libibverbs-utils perftest
    • Ethernetドライバ :ice
    • RDMAドライバ :irdma(RoCE v2/iWARP対応)
    • 各パッケージの役割
      • rdma-core:RDMAユーザー空間ツール
      • libibverbs-utils:RDMAデバイス情報取得
      • perftest:RDMA帯域・遅延ベンチマーク
4.2 ファームウェア確認
  • ファームウェア確認 :ethtool -i <iface>
    • 推奨バージョン :4.91以上
    • アップデート必要時 :Intel® Ethernet NVM Update Tool利用
4.3 ネットワーク設定
  • サブネット :192.168.100.0/30
  • インターフェース特定 :ip linkで100GbEカード確認
  • ノードごとの設定例
    • Node 1(Head)
      • sudo ip link set enp194s0np0 up
      • sudo ip addr add 192.168.100.1/30 dev enp194s0np0
      • sudo nmcli connection modify "rdma0" ethernet.mtu 9000
      • sudo nmcli connection up "rdma0"
    • Node 2(Worker)
      • sudo ip link set enp194s0np0 up
      • sudo ip addr add 192.168.100.2/30 dev enp194s0np0
      • sudo nmcli connection modify "rdma0" ethernet.mtu 9000
      • sudo nmcli connection up "rdma0"
  • ルーティング確認 :sudo ip route add 192.168.100.0/30 dev enp194s0np0
  • リンク状態確認 :rdma link(state ACTIVE, physical_state LINK_UP)
4.4 BIOS & カーネル設定
  • BIOS :iGPUメモリ割当を512MBに設定
  • カーネルパラメータ (/etc/default/grubのGRUB_CMDLINE_LINUXに追記)
    • iommu=pt pci=realloc pcie_aspm=off amdgpu.gttsize=126976 ttm.pages_limit=32505856
    • 各パラメータの意義
      • iommu=pt:IOMMUパススルー、RDMA/iGPUメモリアクセス高速化
      • pci=realloc:PCI BAR再割当、大容量デバイス対応
      • pcie_aspm=off:PCIe省電力機能無効化、遅延防止
      • amdgpu.gttsize/ttm.pages_limit:Unified Memory最大値指定
  • 反映 :sudo grub2-mkconfig -o /boot/grub2/grub.cfg→sudo reboot
4.5 ファイアウォール設定
  • RDMAインターフェース信頼化
    • sudo firewall-cmd --permanent --zone=trusted --add-interface=enp194s0np0
    • sudo firewall-cmd --reload

Toolbox導入 & ネットワーク確認

5.1 パスワードなしSSH
  • SSH鍵設定 必須(rootまたはsudoユーザー)
  • 動作確認 :ssh <相手ノードIP> dateでパスワード不要応答
5.2 Toolboxインストール
  • Toolbox導入 :./refresh_toolbox.sh実行
    • 内容
      • kyuz0/vllm-therock-gfx1151イメージ取得
      • /dev/infiniband存在時は自動でRDMAデバイスをコンテナにExpose
      • iGPU用:/dev/dri, /dev/kfd
      • RDMA用:/dev/infiniband, --group-add rdma
      • DMA用:--ulimit memlock=-1
      • librccl.so (gfx1151 RDMA対応)自動組込
5.3 RDMA接続確認
  • Toolbox内で検証スクリプト実行 :/opt/compare_eth_vs_rdma.sh
    • 期待値
      • Ethernet:0.07ms, 0.94Gbps
      • RoCE NIC:0.068ms, 55.70Gbps
      • RDMA(RoCE):5.23µs, 50.64Gbps
    • RDMAで大幅な遅延改善

クラスタ運用

6.1 セットアップ&検証
  • Toolbox起動 :toolbox enter vllm
  • クラスタマネージャ :start-vllm-cluster
  • IP設定 (Option 1):Head 192.168.100.1, Worker 192.168.100.2
  • Rayクラスタ起動 (Option 2)
    • Node 1:Head選択
    • Node 2:Worker選択
    • 内部コマンド例
      • Head:export NCCL_SOCKET_IFNAME=<rdma_iface> && ray start --head --node-ip-address=192.168.100.1 ...
      • Worker:ray start --address=192.168.100.1:6379 ...
  • 状態確認 (Option 3):2ノード認識、GPUリソース確認
6.2 vLLM起動
  • Option 4:「Launch VLLM Serve」 選択、モデル指定(例:Meta-Llama-3.1-8B-Instruct)
  • 設定メニュー
    • Tensor Parallelism:2(各ノード1GPU)
    • Context Length:Autoまたはカスタム(例:131072)
    • vLLMキャッシュ消去:YES(クラッシュ後再起動時推奨)
    • Force Eager Mode:YES(分散APUクラスタでのCUDA Graphデッドロック回避)
  • 起動 :「LAUNCH SERVER」選択
  • 注意点
    • 初回は各ノードでモデル独立ダウンロード(通信速度に依存)
    • Gemma等gatedモデルはHugging Faceトークン必須
      • export HF_TOKEN=your_token_here → start-vllm-cluster
      • トークン未設定やライセンス未承認時はダウンロード失敗

トラブルシューティング

  • vLLMハング/デッドロック
    • 原因:CUDA Graph captureの分散APUでの不安定動作
    • 対策:「Force Eager Mode」を有効化
  • リンク問題
    • E810ファームウェアを最新化

参考文献・謝辞

  • Reddit - Strix Halo Batching with Tensor Parallel(Hungry_Elk_3276氏によるvLLM RDMA実験に感謝)
  • RCCLのgfx1151サポートパッチはkyuz0/rocm-systemsリポジトリ参照

Thunderboltネットワークによる代替構成

概要

  • Thunderbolt 4/USB4ケーブル 直結でクラスタ構築可能
    • thunderbolt0 インターフェース自動生成
    • RDMAほど低遅延ではないが、1GbE/5GbEより高帯域・シンプル設定
    • thunderbolt-net は標準TCP/IPスタック利用

Thunderbolt設定手順

  • 1. 接続確認
    • 認証済みThunderbolt 4/USB4ケーブルで2ノード直結
    • ip link show thunderbolt0でリンク確認
  • 2. ネットワーク設定(Head)
    • sudo nmcli connection add type ethernet ifname thunderbolt0 con-name thunderbolt0 ipv4.method manual ipv4.addresses 192.168.2.1/24 mtu 9000
    • sudo nmcli connection up thunderbolt0
  • 3. ネットワーク設定(Worker)
    • sudo nmcli connection add type ethernet ifname thunderbolt0 con-name thunderbolt0 ipv4.method manual ipv4.addresses 192.168.2.2/24 mtu 9000
    • sudo nmcli connection up thunderbolt0
  • 4. ファイアウォール設定
    • sudo firewall-cmd --permanent --zone=trusted --add-interface=thunderbolt0
    • sudo firewall-cmd --reload

Thunderbolt経由でvLLM実行

  • クラスタスクリプト はIPに応じて自動でthunderbolt0を検出
  • Toolbox起動 :toolbox enter vllm
  • クラスタマネージャ :start-vllm-cluster
    • Option 1でHead:192.168.2.1, Worker:192.168.2.2を指定
    • Option 2で通常通り起動
    • ネットワーク自動判定

Thunderboltリンク検証

  • 比較スクリプト :/opt/compare_eth_vs_rdma.sh -tでThunderbolt帯域・遅延測定
    • -t:Thunderboltのみ、

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

すごい!今、地元のエージェントがメンテナンスできるように設計された、3ノードのStrix HaloエージェントOSファクトリーに取り組んでるんだ。これ、ホームラボにとってはメモリ帯域幅の組み合わせが最高だよ。kyuz0のコンテナに関する作業のおかげで、このキットへの投資がすごく価値あるものになった。Frameworkがハードウェアを送ってくれるといいな!これが私が出荷したいものなんだけど、こういうセットアップをそのまま出荷できるように設計されてるんだ。kyuz0がいなかったら、こんなことはもっと難しかっただろうな!(注:64GBのものは空っぽで約1700ドル、128GBの価格はすごく高いけど、時間が経つにつれてラボをもっと決定論的にできるから、どんどん進化していけるよ!)

└

そうだね、いいまとめだ。みんなこれをやってるみたいだ。基本的にプロシューマーハードウェアでプロバイダーレベルに近づいてる。k0sの下でこれを動かしてるのを共有するよ。

128GBのStrix Haloを2台持ってて、Antirez(Redisの作者)のDS4に関する作業にすごくワクワクしてる。特に、2台のマシンを使った4ビット量子化がね。今はGLM 5.2の速度が良くないけど、Deepseek V4のフラッシュ速度は私にはまあまあで、かなり使えるよ。kyuz0の最近の素晴らしい動画も見てみて!もう少し速度とモデルの改善があれば、ローカルAIが実用的なものになるね!最大の問題は、すべてのテック企業が消費者向けハードウェアを完全に手が届かないものにしていることだと思う。これは偶然じゃないよ。最近のMicronの利益と株価を見てみて…私のStrixマシンはそれぞれ約2,000ユーロで手に入れたけど、90年代の子供としては最高のコンピュータだった。でも、そんな時代はもう終わっちゃった :(

└

ds4の利点は、特に彼がフォークしたカーネルをアップストリームする場合、llama.cppに対して何なの?

└

最大の問題は、すべてのテック企業が消費者向けハードウェアを完全に手が届かないものにしていることだと思う。これは偶然じゃないよ。最近のMicronの利益と株価を見てみて…「テック企業」が一枚岩じゃないって気づいてる?Micronが高い価格を設定しても、OpenAIに魔法のように利益をもたらすわけじゃないよ。「高い価格が競争相手を排除する」理論もあまり意味がない。これは、デニーズが卵の価格が高くなることで、家庭で卵を料理するのが高くなるから利益を得るって言ってるようなものだね。

└

昨年、128GのAI Max 395+が2.5kで買えたけど、今はほぼ4kになっちゃった。もしかしたら君が正しいかも、私も最初は2kだと思ってた。ノートパソコンのAI Max 395+のアップグレードを待ってたんだけど、今はアップグレードする意味がなくなっちゃった。

└

今年の後半にちゃんとしたローカルモデルのマシンを買おうと思ってたけど、価格を考えると今は保留にしてる。特に、フロンティアモデルが自分のセットアップを作るコストに対して非常に安いから。AI専用のハードウェアやプロセッサがすごく早く進化してるから、今買うハードウェアは、従来のコンピュータ用途よりもこの用途ではすぐに陳腐化しちゃうと思う。1〜3年後にはハードウェアの圧迫が終わって、ローカルの蒸留モデルがOpus 4.8のような知性を提供できるようになり、使えるパフォーマンスを提供するハードウェアが存在するようになるだろう。

└

先週、128GBのStrix Haloノートパソコンが壊れちゃったんだ。2800ユーロで買ったのに。今同じ機種を買おうとしたら、価格が7899ユーロになってる。完璧なデバイスではなかったけど、大きめのモデルを動かせるのはちょっとした魔法みたいだった。

これ、ちょっと興味深いね。ここでの主なハードウェアコストは次の通りみたいだ:- 128GBのRAMを搭載したFramework Desktop AIメインボードがそれぞれ3150ドル - 100Gイーサネットコントローラーが約500ドル だから、Frameworkボードには1つのPCI-e 4.0 x4スロットがあって、理論上は8GB/sまたは64Gbpsだけど、100Gは得られないね。それに、100Gカードは明らかにPCI-e x16スロットが必要だから、動かすためにはライザーやアダプターが必要になる。100GbEの銅NICがどれくらい熱くなるかは分からないけど、経験上、10GbE NICは基本的に巨大なヒートシンクみたいなものだから。だから、ファイバーの方がいいかもしれないし、短いファイバーケーブルは他のことを考えるとコスト的に問題ないと思う。ちなみに、イーサネットを使ってクラスタリングしていて、2台のデバイスをクラスタリングする場合、理想的には単方向イーサネットを使うべきだけど、ここではそれは選択肢じゃない。著者はクラスタリングのためにUSB 4.0を考慮したのかな?TB5でMac Studioをクラスタリングしている人を知っているから聞いてるんだけど、その帯域幅は最大120Gbpsだよ。Ryzen AI 395のUSB4のバージョンは40Gbpsみたいで、これはPCI-e 4.0 x4の8GB/sにはそれほど遠くない。でも、Strix Halo(およびDGX Sparkも)での制限要因はメモリ帯域幅で、どちらも300GB/s未満なんだ。明らかな比較対象はMac Studioだね。残念ながら、現在販売されている最大スペックは96GBだ。512GBまで行ったこともあったけど、96GBは6700ドル以上で、でもAFAICTではパフォーマンスがずっと良いよ。M3 Ultraは約900GB/sのメモリ帯域幅を持ってる。代わりに、M5 Maxと128GBのRAMを搭載したMacbook Proを8000ドルで買うこともできるけど(数日前は5500-6000ドルだった)、それでも約600GB/sで、これらのミニAIボックスの倍だよ。ああ、もしFrameworkのマザーボードに行きたくないなら、128GBのStrix Halo PCを3000ドル以下で買えるよ。ただ、ここでの主なポイントは、300B+(あるいは1T+)のパラメータモデルをエンスージアスト向けハードウェアで実用的な速度で動かすまで、あと数年だってことだね。

└

そんな短い距離でファイバーを使う理由はないよ。DACケーブルは安くて、短距離ではほぼすべての面で優れてる。多分、RJ-45 NICやSFPモジュールを考えてるんだろうけど、これらはかなり熱くなることで知られてるからね。

└

ちゃんとTb/USB4もカバーしてたね ;)

└

KubernetesクラスターでMs-01sを100GBEと銅DACで動かしてたんだけど、その小さい箱のNVMEドライブがやられちゃった。FWでも同じ問題が起きると思うよ。しかも、100GBEを全然フルに使ってなかったし、ほとんど遊び感覚だった。AI + 100GBE(負荷時) + 小さい箱 = 信頼性が低くて、すぐに熱くなっちゃう。

Hacker Newsで議論の続きを見る

同じ出典の記事