diff --git a/dgx-spark-minimax-m25-reap.md b/dgx-spark-minimax-m25-reap.md index 41656c7..ad4b2c6 100644 --- a/dgx-spark-minimax-m25-reap.md +++ b/dgx-spark-minimax-m25-reap.md @@ -50,12 +50,95 @@ MiniMax-M2.5は、中国MiniMax社が開発したコーディング・エージ 詳細な手順は公式ドキュメントを参照してください: 👉 [Connect two Sparks](https://build.nvidia.com/spark/connect-two-sparks) -### 確認事項 +### ネットワーク構成の理解(重要) -- QSFPケーブルによる物理接続 -- ネットワークインターフェース設定(自動または手動IP割当) -- パスワードなしSSHの設定 -- ネットワーク疎通確認 +DGX Sparkデュアル構成では、**2種類のネットワーク**を使い分けます。公式ドキュメントではこの点が分かりにくいため、詳しく解説します。 + +``` +┌─────────────────────┐ QSFP (200GbE) ┌─────────────────────┐ +│ DGX Spark 1 │◄────────────────────────────►│ DGX Spark 2 │ +│ │ 192.168.100.10/11 │ │ +│ enp1s0f1np1 │ (クラスター通信) │ enp1s0f1np1 │ +│ ┌───────────────┐ │ │ ┌───────────────┐ │ +│ │ NCCL/Ray通信 │ │ │ │ NCCL/Ray通信 │ │ +│ └───────────────┘ │ │ └───────────────┘ │ +├─────────────────────┤ ├─────────────────────┤ +│ eth0 (10.0.0.10) │◄──── 通常LAN ──────────────►│ eth0 (10.0.0.11) │ +│ ┌───────────────┐ │ │ ┌───────────────┐ │ +│ │ 管理/API公開 │ │ │ │ 管理のみ │ │ +│ └───────────────┘ │ │ └───────────────┘ │ +└─────────────────────┘ └─────────────────────┘ + │ + ▼ + クライアントからの + APIリクエスト + http://10.0.0.10:8000 +``` + +| ネットワーク | 用途 | インターフェース例 | IP例 | +|-------------|------|-------------------|------| +| **クラスター通信** | NCCL、Ray、テンソル並列 | enp1s0f1np1 (QSFP) | 192.168.100.x | +| **管理/API公開** | SSH、APIエンドポイント | eth0 (通常LAN) | 10.0.0.x | + +### なぜ分離が必要? + +1. **セキュリティ**: クラスター通信は暗号化されていないため、プライベートネットワーク推奨 +2. **パフォーマンス**: NCCL通信は200GbE QSFPを使用し、APIトラフィックと分離 +3. **柔軟性**: APIエンドポイントを外部公開しつつ、クラスター通信は内部に閉じる + +### QSFPインターフェースへのIP割り当て(手動) + +**重要**: QSFPインターフェースにはIPアドレスが自動で割り当てられません。手動設定が必要です。 + +```bash +# 両ノードで実行 + +# 1. インターフェース確認 +ibdev2netdev +# 出力例: mlx5_0 port 1 ==> enp1s0f1np1 (Up) +# mlx5_1 port 1 ==> enp1s0f0np0 (Down) +# "(Up)" と表示されるインターフェースを使用 + +# 2. IPアドレス設定 +# Node 1 +sudo ip addr add 192.168.100.10/24 dev enp1s0f1np1 +sudo ip link set enp1s0f1np1 up + +# Node 2 +sudo ip addr add 192.168.100.11/24 dev enp1s0f1np1 +sudo ip link set enp1s0f1np1 up + +# 3. 疎通確認(Node 1から) +ping 192.168.100.11 +``` + +### 永続化(netplan使用) + +再起動後もIPを維持するには、netplanで設定します。 + +```bash +# /etc/netplan/99-qsfp.yaml を作成 +sudo tee /etc/netplan/99-qsfp.yaml << 'EOF' +network: + version: 2 + ethernets: + enp1s0f1np1: + addresses: + - 192.168.100.10/24 # Node 2は192.168.100.11/24 +EOF + +sudo netplan apply +``` + +### パスワードなしSSHの設定 + +```bash +# Node 1で +ssh-keygen -t ed25519 -N "" +ssh-copy-id user@192.168.100.11 + +# Node 2でも同様に設定(逆方向) +``` --- @@ -219,6 +302,27 @@ docker exec -it $VLLM_CONTAINER /bin/bash -c ' --gpu-memory-utilization 0.85' ``` +### APIエンドポイントを別IPで公開する + +クラスター通信(QSFP)とAPIエンドポイント(通常LAN)を分離したい場合: + +```bash +docker exec -it $VLLM_CONTAINER /bin/bash -c ' + vllm serve cerebras/MiniMax-M2.5-REAP-172B-A10B \ + --tensor-parallel-size 2 \ + --host 0.0.0.0 \ + --port 8000 \ + ...' +``` + +| オプション | 説明 | +|-----------|------| +| `--host 0.0.0.0` | 全インターフェースでリッスン(推奨) | +| `--host 10.0.0.10` | 特定IPのみでリッスン | +| `--port 8000` | APIポート番号 | + +**ポイント**: `VLLM_HOST_IP`環境変数はクラスター内部通信用であり、`--host`オプションはAPIエンドポイント用です。これらは独立して設定できます。 + --- ## 動作確認