首页 > 内存知识 >

大模型背后的秘密:轻松理解参数与内存占用小知识

时间:2025-04-01 06:46:21

谈及大模型,时常能够目睹诸如模型的参数规模为 9B、13B、70B……之类,那么这“B”究竟所指何意?FP32、TF32、F16、BF16 又意味着什么?不同的模型参数规模在推理时究竟需要多少 GPU 显存?训练时又需要多大的显存?接下来,让我们以最为直白的方式揭开这些的神秘面纱吧!

“B”究竟所指何意?

“B”乃是大模型参数规模的表征:1B 意味着 10 亿参数。通常来讲,模型的参数量越大,其准确性便越高,也就越‘智能’;

FP32、TF32、F16、BF16 又意味着什么?

一个浮点数由三部分构成:符号位、指数位、尾数位。

  • 符号位皆为 1 位(0 :正,1:负);
  • 指数位对浮点数的范围产生影响,小数位则关乎精度;
  • TF32并非具有 32bit,实则仅有 19bit,切不可记错。
  • BF16 指的是 Brain Float 16,由 Google Brain 团队所提出。

FP32、TF32、F16、BF16

不同的模型参数规模在推理时究竟需要多少 GPU 显存?

有个简化的计算公式:

M = (P*4B)*(32/Q)*1.2
  • M:GPU内存(单位:GB)
  • P:模型参数规模(单位:十亿,B)
  • Q:量化位数(32位,16位,8位,4位)
  • 1.2:20%开销因子

以运行16位精度的 chatglm-9b 模型所需的 GPU 内存为例,套用公式:

该模型有 90 亿参数:M = (9 ∗ 4) / (32 / 16) ∗ 1.2 ≈ 21.6 GB

4 位量化的 chatglm-9b:M = (9 ∗ 4) / (32 / 4) ∗ 1.2 ≈ 5.4GB

通常而言,量化是一种缩减内存占用的方式,不过,这需要审慎使用,以维系模型的性能,毕竟降低精度或许会对输出的准确性造成影响。

训练时又需要多大的显存?

比如我们训 7B 模型以 8 卡为单位 8*8 卡训,70B 模型以 80 卡为单位 80*6 卡训,Llama Factory里给出训练任务的显存预估表格,可以参考一下: