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——训练「看起来健康」不代表梯度正确。

修复:GProj

作者提出 gauge projection(GProj),在舍入后恢复该守恒律。实验中 query/key 梯度精度和最终 loss 与 FP32 attention 相当,仅增加约 4.7% 的每步耗时。单独用 FP32 重算两层 attention backward 即可消除几乎全部多余梯度。

> 训练看着没问题?也去查一查 backward pass。

原文链接 →

「Infra」频道最新

更多「Infra」频道 AI 资讯 →