FP32:32Bit,4个字节
FP16:32Bit,2个字节

1. 输入输出

batch_szieSequencehidden size * 2/1024/1024
一条的大小约为20M
可忽略不计

2. 模型参数

以Llama13B为例,1B=100031000^310003,1GB=102431024^310243byte FP16:13*2=26GB

3. 优化器

以Adam为例,需要保存梯度动量和二阶矩,而且是FP32,占用了13*4=52GB。‘

优化器必须使用FP32,防止小数相加sum或者mean操作后,变为0等问题。
并且还要保存模型参数13*4=52GB
一共需要156GB

4. 激活值

为了梯度传播,前向传播的激活值都要保存。这一部分与batch_size有关。

5. 梯度值

梯度使用FP16,一共13*2=26B

在这里插入图片描述
除了输入输出,激活值跟batchsize有关,其他一般都较为固定。一般显存占用就是8倍的模型大小。也可以直接使用多少B16,例如13B模型,约等于1316=208。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