GPUFits

FP8、NVFP4 与 GGUF 量化怎么选:数据中心格式 vs llama.cpp 格式

更新于 2026-09-10 · 核实于 2026-09-10

下载模型时你会遇到两个平行宇宙:Hugging Face 上标着 FP8、NVFP4 的官方 checkpoint,和 bartowski 仓库里一排 GGUF 文件。它们都是”低精度”,但面向的硬件、软件栈和使用场景几乎不重叠。选错宇宙的代价不是质量,是根本跑不起来。

两套格式,两个生态

GGUF 是 llama.cpp 的容器格式,量化方案(Q4_K_M、Q8_0 等)是整数量化:权重存成低位整数加缩放系数,计算前反量化回 FP16/BF16 再做矩阵乘。它的设计目标是可移植性——同一份文件能跑在 CPU、CUDA、Metal、Vulkan 上,Ollama、LM Studio、llama.cpp 都直接加载。

FP8 / NVFP4 是 NVIDIA 数据中心路线的浮点格式,目的是让 Tensor Core 直接以低精度做矩阵乘——不反量化,计算本身就在 8 bit 或 4 bit 上发生。分发形式是普通 safetensors checkpoint(如 NVIDIA 官方发布的 FP8/NVFP4 版模型,DeepSeek-V3/R1 原生 FP8 权重),由 vLLM、TensorRT-LLM、SGLang 这类服务框架加载。

一句话区分:GGUF 省的是”搬运字节”,FP8/NVFP4 省的是”计算本身”。

FP8:Hopper 起的 8 bit 浮点

FP8 有两种子格式:E4M3(4 位指数 3 位尾数,用于权重和激活)和 E5M2(动态范围更大,用于梯度)。每个权重恰好 8 bit,配合 per-tensor 或 per-block 缩放系数。

硬件门槛明确:Ada(RTX 40 系列)和 Hopper(H100)起的第四代 Tensor Core 原生支持 FP8 矩阵乘;Ampere(RTX 30 系列、A100)及更早的硬件没有这个指令,FP8 checkpoint 在上面只能转回 FP16 跑——体积照小,但没有任何速度红利,还失去 GGUF 的生态便利。

DeepSeek-V3 把 FP8 推到了台前:它的 671B 权重原生以 FP8 训练并发布,这使得”数据中心模型标配 FP8”成为现实——训练省算力,推理省显存,一份权重两头受益。

NVFP4:Blackwell 独占的 4 bit 浮点

NVFP4 是随 Blackwell(RTX 50 系列、B200/GB200)引入的 4 bit 浮点格式:每个权重用 E2M1(2 位指数 1 位尾数),每 16 个权重共享一个 FP8(E4M3)缩放系数,再加一个全张量级的 FP32 系数。算下来平均约 4.5 bit/权重

这个”小块+高精度系数”的结构正是它质量优于老式 4 bit 的原因:GGUF Q4_K_M 用整数加超块系数,NVFP4 用微浮点加 FP8 系数,思路相通。按 NVIDIA 官方口径,NVFP4 相对 FP16 省约 3.5 倍显存、相对 FP8 省约 1.8 倍,且配合 QAT(量化感知训练)时精度损失可以控制在很小范围——NVIDIA 发布的 NVFP4 预训练实验(12B 混合模型、10T token)显示训练损失和下游任务精度接近 BF16 基线。

硬件门槛是硬性的:FP4 矩阵乘只有 Blackwell 第五代 Tensor Core 支持。RTX 40 及更早的卡无法原生加速 NVFP4。

体积与显存:同一张表看两套格式

两套格式都可以代入本站显存公式:权重 = 参数(十亿) × bit/权重 ÷ 8,再加 KV 缓存和约 1.5GB 运行时开销。取 FP8 = 8.0 bit、NVFP4 ≈ 4.5 bit,GGUF 档位用实测值(Q8_0 = 8.51、Q4_K_M = 4.9):

模型FP8Q8_0 (GGUF)NVFP4Q4_K_M (GGUF)
Llama-3.1-8B(8.03B)8.0 GB8.5 GB4.5 GB4.9 GB
Qwen3-32B(32.8B)32.8 GB34.9 GB18.5 GB20.1 GB
Llama-3.3-70B(70.6B)70.6 GB75.1 GB39.7 GB43.2 GB

加上 KV 缓存(8K 上下文、fp16)和 1.5GB 开销后的完整需求,以及落在哪张卡上(宽裕 = 需求 ≤ 可用显存 80%,勉强 = ≤100%):

配置合计显存在哪张卡上
8B FP810.6 GB12GB 勉强,16GB(RTX 4070 Ti S)宽裕
8B NVFP47.1 GB12GB 宽裕(但需 Blackwell 才有加速)
32B NVFP422.1 GB24GB 卡勉强,RTX 5090 32GB 宽裕
32B FP836.4 GB48GB 卡(A6000)勉强
70B NVFP443.9 GB48GB 勉强,双 32GB 或 80GB 宽裕
70B FP874.8 GBH100/A100 80GB 勉强

注意最后一行:70B 的 FP8 依然要 80GB 级显卡。FP8 的意义不在”让小卡跑大模型”,而在数据中心硬件上的吞吐;真正改变消费级硬件门槛的是 4 bit 这一档——无论它叫 NVFP4 还是 Q4_K_M,体积几乎一样(39.7 vs 43.2 GB),区别在于谁跑得快、在哪跑。

质量:关键变量不是格式,是 QAT

搜”qat vs q8”的人真正想问的是:4 bit 能不能不输 8 bit。答案是:同样 4 bit,QAT 和 PTQ 是两个世界。

  • PTQ(训练后量化):拿训好的模型直接压缩。GGUF 全家、大多数第三方 FP8 checkpoint 都是 PTQ。4 bit PTQ(Q4_K_M 级)在日常对话中够用,但在数学、长推理链上可测量地劣于 8 bit。
  • QAT(量化感知训练):训练或继续训练时就把量化噪声放进前向传播,让模型学着适应低精度。成本极高(只有模型原厂或 NVIDIA 这种级别的团队做得起),但同样 4 bit 的保真度大幅领先 PTQ。Meta 的 Llama 3.2 小模型、NVIDIA 官方 NVFP4 checkpoint 都走这条路。

实用推论:一个官方 QAT 的 NVFP4 checkpoint,质量通常好于社区 PTQ 的 Q4_K_M;反过来,没有 QAT 加持时,别指望任何 4 bit 格式追上 Q8。格式决定体积和硬件,训练方式决定质量上限。

速度:GGUF 省带宽,FP8/NVFP4 连算力一起省

逐 token 生成(decode)永远是带宽瓶颈,两套格式在这一点上待遇相同。本站速度公式 理论 tok/s = 带宽 × 0.75 ÷ 每 token 读取的权重 GB 对两者通用(理论估算,实际受框架/驱动影响,误差约 ±30%):

硬件模型与格式每 token 读取理论速度
RTX 4090(1008 GB/s)8B FP88.0 GB约 95 tok/s
RTX 40908B Q4_K_M4.9 GB约 154 tok/s
RTX 5090(1792 GB/s)70B NVFP439.7 GB约 34 tok/s
H100(3350 GB/s)70B FP870.6 GB约 36 tok/s

差距体现在 prefill(提示词处理):这个阶段是算力瓶颈。GGUF 整数权重要先反量化再算,Tensor Core 仍跑 FP16 指令,prefill 没有加速;FP8/NVFP4 的矩阵乘直接在低精度 Tensor Core 上执行,prefill 吞吐可以有数倍提升——这正是多用户服务场景(token 大部分花在 prefill 上)必须上 FP8/NVFP4 的原因,也是单人聊天场景可以无视它们的原因。

