eugr/spark-vllm-docker
Docker configuration for running VLLM on dual DGX Sparks
概要
spark‑vllm‑docker は、NVIDIA DGX Spark クラスター(または単一の DGX Spark ノード)上で vLLM 推論エンジンを実行するための Dockerfile、ヘルパースクリプト、およびすぐに使える recipes のセットです。vLLM(およびオプションの実験的な B12X カーネル)を含む Docker イメージのビルドを自動化し、Hugging Face からモデルの重みをプルし、Ray または vLLM ネイティブの PyTorch‑distributed バックエンドを使用して 1 つまたは複数の Spark ノード全体で vLLM サーバーを起動します。
対象ユーザー
- DGX Spark ハードウェアへのアクセス権を持ち、大規模な LLM(例:Qwen‑3.8、DeepSeek‑V4、GLM‑5.x、Nemotron 3.5)を高スループットで提供したいエンジニア。
- InfiniBand/RDMA、KV‑cache FP8、推論デコード、および InstantTensor や実験的な B12X ローダーによる高速なモデル読み込みを伴うマルチノード推論を必要とするチーム。
- 各ノードで手動で vLLM をビルドするのではなく、再現可能な Docker ベースのワークフローを好むユーザー。
主な機能(README に記載の通り)
| 機能 | 詳細 |
|---|---|
| Docker イメージ | eugr/spark-vllm:latest(通常版)または eugr/spark-vllm-b12x:latest(実験的な B12X カーネル版)。イメージは nightly vLLM wheels またはソースからビルドされ、オプションで --use-wheels、--rebuild-vllm、--rebuild-flashinfer フラグを使用可能。 |
| マルチノードサポート | 起動スクリプト(launch‑cluster.sh、run‑recipe.sh)が Spark ノードを検出し、パスワードなし SSH を設定し、InfiniBand/RoCE 上で NCCL を使用して vLLM ワーカーを起動します。 |
| モデル読み込み | 標準の safetensors、InstantTensor ゼロコピー、およびより高速で低メモリな読み込みを実現する B12X ローダーをサポート。 |
| 推論デコード | DFlash、MTP、DSpark などの組み込み設定により、ステップごとに最大 8 つの推論トークンを許可。 |
| メモリ最適化 | FP8 KV‑cache、VLLM_WSL2_ENABLE_PIN_MEMORY、早期 OOM モニター、CPU ヒープトリミング、およびオプションの PLE‑table ディスクオフロード。 |
| 便利な recipes | 人気モデル(Qwen‑3.8‑27B、DeepSeek‑V4‑Flash‑Vision、GLM‑5.3、Nemotron‑3.5 など)向けの YAML ファイル。モデル ID、並列処理、トークナイザー、パフォーマンスフラグが事前設定済み。 |
| 拡張性 | --apply‑vllm‑pr で起動時にアップストリームの vLLM プルリクエストの差分をプル可能。mods/ ディレクトリにカスタムローダーパッチを配置。 |
| ヘルスチェック | シンプルな curl http://localhost:8000/health および OpenAI 互換の /v1/models エンドポイント。 |
開始方法(クイックスタートの概要)
- Clone: Spark ヘッドノードでリポジトリをクローンします。
- ビルドとコピー: Docker イメージをビルドします:
./build-and-copy.sh(実験的なイメージには--exp-b12xを追加)。 - ダウンロード: モデルの重みをダウンロードします:
./hf-download.sh <model‑repo>。 - 起動: サーバーを起動します:
(./launch-cluster.sh --solo -t vllm-node \ exec vllm serve <model> \ --host 0.0.0.0 --port 8000 \ --kv-cache-dtype fp8 ...vllm-nodeをvllm-node-b12xに置き換え、B12X ベースのレシピに必要な追加フラグを README に従って追加してください。) - テスト:
curlを使用してエンドポイントをテストし、クライアントをhttp://<head‑node-ip>:8000/v1に向けます。
なぜ重要か
単一の GPU で vLLM を実行するのは簡単ですが、低レイテンシを維持しながら複数の DGX Spark ノードに推論をスケールさせるには、ネットワーク、メモリ管理、カーネル選択に細心の注意が必要です。このリポジトリは、それらの調整項目をすべて再現可能な Docker イメージとスクリプトにパッケージ化しており、実務者は低レベルのクラスター構築ではなく、モデルそのものに集中できます。
上記のすべての情報はリポジトリの README から直接引用したものであり、追加の機能は推測されていません。
関連
- プロジェクト
- Dispatch
- プロジェクト
- プロジェクト
- プロジェクト