大模型不同参数下的模型显存计算公式

推理:显存计算

  • 推理的显存大头就是:参数量,参数类型版本一般有以下四种:

float 32位 浮点数 4 字节
half / BF16 16位 浮点数 2 字节
int8 8位 整数 1 字节
int4 4位 整数 0.5 字节
以 7B-BF16 版本为例,需要显存 = 数量 * 类型大小 = 70亿 * 2字节 = 140亿字节

  • 所以,7B-BF 就是 7 * 2 = 14 GB 的显存,因为除了参数,推理还需要另外的显存,溢出一点没坏处。
  • 因此,只对模型进行推理,所需要的显存具体如下:

7B参数的4种常见类型所需推理显存计算如下:
float 7 * 4 = 28 GB
half / BF16 7 * 2 = 14 GB
int8 7 * 1 = 7 GB
int4 7 * 0.5 = 3.5 GB
13B参数的4种常见类型所需推理显存计算如下:
float 13 * 4 = 52 GB
half / BF16 13 * 2 = 26 GB
int8 13 * 1 = 13 GB
int4 13 * 0.5 = 6.5 GB

训练:显存计算

  • 为了让模型收敛,训练的参数类型不能是 int8 / int4;一般是 float,效果差点的 就用 BF16;
  • 训练主要的参数包括,反向传播 / Adam-优化 / Transformer架构 等因素,一般来说,训练需要的显存,是同样规模 LLM 推理 的 3-4倍
  • 具体的计算如下所示:

保守估计,按 4倍 计算。
7B 训练需要的显存,估算结果:
参数类型 所需显存
float 7 * 4 * 4 = 112 GB
half / BF16 7 * 2 * 4 = 56 GB

  • 具体的各个参数如下:

梯度:参数量的1倍
优化器的状态:参数量的2倍
用 AdamW 优化器,需要2倍 参数量;
SGD 优化器,需要 1倍 参数量;

关于 LoRA / QLoRA 显存,以 LoRA 为例:

LoRA 只需要给原始模型做推理,训练一个更小的模型来实现和训练原始参数差不多的效果。

例:原本需要微调1024×512的参数,用了LoRA之后,如果选择的 Rank=8,则只需要微调这么多参数:1024×8+512×8

在这个基础上跑一次原始参数量的推理(不需要梯度和优化器状态,但仍然需要一些显存来存储运算过程的数据),合起来就是LoRA的所需要的显存。

  • 12
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只红花猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值