NVFP4 vs FP8 vs GGUF:16GB Ada显卡上解码快2.3倍

同模型同卡受控对比:NVFP4 解码快 2.3 倍,FP8 预填充最强,质量均与 BF16 打平。
文章利用 NVIDIA 同时发布的 Nemotron Labs Dory 1.0 4B 的 BF16、NVFP4、MXFP8 和 GGUF 四种格式,在 RTX 4070 Ti SUPER(16GB Ada,无原生 FP4 硬件)上做了一次变量受控的量化对比,并采用预注册规则保证结论可信。结果显示:解码速度基本跟随权重体积,NVFP4 权重仅 3.28 GiB,生成达 116.8 tok/s,是 BF16 的 2.3 倍;但长提示预填充由 FP8 领先(10,118 tok/s),因为 NVFP4 在 Ada 上走 weight-only Marlin 路径,计算仍回到 16 位。完整 GSM8K 上四种格式在容差内打平;逐 token 保真度上 NVFP4 为 89%–90%,MXFP8 最接近 BF16。文章还记录了工具链陷阱,并给出按场景选择的实践建议。
当你在搜索引擎输入“nvfp4 vs”,自动补全的选项往往是“fp8”、“gguf”、“q4_k_m”和“bf16”。多数对比文章的问题在于,它们比较的是不同人量化的不同模型,变量根本没有控制住。NVIDIA 在10月16日一次性发布了 Nemotron Labs Dory 1.0 4B 的 BF16、NVFP4、MXFP8 和 GGUF 版本,这让在同一张 RTX 4070 Ti SUPER(Ada 架构、16GB 显存、无原生 FP4 硬件)上做受控对比成为可能。作者在首次运行前就写好了测试规则,并公开了预注册表格和脚本。

测试设置:同一模型、同一显卡、预注册规则
测试对象是 Nemotron Labs Dory 1.0 4B,NVIDIA 同时放出了 BF16、NVFP4、MXFP8 和 GGUF 四种格式。硬件为 RTX 4070 Ti SUPER,Ada 架构,16GB 显存,没有 FP4 计算单元。这意味着 NVFP4 在这张卡上并非“原生加速”,而是通过 weight-only Marlin kernel 运行——权重保持低精度存储,实际计算仍在 16 位下完成。
所有 vLLM 格式使用同一引擎,GGUF 则走 llama.cpp。作者强调规则在第一次跑分前就已固定,避免事后挑选有利数据。这种预注册做法在量化评测中并不常见,却直接决定了结论的可信度。
NVFP4 是 NVIDIA 随 Blackwell 架构推出的一种 4 位浮点权重格式,每个权重仅占 4 bit,并配合块级缩放因子(每 16 个值共享一个 FP8 缩放系数)来保留动态范围。与 INT4 等定点格式相比,浮点结构对权重分布中长尾值的表示更友好,因此在极低位宽下通常比定点量化有更小的精度损失。MXFP8 则是 OCP 微缩放标准定义的 8 位浮点格式,同样使用块级共享缩放因子,但位宽与 FP8 一致,属于“微缩放”家族。两者的关键区别在于:NVFP4 把体积压到 3 位有效信息附近,而 MXFP8 保留 8 位精度,因此前者解码更快、后者保真度更高,这与正文的数据完全吻合。
weight-only Marlin kernel 指一种只对权重做低精度存储、计算时反量化回 16 位的 GPU 内核,Marlin 是 vLLM 中针对 4 位权重优化的高效实现。它让没有原生 4 位算力的 GPU(如 Ada 架构)也能享受权重体积缩小带来的显存和带宽收益,但无法减少矩阵乘法的计算量,所以预填充吞吐不会提升。这正是 NVFP4 在 Ada 上“解码快、预填充不占优”的底层原因。
核心数据:解码速度跟随权重体积
| 格式 | 引擎 | 生成速度 (tok/s) | 读取2048 token提示 (tok/s) | 权重体积 |
|---|---|---|---|---|
| BF16 | vLLM | 51.0 | 7,003 | 7.69 GiB |
| FP8 (W8A8) | vLLM | 78.5 | 10,118 | 4.67 GiB |
| MXFP8 | vLLM | 81.4 | 6,061 | 4.76 GiB |
| NVFP4 | vLLM | 116.8 | 6,978 | 3.28 GiB |
| GGUF Q5_K_M | llama.cpp | 58.8 | 1,710 | 3.42 GiB |
在 vLLM 的几种格式中,生成速度基本跟随权重体积:NVFP4 权重最小(3.28 GiB),解码速度达到 116.8 tok/s,是 BF16 的 2.3 倍。MXFP8 与 FP8 体积接近,速度也相近。GGUF Q5_K_M 虽然文件体积与 NVFP4 接近,但受限于 llama.cpp 引擎和不同的内核实现,生成速度只有 58.8 tok/s。
长提示读取:FP8 才是赢家
生成速度之外,预填充(prefill)表现呈现另一条规律。读取 2048 token 的长提示时,FP8 以 10,118 tok/s 明显领先,BF16 为 7,003 tok/s,NVFP4 为 6,978 tok/s,MXFP8 只有 6,061 tok/s,GGUF 则垫底在 1,710 tok/s。
原因在于矩阵乘法的精度路径:FP8 是这几种格式中唯一让 Ada 在 8 位下完成乘法的格式。NVFP4 在 Ada 上走 weight-only 路径,权重虽小,但计算仍回到 16 位,预填充阶段无法享受 4 位带来的吞吐优势。这解释了为什么 NVFP4 在短提示生成场景优势巨大,在长上下文读取场景却与 BF16 持平。
预填充(prefill) 是推理的第一个阶段:模型一次性处理整个输入提示,为每个 token 计算键值缓存(KV cache),本质是一批大矩阵乘法,属于计算密集型。解码(decode) 则是逐 token 生成,每步只处理一个 token,需要反复读取全部权重,属于显存带宽密集型。这一区别解释了正文的规律:解码速度跟随权重体积,因为权重越小、每步读取的数据越少;预填充速度则取决于算术精度路径能否真正降低计算开销。NVFP4 虽缩小了权重,但在 Ada 上计算仍回到 16 位,计算量没变,所以预填充只在 BF16 水平;FP8 能让 Ada 在 8 位下完成乘法,计算吞吐翻倍,预填充因而领先。
质量对比:GSM8K 上四种格式打平
速度之外,量化最怕的是质量塌陷。作者跑了完整的 GSM8K(1319 题,8192 token 上限):BF16 得 1249,FP8 得 1241,MXFP8 得 1250,NVFP4 得 1238。按 ±3 分的容差规则,三种量化格式都与 BF16 打平,95% 置信区间均在 ±2 分以内。
这个结果说明,在 4B 参数规模上,NVFP4 的量化损失在数学推理任务中并未造成可测量的下降。至少 GSM8K 这一项上,4 位权重没有拖累模型能力。
GSM8K(Grade School Math 8K)是评估数学推理的经典基准,包含约 8500 道需要多步算术的小学应用题,通常以准确率或正确题数报告。文中“8192 token 上限”指思维链推理(chain-of-thought)被允许生成的最大长度,超过则截断。GSM8K 对量化相对敏感,因为它要求模型维持多步精确计算,低精度若引入数值偏差容易在中间步骤累积错误。因此在该基准上量化后仍与 BF16 打平,是判断“量化没有造成实质质量塌陷”的较强证据。不过需注意,4B 模型在 GSM8K 上的绝对分数接近饱和,可能掩盖更细微的能力差异,这也是作者补充逐 token 保真度测试的原因。
逐 token 保真度:MXFP8 最接近 BF16
整体分数打平,不代表每一步预测都一致。作者在固定的英文和西班牙语文本上逐 token 对比:NVFP4 有 89%–90% 的概率与 BF16 选择相同的下一个 token;FP8 和 MXFP8 则达到 94%–96%。困惑度(perplexity)几乎不变,但 token 级别的分歧确实存在。
这一维度上 MXFP8 最忠实于 BF16。换句话说,如果你的应用对生成内容的逐词稳定性敏感(例如结构化输出、代码补全),NVFP4 的微小偏差可能比 GSM8K 分数反映的更明显。但若只看困惑度和基准分数,这些差异会被掩盖。
逐 token 保真度(token-level fidelity) 衡量的是两个模型在给定相同上文时,选择相同下一个 token 的频率;困惑度(perplexity) 则是对整个 token 分布的对数似然取平均后的指数,反映模型对文本的“意外程度”。两者差异在于:困惑度对分布的整体形状敏感,即使最高概率 token 选错,只要概率质量分配相近,困惑度变化也很小;而逐 token 一致率只看排名第一的 token 是否相同,因此对“差一点就选对”的分歧非常敏感。这就是正文所说 89%–90% 与 94%–96% 的差距在困惑度上几乎不可见、却可能影响结构化输出稳定性的原因——对代码补全、JSON 生成这类要求逐词确定的场景,最高概率 token 的偏移会直接表现为输出格式错误。
测试中踩过的坑
文章还记录了测量前遇到的问题:llama.cpp 的转换器拒绝公共检查点;prefix cache 曾虚高预填充数据;被截断的推理内容被误计为答案。作者还提到审计在自己第一次保真度测试中发现了一个错误。这些细节的价值在于提醒复现者:量化评测的陷阱往往不在模型本身,而在工具链和缓存行为。
实践建议
根据这组数据,选择逻辑可以归纳为:
- 追求生成吞吐、显存紧张:NVFP4 在 Ada 上解码快 2.3 倍,权重仅 3.28 GiB,是最优解,前提是接受 token 级 89%–90% 的保真度和无原生 FP4 硬件的事实。
- 长提示、RAG、文档问答:FP8 的 8 位乘法让预填充速度领先,长上下文场景收益更明显。
- 需要与 BF16 最大程度一致:MXFP8 在逐 token 保真度上表现最好。
- GGUF 生态:在相同硬件上,llama.cpp 的预填充速度远落后于 vLLM,若工作流依赖 GGUF,需接受这一引擎层面的差距。
这项测试的局限也很清楚:单一模型(4B)、单一显卡(RTX 4070 Ti SUPER)、单一推理引擎组合。NVFP4 在 Blackwell 等具备原生 FP4 硬件的平台上表现可能完全不同, Ada 上的 weight-only 路径只是过渡方案。但就 16GB Ada 用户而言,这组受控数据提供了少见的清晰参照。
相关推荐

3分钟看懂DeepSeek:从量化私募到开源AI领跑者的崛起之路
3分钟看懂DeepSeek发展史:从幻方量化的算力积累,到V2的MLA推理降本、V3的557.6万美元训练账单、R1开源引爆全球,再到V4与70亿美元A轮融资,梳理深度求索的关键节点与技术路线。

本地文学创作模型PK:Qwen3.8 27B微调版胜出,DeepSeek v4.1表现平淡
B站UP主横向测评七款本地文学创作模型:海明威、HumanLike Chat基于Qwen3.8 27B微调表现最佳,DeepSeek v4.1叙事平淡,东方朔角色混乱垫底。附三道测试题评分与使用建议。

梁文锋的三次豪赌:DeepSeek为何将82%毛利开源?
DeepSeek为何把82%毛利的推理框架DeepInfer开源,又启动千亿融资?从技术路线、国产芯片到组织纯粹性,解析梁文锋的三次豪赌与开源战略背后的商业与理想逻辑。