BF16 舍入破坏守恒律,FlashAttention 梯度训练后期爆炸
HongyiWang10 · x · 2026-10-04
BF16 注意度的隐性梯度 bug
Rutgers 团队用 FlashAttention-3 以 BF16 预训练一个 450M 参数、50B token 的 transformer 时发现:训练前 25B token 一切正常,随后梯度范数暴涨 1000 倍,最终 loss 比 FP32 attention 高 0.2 nats,且全程没有一个 NaN——训练「看起来健康」不代表梯度正确。
- 根因一:forward softmax 中的 fused multiply-add 舍入误差(此前被当作极端输入的 NaN 场景,从未修复)。
- 根因二:BF16 舍入破坏了 softmax 梯度每行和为零的守恒律,泄漏出均值 key 进梯度;训练后期 key 变大、attention 变尖锐时泄漏恰好放大。
修复:GProj
作者提出 gauge projection(GProj),在舍入后恢复该守恒律。实验中 query/key 梯度精度和最终 loss 与 FP32 attention 相当,仅增加约 4.7% 的每步耗时。单独用 FP32 重算两层 attention backward 即可消除几乎全部多余梯度。
> 训练看着没问题?也去查一查 backward pass。
「Infra」频道最新
- Will Chamberlain:若 AGI 同期到来,数据中心建设的激进程度本会收敛 — willcb · 2026-10-04
- UBS 预测 2030 年全球机架部署将达 104.5 GW,Nvidia 占 50.5 GW — AccBalanced · 2026-10-04
- 马斯克称 xAI 明年底算力扩至 10GW,AI 推理将移向太空 — beffjezos · 2026-10-04
- 玩家用 BC-250 成功跑通 PyTorch CUDA 训练并做成系统镜像 — redfoxkiller · 2026-10-04
- 华为 950 超节点宣称支持 550B、1.6T 扩展至 10T 级模型训练 — teortaxesTex · 2026-10-04
- 64GB 内存之痛:Strata 让本地跑 Qwen3.8-Flash-Next 提速到 60 t/s — Cautious_Chicken_604 · 2026-10-04