2026-05-01
DGX SparkでvLLM vs llama.cpp vs Ollama — どの推論スタックを使うべきか
GB10推論スタック選択ガイド:MoE+高並列ならvLLM、MXFPプロンプト・単一ユーザーならllama.cpp、ゼロ設定開発ならOllama。NVFP4 tok/s比較付き。
DGX Sparkの展開を支配する推論スタックは3つ:vLLM、llama.cpp、Ollama。GB10のSM121アーキテクチャではそれぞれ明確な違いがあります。
一目でわかる比較
| vLLM | llama.cpp | Ollama | |
|---|---|---|---|
| NVFP4サポート | ✅(cu130-nightly) | ✅(PR #22196) | ⚠️ llama.cppバックエンド経由 |
| MoEモデル | ✅ 最良 | ✅ 良好 | ✅ 良好 |
| マルチユーザー並列 | ✅ 優秀 | ⚠️ 限定的 | ⚠️ 限定的 |
| MTP投機的デコーディング | ✅ | ❌ | ❌ |
| セットアップの複雑さ | 高 | 中 | 低 |
| OpenAI互換API | ✅ | ✅(llama-server) | ✅ |
単一ユーザースループット:Qwen3.6-35B-A3B
| スタック | 量化 | 単一ユーザー tok/s |
|---|---|---|
| vLLM(FP8、MTPなし) | FP8 | 28–33 |
| vLLM(NVFP4、MTPなし) | NVFP4 | ~42 |
| vLLM(NVFP4 + MTP-1) | NVFP4 | 55.9 |
| llama.cpp(NVFP4) | NVFP4 | ~38 |
| llama.cpp(MXFP4) | MXFP4 | ~43 |
| Ollama(デフォルトQ4) | Q4_K_M | ~24 |
並列性:vLLMの圧倒的優位
c=32の並列ユーザーでは、vLLMの継続バッチ処理とページングKVキャッシュが差をつけます:
| スタック | c=32 総 tok/s |
|---|---|
| vLLM(NVFP4 + MTP) | 433 |
| llama.cpp(llama-server、NVFP4) | ~95 |
| Ollama | ~60 |
どれを使うべきか
vLLMを選ぶ場合:
- MoEモデル(Qwen3、Mixtral)の運用 —
flashinfer_cutlassでTRITON比+30% - 並列ユーザー4超のサービング
- 投機的デコーディング(MTP)による低レイテンシ
- Prometheusメトリクスが必要
llama.cppを選ぶ場合:
- MXFP4精度(最高プロンプトスループット、vLLMは未対応)
- Dockerなしのローカル開発環境
- NVFP4アップロードがないモデルを使用(ローカル量化)
- 最小依存 — Pythonなし、単一バイナリ
Ollamaを選ぶ場合:
- プロトタイピングや開発者専用ワークロード
- GUIフロントエンド(Open WebUI、Continue.dev)との連携
- 14B以下の小型モデルでオーバーヘッドが問題にならない場合
TRITON-onlyの落とし穴
SM121上でFP8 MoEのvLLMはTRITON専用です — FP8ではFLASHINFER、CUTLASS、DEEPGEMMは利用不可。これが未調整のvLLM FP8がllama.cppより遅い理由です。--moe-backend=flashinfer_cutlassを設定してNVFP4に切り替えてください。