Builder Daily

2026-05-01

DGX Spark 上 vLLM vs llama.cpp vs Ollama — 该用哪个推理栈

GB10 推理栈决策指南:vLLM 适合 MoE+高并发,llama.cpp 适合 MXFP4 提示与单用户,Ollama 适合零配置开发。包含 NVFP4 tok/s 比较。

三个推理栈主导了 DGX Spark 的部署:vLLM、llama.cpp 和 Ollama。它们在 GB10 的 SM121 架构上有明显不同的权衡。

快速比较

vLLMllama.cppOllama
NVFP4 支持✅(cu130-nightly)✅(PR #22196)⚠️ 通过 llama.cpp 后端
MoE 模型✅ 最佳✅ 良好✅ 良好
多用户并发✅ 优秀⚠️ 有限⚠️ 有限
MTP 投机解码
设置复杂度
OpenAI 兼容 API✅(llama-server)

单用户吞吐量:Qwen3.6-35B-A3B

推理栈量化单用户 tok/s
vLLM(FP8,无 MTP)FP828–33
vLLM(NVFP4,无 MTP)NVFP4~42
vLLM(NVFP4 + MTP-1)NVFP455.9
llama.cpp(NVFP4)NVFP4~38
llama.cpp(MXFP4)MXFP4~43
Ollama(默认 Q4)Q4_K_M~24

搭配 MTP-1 的 vLLM 以大幅优势赢得单用户吞吐量,但 55.9 tok/s 需要 cu130-nightly 容器和明确的 --moe-backend=flashinfer_cutlass 标志。没有这些设置,vLLM 表现会低于 llama.cpp。

并发:vLLM 的绝对优势

c=32 并发用户下,vLLM 的连续批处理和分页 KV-cache 发挥了关键作用:

推理栈c=32 总 tok/s
vLLM(NVFP4 + MTP)433
llama.cpp(llama-server,NVFP4)~95
Ollama~60

选用时机

选 vLLM 的情况:

选 llama.cpp 的情况:

选 Ollama 的情况:

TRITON-only 陷阱

在 SM121 上,vLLM 的 FP8 MoE 是 TRITON-only — FLASHINFER、CUTLASS 和 DEEPGEMM 无法用于 FP8。这就是为什么未调校的 vLLM FP8 表现不佳。NVFP4 通过明确标志获得 flashinfer_cutlass,这是 55.9 tok/s 得以实现的方式。

若 vLLM FP8 的表现比 llama.cpp 差,请设置 --moe-backend=flashinfer_cutlass 并改用 NVFP4。


Sources

请喝咖啡