概要
本ガイドは、 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 upsudo ip addr add 192.168.100.1/30 dev enp194s0np0sudo nmcli connection modify "rdma0" ethernet.mtu 9000sudo nmcli connection up "rdma0"
- Node 2(Worker)
sudo ip link set enp194s0np0 upsudo ip addr add 192.168.100.2/30 dev enp194s0np0sudo nmcli connection modify "rdma0" ethernet.mtu 9000sudo nmcli connection up "rdma0"
- Node 1(Head)
- ルーティング確認 :
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=enp194s0np0sudo 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 ...
- Head:
- 状態確認 (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 9000sudo 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 9000sudo nmcli connection up thunderbolt0
- 4. ファイアウォール設定
sudo firewall-cmd --permanent --zone=trusted --add-interface=thunderbolt0sudo 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のみ、