单卡 RTX 5090 跑 Qwen3-27B:NVFP4 量化达 880 tok/s
社区用户在单张 RTX 5090 上用 NVFP4 量化运行 Qwen3-27B,6 路并发聚合达 880 tok/s,…
Reddit 用户 Ostfralla 在 r/LocalLLaMA 分享了一次针对 Qwen3-27B 的极限推理实测:在单张 RTX 5090、操作系统为 CachyOS + COSMIC 桌面的环境下,整套桌面仅占约 150 MB VRAM,便跑出了相当可观的吞吐。该用户自行将 Qwen 团队发布的 BF16 权重转换为 NVFP4(4-bit 浮点)格式,并基于一个名为 NInfer 的自研推理引擎加载测试。
性能数据:聚合 880 tok/s、预填接近 6000 tok/s
测试在 6 路并发请求下达到 880 tok/s 的聚合吞吐,单次跑分峰值记录到 967 tok/s;单流请求配合 MTP 投机解码稳定在 200 tok/s 以上。最亮眼的是预填(prefill)速度:NInfer + NVFP4 组合录得约 5,950 tok/s,而同一台机器上 llama.cpp Unsloth Q5_K_XL 仅为约 1,700 tok/s,差距接近 3.5 倍。
- 模型权重:16.8 GiB(NVFP4 4-bit)
- 上下文长度:完整 262,144 tokens
- 显存剩余:约 13 GiB 留给 KV cache
引擎与量化方案
NInfer 是用户 Neroued 独立开发的单卡推理引擎,并非 llama.cpp 或 vLLM 的分支。其优势在于充分调用 Blackwell 架构(RTX 5090)的 FP4 Tensor Core,缺点是采用自有工件格式、不直接接受 GGUF 输入,需要用其配套工具从 BF16 重新量化转换。
作者在实测中发现,NInfer 会将两个权重矩阵合并到一个对象中,而该对象只能携带一个缩放因子:BF16 各自量化得到的缩放因子不同,导致转换一度失败。最终通过选用原始 BF16 重新量化时取两个标度中的较小值,重新构造成功,误差从 0.09471 降到 0.09470,几乎可以忽略。
精度验证:HumanEval+ 与 AIME 双向核对
为确认 NVFP4 量化没有显著掉点,作者使用相同的引擎、相同参数、温度设为 0(确保确定性)在两个数据集上做了对照(NVFP4 vs 已发布的 int4 量化版本)。
- HumanEval+(164 题):NVFP4 与 int4 均为 152/164
- AIME25 + AIME26(60 题):均为 55/60
- 224 道题中答案出现差异的题目数:8 vs 8,分歧对半
- 耗时:NVFP4 在各项基准上比 int4 快 1.56x 到 1.98x
现存限制
- 仅支持 Blackwell(需要 FP4 Tensor Core),不适用其他架构
- 需要对 NInfer 打一个 6 行的小补丁,该补丁尚未合入主干,作者已在仓库中提交并开 issue 跟踪
- 目前验证仅覆盖 HumanEval+ 与 AIME,未做更广泛的能力对比
- 转换流程目前为手动操作,普通用户门槛较高
资源与致谢
作者已将 NVFP4 版 Qwen3-27B 权重发布在 Hugging Face:huggingface.co/Ostfralla/Qwen3-8B-27B-NVFP4-NInfer(原文如此)。本次实测同时也归功于 Neroued 的 NInfer 引擎、Qwen 团队开源的 27B 模型以及 llm-compressor 提供的量化辅助工具。
对计划在 RTX 5090 这类 Blackwell 显卡上做本地大模型推理的开发者来说,这是一次值得参考的性能/精度参考点;而对希望复现的读者,则需要额外注意补丁与量化格式这两道前置门槛。
