Softmax的数值稳定性:为什么一行简单的代码能让训练崩溃
你花了数天清洗数据,精心调参,终于启动了训练。Loss曲线漂亮地下降,一切似乎都很顺利。突然,屏幕上跳出一个刺眼的 nan——整个训练过程在瞬间崩溃。 ...
你花了数天清洗数据,精心调参,终于启动了训练。Loss曲线漂亮地下降,一切似乎都很顺利。突然,屏幕上跳出一个刺眼的 nan——整个训练过程在瞬间崩溃。 ...
2019年某天凌晨三点,一位研究生的模型训练在运行72小时后突然输出全NaN。损失函数从平稳下降变成无穷大,权重变成NaN,一切归零。这是深度学习开发者的噩梦——数值不稳定。这不是偶然,而是浮点数表示固有的物理限制在特定条件下的必然爆发。 ...
训练大模型时,显存总是第一个瓶颈。以一个拥有70亿参数的LLaMA 7B模型为例,仅存储FP32权重就需要约28GB显存。再加上梯度、优化器状态和中间激活值,即使是一张A100 80GB显卡也可能捉襟见肘。 ...
你正在训练一个Transformer模型,Loss曲线稳定下降,一切看起来都很顺利。然后你决定启用混合精度训练来加速——只需一行代码.half()。100步之后:Loss: NaN。训练彻底崩溃。 ...
2017年,NVIDIA和百度研究院联合发表了一篇题为《Mixed Precision Training》的论文,展示了如何用16位浮点数训练深度神经网络。论文中有一个不起眼的细节:训练某些网络时,需要将损失值放大8到32768倍,否则梯度会变成零。 ...