当你的 GPU 学不会算账:FP4 训练里那个被忽视了 30 年的几何陷阱

2026 年,你终于拿到了一批 NVIDIA Blackwell GPU。市场宣传说原生 FP4 计算路径能让预训练成本砍半,你兴冲冲地把 124B MoE 模型切到 NVFP4 recipe,跑了两万步,然后盯着 TensorBoard 发呆——

一个价值十亿美元的异常损失曲线

2026 年,你终于拿到了一批 NVIDIA Blackwell GPU。市场宣传说原生 FP4 计算路径能让预训练成本砍半,你兴冲冲地把 124B MoE 模型切到 NVFP4 recipe,跑了两万步,然后盯着 TensorBoard 发呆——

损失曲线确实在下降,但始终比 BF16 基线高出一截。1.73% 的相对误差,不算灾难,可就是不肯收敛回去。

你检查了学习率、batch size、数据配比、梯度裁剪,全部正常。你换了一组超参,重跑,还是一样。你甚至怀疑是不是 PyTorch 版本有 bug。

你没想到的是,问题不在软件栈的任何一层。问题在那 4 个 bit 本身的几何形状里。

蚂蚁集团的 Ling 团队刚刚发布的一篇论文,把这个藏了多年的坑挖了出来,并给它起了个名字:Shrinkage Bias(收缩偏差)。它不是 bug,是数学。

E2M1:一块刻度不均的尺子

要理解这个坑,先得看清 FP4 到底长什么样。

4 bit 能表示 16 个值。NVIDIA 和 AMD 的 FP4 硬件路径都围绕一个叫 E2M1 的格式设计:2 位指数,1 位尾数。它的非负值集合是:

{0, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0}

乍一看挺合理——小数密集、大数稀疏,符合浮点数的直觉。但如果你把这些值画在一根数轴上,会看到一种诡异的"拉伸":0 到 2 之间挤了 5 个刻度,2 到 6 之间只有 3 个,而且间距不均。

这就是问题的起点。

量化做的事很简单:给定一个真实值 x,找到最近的刻度 q。在"最近"这件事上,每个刻度 q 都有一个"管辖区间"——它左右各延伸到相邻刻度的中点。

关键来了。对于均匀刻度(比如 INT4 的 {0,1,2,3,...}),每个刻度的左右区间宽度相等。但对于 E2M1,在刻度过渡点,左右区间严重不对称。

以 q=2.0 为例:

  • 左邻是 1.5,右邻是 3.0
  • 左区间宽度 = (2.0 - 1.5)/2 = 0.25
  • 右区间宽度 = (3.0 - 2.0)/2 = 0.5
右区间是左区间的两倍宽。

这意味着什么?假设真实值在这个刻度的管辖区间内均匀分布,那么落在右侧(被向下舍入到 2.0)的概率远大于落在左侧(被向上舍入到 2.0)。期望舍入误差为 (左宽 - 右宽)/2 = -0.125。

负号是致命的。它意味着:每一次舍入,都在系统性地把数值往零的方向拉。

这就是 Shrinkage Bias。

复利效应的反向版本

单次 -0.125 的偏差看起来微不足道。但神经网络有几百层,每一层都在做矩阵乘法(GEMM),每一次 GEMM 的两个操作数都要被量化。

论文给出了一个精确的推导。把量化后的操作数分解为原始信号和噪声的正交叠加:

 = α_A · A + R_A    (α_A < 1 表示信号衰减)
B̂ = α_B · B + R_B

那么 GEMM 的输出:

Z_q = Â · B̂ᵀ = α_A·α_B · Z + 噪声项

主信号被乘以了 η ≈ α_A · α_B < 1。

一层衰减一点,K 层连乘起来:

∏(k=1..K) η_k ≈ exp(-Σ δ_k)

这是复利公式,只不过方向反了——不是利滚利,而是衰减滚衰减。100 层网络,每层衰减 1%,最终信号只剩 37%。每层衰减 2%,只剩 13%。

这就是为什么 FP4 训练的损失曲线始终高于 BF16——不是噪声太大,而是信号在系统性流失。

治病药反而喂养了病菌

故事到这里还没完。工业界其实已经知道 FP4 训练不稳定,NVIDIA 的 NVFP4 recipe 引入了两个"稳定剂":

1. Random Hadamard Transform (RHT):在量化前对张量做一次随机正交旋转,把离群值(outlier)的能量打散到所有坐标上 2. Stochastic Rounding (SR):舍入时按概率选择上取整或下取整,保证期望无偏

直觉上,RHT 应该有帮助——离群值是量化的天敌,打散它们能让张量分布更均匀,量化误差更小。

但论文发现了一个反直觉的现象:RHT 在 E2M1 下反而让事情变得更糟。

为什么?因为 RHT 把离群值打散后,张量从"被离群值主导"变成了"被密集的中等幅度值主导"。而这些中等幅度值,恰好大量落在 E2M1 最不对称的那些舍入区间里(比如 q=2.0 和 q=4.0 附近)。

RHT 提高了"桶利用率"(bucket utilization),让 16 个刻度都被充分使用。但在 E2M1 下,利用率越高,接触到的非对称区间越多,Shrinkage Bias 越严重。

这就像你给病人开了一味提升免疫力的药,结果发现病原体恰恰靠免疫系统繁殖。药是对的,但只在特定的病理环境下有效——而这个环境,恰好是 E2M1 造成的。

论文用一张图直观展示了这个悖论:对 outlier-heavy 的张量,RHT 前的 E2M1 量化质量(SQNR 21.90 dB)优于 E1M2(19.94 dB);RHT 后,优劣反转——E1M2(23.19 dB)大幅领先 E2M1(20.00 dB)。

