关于如何计算大模型训练所需的GPU显存大小

引用外网的一篇文章《The Complete Guide to GPU Requirements for Training and Inference of LLM》,这里做一个学习总结。
大模型训练所需的显存总量由以下几个部分组成:

  1. 模型参数,model parameters ,指的是神经网络中那些可以学习的组成部分。通过最小化损失函数(loss function)来实现更新,一般是 weight 和 bias。
  2. 激活层,activations,指的是输入数据通过网络时每一层之间的数据传输。在输入数据前向传播阶段,每一层结合weight 和 bias 进行计算,然后通过激活函数(例如ReLU,sigmoid等)来产生激活数据,这些激活数据作为下一层的输入。
  3. 梯度,gradients,梯度是损失函数相对于模型参数的偏导数。决定了每个参数应调整多少以最小化损失函数。
  4. 优化器,optimizer,优化器状态是由某些优化算法(如Adam、RMSprop)维护的附加变量,以提高训练效率。这些状态根据过去的梯度帮助更新模型参数。

采用不同类型的数据类型,每个参数(parameter)的大小也不同:

  1. float,32-bit floating point:每个参数占4个字节(byte)。
  2. half/BF16,16-bit floating point:每个参数占2个字节。
  3. int8,8-bit integer:每个参数占1个字节。
  4. int4,4-bit integer:每个参数占0.5个字节。

模型参数的显存计算

计算公式为
M=P∗432/Q∗1.2 M=\frac{P*4}{32/Q} * 1.2 M=32/QP41.2
其中PPP是参数个数,例如:1B的模型参数量就是10亿,也就是 1∗1091*10^91109QQQ 是所选择的bit数,例如前面提到的32bits,16bits,8bits,4bits。假设要训练一个基于 16bits 构建的 Llama 70B 模型。
M=70∗109∗4bytes32/16∗1.2=(140∗109bytes)∗1.2=168GB M=\frac{70*10^9*4bytes}{32/16}*1.2=(140*10^9bytes)*1.2=168GB M=32/167010

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值