怎么选:先看硬件,再看场景

你的情况推荐
消费级显卡 + llama.cpp/Ollama/LM StudioGGUF Q4_K_M,无需纠结(详见 Q4 vs Q8 指南)
RTX 40 系 + vLLM 服务化FP8 checkpoint(原生加速),KV 缓存可再开 FP8
RTX 50 系 / B200 + vLLM、TensorRT-LLM官方 NVFP4 + QAT checkpoint 优先;没有官方版再退回 GGUF Q4_K_M
长上下文优先格式不变,先开 q8/FP8 KV 缓存(见 KV 缓存指南)
复现论文数字、微调基线FP16/BF16 原始权重,两种量化都不要

常见误区

  • “FP8 文件更小,所以更先进。” FP8 是 8 bit,体积和 Q8_0 同级,比 Q4 大 70% 以上。它先进在计算路径,不在压缩率。
  • “NVFP4 是 GGUF 的新档位。” 不是。它不在 GGUF 生态里,是 Blackwell 硬件的原生数据类型,需要 vLLM/TensorRT-LLM 加载。下载页看到 NVFP4 版模型,先确认你有 Blackwell 显卡和服务框架。
  • “4 bit 都一样。” NVFP4 的微浮点系数结构、QAT 训练加持,让它和老式整数 Q4 不在一个质量层级;同为 4 bit,训练方式差距大于格式差距。
  • “有了 FP8 就不用管 KV 缓存了。” 权重量化和 KV 缓存是独立变量。128K 上下文下 Llama-3.1-8B 的 fp16 KV 缓存约 17GB,比 FP8 权重本身还大一倍——该开 FP8/q8 KV 还是得开。

一句话总结

个人本地跑:GGUF Q4_K_M,生态和硬件通吃;服务化 + Ada/Hopper:FP8;Blackwell 且有官方 QAT checkpoint:NVFP4。 不确定某张卡装不装得下,把格式对应的 bit/权重代入显存计算器算一遍,或用显卡体检工具直接查你的卡能跑哪些组合——本文所有显存数字都来自同一套公式。

常见问题

FP8 和 Q8_0 是一回事吗?

体积上接近(都约 8 bit/权重),机制上完全不同。Q8_0 是整数量化,推理时先反量化回 FP16 再算;FP8 是浮点格式,在支持的显卡上由 Tensor Core 直接做 FP8 矩阵乘,省掉反量化步骤,还能加速 prefill。

RTX 4090 能跑 NVFP4 吗?

不能原生跑。NVFP4 的 FP4 计算需要 Blackwell 架构(RTX 50 系列、B200)的第五代 Tensor Core。4090 上可以软件模拟,但没有硬件加速,不如直接用 GGUF Q4_K_M。4090 原生支持的是 FP8。

QAT 量化的 Q4 能比 Q8 还好吗?

在质量上接近是可能的。QAT(量化感知训练)让模型在训练时就适应低精度,同样的 4 bit 比训练后量化(PTQ)保真度高得多——这就是 NVFP4 官方 checkpoint 大量配合 QAT 的原因。但 QAT 不省显存之外的任何东西,体积仍由位数决定。

个人本地部署有必要追 FP8/NVFP4 吗?

多数情况下没有。单用户场景的瓶颈是显存带宽和容量,GGUF Q4_K_M 在任何硬件上都能跑且生态成熟。FP8/NVFP4 的优势集中在多用户服务的 prefill 吞吐和数据中心硬件上——除非你手上有 Blackwell 显卡并跑 vLLM,否则 GGUF 就是正确答案。

FP8 的 KV 缓存和权重量化是一回事吗?

不是,两者独立。vLLM、TensorRT-LLM 支持 FP8 KV 缓存,作用相当于 llama.cpp 里的 q8 KV——把上下文工作记忆的占用减半。即使权重保持 FP16,也可以单独开 FP8 KV 来换更长上下文。

来源