RHT 改变了游戏规则,但 E2M1 没有跟着变。

UFP4:换一把尺子

解决方案出奇地简单:换一把刻度均匀的尺子。

E1M2 格式(1 位指数,2 位尾数)的非负值集合是:

{0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5}

完全均匀。每个刻度的左右区间宽度相等,Shrinkage Bias 在源头被消除。

基于这个观察,论文提出了 UFP4 recipe:

配置E2M1 基线UFP4 (E1M2)
格式E2M1E1M2/INT4 均匀网格
量化块大小1×161×16
尺度层级FP32 单层FP32 单层
RHT 覆盖范围仅 bwd_dwfwd_y + bwd_dx + bwd_dw
随机舍入范围dYdY
注意最关键的一行:RHT 覆盖范围。

在 E2M1 recipe 里,RHT 只敢用在权重梯度(bwd_dw)这一条路径上——因为前向和反向传播的输出会跨层累积,如果在这些路径上用 RHT,Shrinkage Bias 会被复利放大。NVFP4 的工程师不是不知道 RHT 有用,而是不敢用。

UFP4 换成均匀网格后,Shrinkage Bias 消失了,RHT 终于可以放心地铺到所有三条 GEMM 路径上。药还是那味药,只是病根被拔掉后,药终于能发挥作用了。

消融实验的数据很漂亮:

RHT 配置 (E1M2)平均 LM lossΔloss
无 RHT1.892020
仅 bwd_dw1.88721-0.00481
bwd_dx + bwd_dw1.88912-0.00290
fwd_y + bwd_dw1.88558-0.00644
全 RHT (UFP4)1.88079-0.01123
从无 RHT 到全 RHT,loss 降了 0.01123。加上随机舍入,再降 0.00456。每一步都在改善,没有一步是"药效反噬"。

124B MoE 上的验证

论文在三个规模上做了长周期预训练验证:

模型E2M1 基线相对误差UFP4 相对误差改善
Dense 1.5B1.2570%0.9673%-23.1%
MoE 7.9B2.3596%1.8469%-21.7%
MoE 124B1.7308%1.3863%-19.9%
三个规模上一致改善约 20%。Scaling law 拟合显示,这个优势在更大规模下不会消失。

还有一组实验特别有意思:能不能在 E2M1 上通过限制范围来"模拟"均匀网格?比如把 E2M1 的最大值限制在 2.0,只用 {0, 0.5, 1.0, 1.5, 2.0} 这 5 个值——这确实是均匀的。

结果:不行。限制范围后虽然避开了非对称区间,但也牺牲了动态范围和桶利用率,所有测试变体都比 E2M1 基线更差。

这说明问题的本质不是"能不能在 E2M1 上打补丁",而是均匀网格必须是原生的、完整的 16 个值。硬件必须支持。

工程视角:这对我意味着什么

这篇论文的工程含义分三层:

对芯片设计者:NVIDIA Blackwell/Rubin 和 AMD MI350 都把 E2M1 作为 FP4 的唯一一等公民。这篇论文说,这个选择需要重新审视。E1M2/INT4 风格的均匀网格应该作为 FP4 训练的一等数据元素被硬件原生支持。值得注意,华为 Ascend 960 上的 HiFloat4 格式恰好采用了均匀的 S1P2 数据元素——这可能是一个意外的先发优势。

对训练框架开发者:如果你在实现 FP4 recipe,不要无脑跟 NVFP4。在 RHT 能用的地方,均匀网格 + 全路径 RHT 是更优解。UFP4 的 fused kernel 实现显示,RHT + 量化的融合算子只比单独量化慢 6-7%,开销可接受。

对模型训练者:短期内,如果你的硬件只支持 E2M1,论文的结论是"限制 RHT 在 bwd_dw 路径"仍然是最稳妥的选择。但如果你有均匀网格的硬件路径(或软件模拟),UFP4 recipe 可以直接拿来用——论文的消融已经证明了每个组件的独立贡献。

一个更深的启示

这篇论文让我想到一个更普遍的问题:我们有多少"工程直觉"其实是未经审视的默认选择?

E2M1 成为 FP4 的事实标准,不是因为它被证明是最优的,而是因为它对推理场景(outlier-heavy、动态范围优先)有利,然后被惯性带到了训练场景。训练场景的张量分布完全不同,但没人系统地问过"这个格式还合适吗"。

Shrinkage Bias 不是一个小 bug。它是一个被默认设置掩盖了多年的系统性设计缺陷。它没有导致训练崩溃(所以没人报警),只是安静地吃掉了 1-2% 的训练质量——在千亿 token 的规模上,这是真金白银。

论文最精彩的一笔是揭示 RHT 悖论:一个被广泛使用的稳定化技术,在特定的格式几何下,反而成了不稳定的放大器。这种"药-病反转"在系统设计中并不罕见,但往往要等很多年才有人有勇气去质疑"标准做法"。

UFP4 的方案出奇地简单——换一个均匀网格。但发现问题的洞察力,和证明它确实解决问题的实验规模(124B MoE 长周期训练),是蚂蚁集团 Ling 团队实打实的工程功力。

有时候,最优解不是加法,而是减法——去掉那个"看起来合理但其实有毒"的默认选择。


论文:Rethinking Shrinkage Bias in LLM FP4 Pretraining: Geometric Origin, Systemic Impact, and UFP4 Recipe arXiv:2606.20381 团队:Ant Group / Ling Team 代码:暂未开源(论文引用了 HiFloat4 在 Ascend 960 上的原生支持作为未来硬件方向)

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens