代码拉取完成,页面将自动刷新
0.基础知识
1GB=1024MB
1MB=1024KB
1KB=1024Byte
1Byte=8Bit
FP32 32Bits, 4Bytes
FP16 16Bits, 2Bytes
1G参数的模型:
FP32加载:占用4*1G显存
FP16加载:占用2*1G显存
1.模型训练的总内存(以混合精度训练为例)
Step1:优化器会先备份一份FP32精度的模型权重,初始化好FP32精度的一阶和二阶动量(用于更新权重)。
Step2:开辟一块新的存储空间,将FP32精度的模型权重转换为FP16精度的模型权重。
Step3:运行forward和backward,产生的梯度和激活值都用FP16精度存储。
Step4:优化器利用FP16的梯度和FP32精度的一阶和二阶动量去更新备份的FP32的模型权重。
模型训练的总内存 = 模型内存 + 梯度内存 + 优化器内存 + 激活值内存 + 其他(缓冲区、显存碎片等)
2.模型参数
Llama13B
1B=1000^3
1GB=1024^3byte
FP16: 13^2=26GB
3.优化器
Llama13B
Adam
模型参数:13*4 = 52GB
梯度指数平滑值:13*4 = 52GB
梯度平方指数平滑值:13*4 = 52GB
一共156GB
4.梯度值
Llama13B
FP16:
13B * 2 = 26G
5.激活值
Llama13B
s 序列长度:1024
b batch size:1
h 隐藏层大小:5120
a 注意力头:40
L 层数:40
FP16:
s * b * h * (34 + 5 * a * s/h) * L/1024/1024/1024 GB
=14.5GB
6.总结
Llama13B BatchSize=1, Seq_Len=1024, FP16
模型参数: 26GB
优化器: 156GB
激活值: 14.5G (和BatchSize, Seq_len相关)
梯度值: 26GB
合计: 222.5GB
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。