链载Ai

标题: 大模型:训练时GPU显存不足怎么办 [打印本页]

作者: 链载Ai    时间: 11 小时前
标题: 大模型:训练时GPU显存不足怎么办

前言

大模型时代对显存的要求越来越高,之前在BERT刚诞生时候写过一篇:GPU 显存不足怎么办?,新的这篇文章主要是重构之前的文章,来聊聊大模型时代显存不足时怎么办,没有看过的朋友直接看这篇即可。

 

训练时显存占用分析

训练模型时所占用的显存主要分为以下部分:模型权重参数优化器状态,梯度激活值。假定模型本身的大小为 A,且以 fp32 为精度计算。


模型权重参数

在模型显存为 A 的情况下,所占用的显存为:

优化器状态与梯度

        
    我们看到在 SGD 中,那么此时的显存占用只有梯度:
    我们看到在Momentum-SGD 中,不仅仅有梯度 ,还有动量

    

   我们看到在 Adam 中,需要保存的包括:当前梯度,梯度加权平均,梯度平方的加权平均

因此,假定模型大小为 A,训练中采用 FP32 精度进行优化,那么此时优化器状态和梯度占用的显存分别为:
而在实际的训练中往往采用混合精度训练,而在混合精度训练下的显存又有所区别。


激活值

激活值的显存占用与 token长度per_gpu_batch_sizehidden_size 以及 transformer层数 正相关,并且占用显存也非常大,此处就不细写了,主要是技术很复杂,我也没算明白,哈哈哈哈。

 

训练时显存不足怎么办?

下面列出一些常见的节省显存的操作,优先级从高到低排列
 
几个慎重选择的操作:

 

最后

ok,本文到此就结束了,本文主要是对之前文章进行了细化,并补充了大模型时代下的几种显存不足时的方法。
大模型时代来了,乞丐玩家是不是更多了啊,同学。
微信公众号不支持公式,太费劲了。

欢迎大家关注我的微信公众号:老宋聊AI。

 

参考

【1】https://zhuanlan.zhihu.com/p/31558973








欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5