1.显存去哪了?三大块

部署一个LLM做推理,显存被三样东西吃掉:

显存占用项

说明

占比

模型权重

参数量 x 每参数字节数

约 65%~80%

KV Cache

缓存每层attention的key/value,随序列长度和并发数线性增长

约15%~30%

激活值/中间结果/框架开销

推理临时张量+框架自身开销(CUDA context等)

约2%~5%

公式:总显存 = 模型权重 + Kv cache + 激活/开销

2.模型权重的精确计算

2.1基本公式

权重显存(GB) = 参数量 x 每个参数的字节数

2.2常见进度对照表

精度

每个参数字节数

说明

FP32

4 Bytes

全精度,训练常用

FP16

2 Bytes

半精度,推理标配

BF16

2 Bytes

同FP16,但动态范围更大

FP8

1 Bytes

Hopper 框架原生支持

INT8

1 Bytes

量化推理

INT4

0.5 Bytes

极低精度量化

2.3 实例速算

模型规模

FP32

FP16/BP16

FP8/INT8

INT4

7B

28G

14G

7G

3.5G

70B

280G

160G

70G

35G

所以A100 (80G) 用FP16 ,单卡最多装 约40B 参数量的模型(因为还要预留空间给KV cache)

3.KV Cache的精确计算

3.1 公式

KV Cache (Bytes) = 2 x 层数 x 头数 x 每头维度 x 序列长度 x 每个参数字节数 x 并发数

简化版(更实用)

KV Cache (Bytes)= 2 x (hidden_size x 层数 x 序列长度 x 并发数 x 精度字节数) / (1024 ** 3)

估算版

KV Cache (Bytes)= 参数量(B) x 序列长度(tokens) x 并发数 x 0.0013 (FP16的经验系数0.0013)

3.2 具体例子:Llama-2-7B, FP16

  • hidden_size = 4096, 层数 = 32, 头数 = 32,每头维度 = 128
  • 单token且单并发的 KV Cache = 2 x 32 x 32 x 128 x 2 Bytes = 512KB
  • 序列长度4096,并发1: 512KB x 4096 = 2G
  • 序列长度4096,并发8:2G x 8 = 16G

所以 A100 80G 跑Llama-2-7B FP16:

权重14B + KV Cache(8并发,seq 4096, 约16G) = 30G, 所以运行轻松。

3.3 再算:Llama-2-70B, FP16

  • 权重约140GB, 单卡装不下权重本身,必须多卡或者量化。

4.回到考题:A100 80G 能部署多大模型

4.1 分析思路

步骤1:确定精度1(FP16 / FP8 / INT4),算出纯权重占用

步骤2:估算KV Cache (给定序列长度,并发数)

步骤3:加5%的框架开销

步骤4:看是否 小于80G

4.2 FP16场景

纯权重:A100 80G 下 FP16模型权重的理论上限 = 80G / 2 = 40B 参数。

但预留KV Cache空间之后:

场景

可行模型

低并发(seq=2048, 并发=1)

最多 约34B (留12GB给 KV Cache)

中并发(seq=4096, 并发=4)

最多 约20B (留40GB给 KV Cache)

高并发(seq=8192, 并发=8)

最多 约13B (留54GB给 KV Cache)

4.3 FP8 / INT8 场景(量化)

模型

FP16 权重

FP8 权重

省下的显存

能否单卡 A100 80G

7B

14 GB

7 GB

7 GB

✅ 非常轻松

13B

26 GB

13 GB

13 GB

✅ 轻松

32B

64 GB

32 GB

32 GB

✅ 可跑,有空间给 KV Cache

70B

140 GB

70 GB

70 GB

⚠️ 权重占满,KV Cache 极受限

72B

144 GB

72 GB

72 GB

⚠️ 同上

4.4 INT4 场景

模型

INT4 权重

能否单卡 A100 80G

70B

35 GB

✅ 可跑,留 45 GB 给 KV Cache

72B

36 GB

✅ 可跑

405B

202.5 GB

❌ 单卡不行,需 3 卡

5.量化到底能省多少显存?

5.1 省的比例

省显存 = 1 - (量化精度字节 / 原始精度字节)

转换

省显存比例

示例(70B 模型)

FP32 → FP16

50%

280 GB → 140 GB,省 140 GB

FP16 → INT8

50%

140 GB → 70 GB,省 70 GB

FP16 → INT4

75%

140 GB → 35 GB,省 105 GB

FP32 → INT4

87.5%

280 GB → 35 GB,省 245 GB

5.2 量化不只省显存

  • 显存带宽利用率提升:每 token 需要搬运的字节数减少 → decode 阶段加速(memory-bound 场景)。
  • 吞吐提升:更小的模型 → 更大的 batch size。
  • 精度损失:INT8 几乎无损,INT4 有轻微损失(可用 AWQ/GPTQ 缓解)。

6.多卡场景速算

GPU 组合

总显存 (FP16 可用)

能跑的最大模型

2 × A100 80G

160 GB

70B FP16(权重 140 GB + 20 GB KV Cache)

4 × A100 80G

320 GB

70B FP16(轻松,可高并发)

8 × A100 80G

640 GB

405B FP16(权重 810 GB 不够)→ 需 INT8/INT4 或更多卡

1 × H100 80G

80 GB

同 A100,但推理更快(更高带宽)

1 × H200 141G

141 GB

70B INT8(70 GB + 71 GB KV Cache,可高并发)

更多推荐