问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

怎样根据模型参数量计算推理时需要的显存?

创作时间:
作者:
@小白创作中心

怎样根据模型参数量计算推理时需要的显存?

引用
1
来源
1.
https://caovan.com/zenyanggenjumoxingcanshuliangjisuantuilishixuyaodexiancun/.html

随着开源大模型的快速发展,如何根据模型参数量计算所需的显存成为了很多开发者关心的问题。本文将详细介绍这一计算方法,并通过具体案例进行说明。

基本计算方法

假设我们有一块3090 24G的显卡,最关心的是能运行多大规模的模型。目前,模型参数绝大多数都是float32类型,占用4个字节。因此,一个粗略的计算方法是:每10亿个参数占用4G显存(实际计算为10^9*4/1024/1024/1024=3.725G,但为了方便计算,我们可以近似为4G)。

例如,LLaMA模型的参数量为7000559616,全精度加载这个模型参数需要的显存为:

7000559616 * 4 / 1024 / 1024 / 1024 = 26.08G

不同精度下的显存需求

除了全精度(FP32),模型还可以使用半精度(FP16/BF16)、8位精度和4位精度。不同精度下,每个参数占用的字节数不同,从而影响显存需求。

  • 半精度(FP16/BF16):每个参数占用2个字节,所需显存降为全精度的一半。
  • 8位精度:每个参数占用1个字节,所需显存降为全精度的1/4。
  • 4位精度:每个参数占用0.5个字节,所需显存降为全精度的1/8。

具体案例分析

以Qwen1.5系列模型为例,该系列共推出了7个不同参数量的模型版本,分别是0.5B、1.8B、4B、7B、14B、32B、72B。以下是不同精度下所需的显存计算:

  • 全精度(FP32)

  • 0.5B:2G

  • 1.8B:7.2G

  • 4B:16G

  • 7B:28G

  • 14B:56G

  • 32B:128G

  • 72B:288G

  • 半精度(FP16/BF16)

  • 0.5B:1G

  • 1.8B:3.6G

  • 4B:8G

  • 7B:14G

  • 14B:28G

  • 32B:64G

  • 72B:144G

  • 8位精度

  • 0.5B:0.5G

  • 1.8B:1.8G

  • 4B:4G

  • 7B:7G

  • 14B:14G

  • 32B:32G

  • 72B:72G

  • 4位精度

  • 0.5B:0.25G

  • 1.8B:0.9G

  • 4B:2G

  • 7B:3.5G

  • 14B:7G

  • 32B:16G

  • 72B:36G

实际应用注意事项

需要注意的是,上述计算仅考虑了模型参数的显存需求。在实际推理过程中,还需要为模型运算时的一些临时变量(如beam search)预留空间。因此,在配置显存时,建议预留一定的Buffer,以避免出现显存不足(OOM)的情况。

参考资料:CSDN博客

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号