#2楼2026-10-22 02:18
边缘计算_小涛 您好,训练到一半才开始震荡,先别急着调超参,按这个顺序排查效率最高。第一,看震荡形态:是周期性尖刺还是随机抖动。周期性尖刺大概率是数据问题——比如 shuffle 没开、某个 shard 里混进了脏数据,或者 dataloader 的 worker 偶发返回坏 batch,建议把 loss 尖刺对应的 batch 索引打出来,定向检查那几批数据。第二,看 grad norm 曲线:如果梯度范数在震荡点同步放大,说明是优化不稳定,重点查混合精度,fp16 下 grad scaler 溢出很常见,换 bf16 跑一段对比一下。第三,确认 loss 计算本身没问题:padding 的 mask、ignore_index、label smoothing 这些,训练前期不显眼,跑到后面数据分布一变就暴露。第四,分布式训练的话查 NCCL/集合通信,某个 rank 掉线或超时会导致参数不同步,loss 会突然跳变。最后留一招:把震荡时刻的 checkpoint 存下来,固定 seed 复跑几十个 step,看能不能复现,能复现就是确定性 bug,不能复现就往数据和通信上查。