Softmax的数值稳定性:为什么一行简单的代码能让训练崩溃

你花了数天清洗数据,精心调参,终于启动了训练。Loss曲线漂亮地下降,一切似乎都很顺利。突然,屏幕上跳出一个刺眼的 nan——整个训练过程在瞬间崩溃。 ...

15 min · 7071 words

浮点数的深渊:深度学习数值稳定性的完整解析

2019年某天凌晨三点,一位研究生的模型训练在运行72小时后突然输出全NaN。损失函数从平稳下降变成无穷大,权重变成NaN,一切归零。这是深度学习开发者的噩梦——数值不稳定。这不是偶然,而是浮点数表示固有的物理限制在特定条件下的必然爆发。 ...

17 min · 8385 words

混合精度训练:为什么用一半精度反而能训练更好的模型

训练大模型时,显存总是第一个瓶颈。以一个拥有70亿参数的LLaMA 7B模型为例,仅存储FP32权重就需要约28GB显存。再加上梯度、优化器状态和中间激活值,即使是一张A100 80GB显卡也可能捉襟见肘。 ...

13 min · 6208 words
Blog Cover

Softmax的数值稳定性问题:从溢出下溢到Log-Sum-Exp技巧的完整解析

你正在训练一个Transformer模型,Loss曲线稳定下降,一切看起来都很顺利。然后你决定启用混合精度训练来加速——只需一行代码.half()。100步之后:Loss: NaN。训练彻底崩溃。 ...

9 min · 4348 words

BF16为何正在取代FP16成为大模型训练的标准格式从动态范围陷阱到损失缩放的技术突围

2017年,NVIDIA和百度研究院联合发表了一篇题为《Mixed Precision Training》的论文,展示了如何用16位浮点数训练深度神经网络。论文中有一个不起眼的细节:训练某些网络时,需要将损失值放大8到32768倍,否则梯度会变成零。 ...

9 min · 4389 words