@no_stp_on_snek: 当所有人都在讨论 @SpaceXAI、@AnthropicAI 和 @OpenAI 的更新(但 @GoogleAI 呢?)... 我去测试了…
摘要
Unsloth 的 NVFP4 量化模型在 vLLM 和 llama.cpp 之间推理性能的详细比较,重点说明了 vLLM 在预填充速度上的优势,但 llama.cpp 在单流智能体工作负载中的解码和缓存优势。
查看缓存全文
缓存时间: 2026/07/11 17:27
大家都在讨论 @SpaceXAI、@AnthropicAI 和 @OpenAI 的更新(但是 @GoogleAI 呢?)……
我专门测试了 @UnslothAI 的新 NVFP4 模型,验证了他们的说法。
unsloth 的 NVFP4 检查点在 vLLM 上的 prefill 速度大约是我用 llama.cpp GGUF 的 2 倍。但我还是坚持用 GGUF,而原因完全出乎我的意料。
Qwen3.6-27b NVFP4,单张 5090(32GB),WSL2。注意:我的 llama.cpp 用的是 Blackwell 原生 NVFP4 内核分支,不是官方版本,所以用官方构建无法复现这些数据。
Prefill:vLLM 约 6600 tok/s,llama.cpp 约 2800-3400 tok/s。vLLM 大概快 2 倍(我的 llama.cpp 数据是服务端计时,vLLM 是真实时钟,所以我不纠结精确比例)。Decode:llama.cpp 109 tok/s,vLLM 使用 MTP 推测解码 97.9 tok/s,不使用则 63.8 tok/s。llama.cpp 胜出。权重大小:16.6GB vs 20.5GB。冷启动时间:11 秒 vs 几分钟。
首先纠正我自己的一个错误,因为我差点发表了错误的结论。我之前以为 vLLM 把上下文限制在 32K,其实不是。那个限制是我自己设的,是在一次 OOM 冲突中保守设定的,之后再也没有重新测试(感谢 Claude)。实际上 KV 池能容纳约 94k tokens。我的会话本来完全够用。评估永远是自己骗自己,我也被自己骗了。
真正的原因不那么明显但更有趣:vLLM 对混合 Mamba/DeltaNet 架构会自动禁用前缀缓存。所以每个智能体轮次都会从头重新对整个对话进行 prefill,大约 36k tokens 要花 5.5 秒。而 llama.cpp 会检查点循环状态,在我的实际流量上达到 97-100% 缓存命中率。
这就是关键所在。我的工作负载是一个智能体依次执行轮次,不断发送增长中的对话。vLLM 的 2 倍 prefill 优势全用来重做 llama.cpp 根本不用做的工作,而 llama.cpp 的 decode 优势则体现在生成的每个 token 上。
是的,单个请求。这就是重点。vLLM 是为并发服务设计的,单流是它最差的情况。但单流恰恰是我的工作负载,这也是整篇论述的核心观点。
如果你也想尝试这个服务方案,提一下我的尝试过程:尝试了 7 次。其中 4 次在几乎相同的 ~52GB + 20GB 交换峰值时 OOM 被杀死,无论编译并行度限制、多模态关闭、小 batch、8k 上下文,甚至完全 eager 模式,这个峰值都不变。模型加载从未出问题(每次 14 秒内占用 20.5GB 显存)。这个峰值出现在加载之后,在 profiling 和图捕捉阶段,看起来是 vLLM 0.24 中混合门控 DeltaNet 架构的特有问题。它需要 70-100GB 的主机内存。解决办法是将 WSL 提高到 58GB + 48GB 交换空间。这是 WSL2 的内存上限问题,原生 Linux 可能永远不会遇到。
公平地说,unsloth:它在冷启动长上下文单次生成中确实有优势,首令牌时间大约快 2 倍。而且他们声称的“2.5 倍”是针对其他 vLLM NVFP4 量化版本测量的,所以这个说法完全可能属实,同时它在 decode 上仍然输给 llama.cpp + MTP。我检查了两者,并不矛盾。
总结:评估你自己的工作负载。标题上的数字几乎从来不是对你真正重要的数字。
相似文章
ExLlamaV3 被低估了
作者推荐ExLlamaV3,这是一个被低估的本地AI推理工具,在NVIDIA硬件上性能优于llama.cpp,最近的更新如CPU MoE卸载提升了其性能。
问题:为什么 vLLM 的预填充速度远超其他推理引擎?
用户分享了基准测试结果,显示 vLLM 的预填充性能显著快于 llama.cpp 和其他引擎,并质疑这种速度差异背后的技术原因。
@_avichawla: https://x.com/_avichawla/status/2077653695123378321
本文认为,vLLM及类似的服务框架由于设计限制,在单个GPU上运行多个小型AI模型时效率低下。它介绍了SIE开源推理引擎,作为同时服务多个模型以降低成本的一种解决方案。
比较 llama.cpp 行/张量分割与 ik_llama 图分割的双GPU推理速度
一位用户使用llama.cpp(行/张量切分)和ik_llama(图切分)在两张RTX 3080 20GB上对双GPU推理速度进行了基准测试,使用Qwen3.6-27B GGUF模型,比较了token生成和提示处理速度。
Qwen3.8FN vLLM vs. llama.cpp vs Ninfer6000
一位社区成员对 Ninfer6000(针对 RTX Pro 6000 Blackwell 和 Qwen3.8-Flash-Next 调优的 Ninfer 分支)与 vLLM 和 llama.cpp 进行了基准测试,发现其解码速度约为 vLLM 的 1.6 倍、llama.cpp 的 2.2 倍,准确率几乎相同;但他表示,在实际使用中,工具调用存在严重的格式错误,导致其无法正常使用,因此仍继续使用 vLLM。