混合精度AMP

优点

  1.显存占用少

  2.训练更快

缺点

  1.数据溢出 -> 在训练后期激活函数的梯度会非常小,在梯度乘以学习率后,值会更加小。可能会导致下溢出

  2.舍入误差 -> FP16 最大范围是 [-65504 - 66504],虽然最小精度为 2-24,该精度不是在范围内各个区间都支持,例 在[2-3,2-2]区间内,最小精度为2-13,此时2-3+2-14=2-3就会出现舍入错误的情况发生

解决办法

  1.对Loss进行放缩s倍,放缩过后的梯度,就会平移到 FP16有效的展示范围内。这样就可以一直使用 FP16进行存储了,并且只有在进行参数更新时才会转换为FP32,同时缩放s倍,AMP默认使用动态损失放大,为了充分利用FP16的范围,缓解舍入误差,尽量使用最高的放大倍数224,如果产生了上溢出(Overflow),则跳过参数更新,缩小放大倍数使其不溢出,在一定步数后(比如2000步)会再尝试使用大的scale来充分利用FP16的范围

     2.前向、后向传播时使用FP16、参数更新时使用FP32。虽然会用FP32复制一份权重,不过只要batchsize不是非常小,显存占用还是能降低不少

posted on   夏天只喝脉动  阅读(152)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示