背景:NVFP4 把"低比特"从研究推到产线

最近一两年 LLM 推理成本被一步步往下压,INT4/INT8 之后,业界开始把目光投向更激进的 4-bit 浮点。NVFP4 是 NVIDIA 主推的硬件原生 FP4 微缩格式——每个连续 16 个元素共用一个 FP8 scale,再加上一个张量级的 FP32 scale——比 INT4 表达力更细,比 FP16 又省一档带宽。问题是:真实 LLM 的激活值里,少数几个 channel 的数值能比中位数高出几个量级,量化时这些离群点直接决定 block scale,让同一 block 里"陪葬"的普通值被丢进 FP4 的粗糙格点,损失精度的就是这个陪葬过程。

华南理工和 Intellifusion 的团队(arXiv 2609.00066,EMNLP 2026 主会)给这个问题起了一个名字:Collateral Quantization Error(陪葬量化误差),并提出了一种不需要额外算子、几乎不增加推理开销的 PTQ 方案:OCGQuant(Outlier-Companion Grouping)。开源代码在 https://github.com/Eshamont/OCGQuant,文章已挂在 arXiv:2609.00066 上。

核心思路:把"陪葬者"换成安静的通道

传统方法要么走混合精度(LLM.int8、Atom,用 INT8 单独兜住离群点),要么走 Hadamard 旋转(QuaRot 等)把离群能量摊平,要么加冗余通道做残差补偿(ARCQuant)。这些方法在 INT 量化上有效,但对 NVFP4 的两点特性水土不服:FP4-E2M1 的非均匀格点不能简单用 uniform step 套;block-level scale 只覆盖 16 个 channel,意味着 channel 顺序直接决定 block 组成。

OCGQuant 的切入点是后者:既然 block 是按 channel 顺序切片的,那就重新排 channel。具体做法是:

  • 在校准集上跑一遍前向,统计每个输入 channel 的 RMS;
  • 按 RMS 从大到小排队,每个高 RMS 的离群 channel 都从剩下未分配的 channel 里,挑 15 个 RMS 最低的"安静"channel 配成一组
  • 同样的 channel permutation 套到权重上,离线用 GPTQ 补一遍 weight 端的量化误差。

这个打法的直觉很朴素:低 RMS 通道值本来就接近 0,而 FP4-E2M1 在小数值区间的格点密度又相对较高(用作者 Lemma 1 的话,dFP4(z)² ≤ ½z² + 1/32),所以"安静者"在离群者撑大的 scale 下,被量化的损失是可控的。

论文还给了一个"为什么挑低 RMS 作伴"的形式化证明:当离群 candidate 固定时,bad event 的上界里依赖 companion 的那一项就是 ∑rf²,于是选 G−1 个最小 RMS 通道确实最优。

数字:Qwen3-1.7B 几乎贴着 FP16

实验在 Llama3.1-8B、Llama3.2-3B、Qwen3-8B、Qwen3-1.7B 四个模型上跑,perplexity 拿 WikiText-2 测,下游任务取六个 zero-shot 平均,摘录自论文 Table 7:

模型 FP16 NVFP4 RTN OCGQuant
Llama3.2-3B 7.81 8.62 8.37
Llama3.1-8B 6.24 6.95 6.75
Qwen3-1.7B 16.67 19.25 16.71
Qwen3-8B 9.72 10.07 9.90

最亮眼的是 Qwen3-1.7B——RTN 把 PPL 从 16.67 顶到 19.25,OCGQuant 拉回 16.71,几乎贴着 FP16。同时相比同场竞技的 NVFP4 方案 ARCQuant,OCGQuant 在四个模型上都更低(ARCQuant 在 Llama3.1-8B 6.87,Qwen3-8B 10.35)。论文 Appendix 里还跑了 RPTQ-style(把 INT 时代的 channel clustering 直接搬到 NVFP4),结果在 Qwen3-1.7B 上甚至比 RTN 还差,说明为 INT 设计的重排规则在非均匀 FP4 格点上确实有副作用。

推理成本:prefill 接近 RTN,memory 不输 RTN

  • Prefill 吞吐(Llama3.1-8B,seq=2048,batch=16):FP16 11556 tokens/s,RTN 26838,OCGQuant 26439,接近 RTN;ARCQuant 只有 22784。论文里写"OCGQuant achieves up to 2.29× prefill speedup"对比的是 FP16 基准。
  • 解码显存(同模型同 batch=1):FP16 15.33 GB,RTN 6.02 GB,OCGQuant 6.02 GB;ARCQuant 6.86 GB,多出来的是它的残差通道。

换句话说,ARCQuant 用"多加一条残差路径"换精度,OCGQuant 用"重排 channel"换精度,后者在前向路径上几乎没新东西,所以显存贴着 RTN、prefill 速度贴着 RTN,在产线部署里这两个指标才是钱。

离线代价与可重复性

  • RMS profiling:43.52 s(Llama3.1-8B)/ 45.04 s(Qwen3-8B)
  • Companion 选择:0.55 s / 0.89 s
  • Reorder:1.97 s / 4.52 s
  • GPTQ 重建:248.55 s / 250.44 s
  • 合计 ~5 分钟 per 8B 模型

校准数据集和样本量的 robustness 也不错:在 WikiText-2 / C4 / Pile 三种校准集、64/128/256/512 四档样本量下,Qwen3-8B 的六任务平均准确率标准差在 0.10 上下,最大 0.24。128 个校准样本就够,多了也没更多收益。

一点看法

NVFP4 之所以被关注,是因为 Blackwell 之后的硬件把 4-bit 微缩变成原生算子——这件事已经在发生,所以软侧的 PTQ 方法最近半年密集冒头。OCGQuant 的价值不在"它多了一个 SOTA",而在"它给出了一条几乎不增加推理开销的工程化路径":重排是离线算的,运行时 channel permutation 是 fixed 的(论文里给了一个 fused CUDA kernel + contiguous reorder-segment fast path),不需要新算子、不需要混合精度、不需要新硬件。

后续值得关注的两件事:一是作者团队隶属的 Intellifusion 和 SCUT(华南理工)的组合,意味着国内在 NVFP4 工程化上正与 NVIDIA 路线同步推进;二是 channel-locality + cross-token persistence 的发现(论文 Figure 8)很硬核——离群 channel 是"贴着 channel 走的窄带",这意味着以后针对 NVFP4 的 outlier-aware PTQ 不必在每 token 上动态调,可以一次校准、长效使用。

一句话总结:NVFP4 的"陪葬误差"被一张 permutation 表治了,下一个问题是:当 8-bit 都不肯用、必须压到 FP4 的边缘推理场景,这套 channel-grouping 思路能不能跟着 NPU/TPU 一起卷过去。

参考资料: