🧠 图解记忆:先算权重,再加 KV、激活与运行开销;点击图片可查看原图。
核心公式:显存(GB)≈ 参数量 × 每参数字节数
推理显存估算(面试必答)
| 精度 | 每参数字节 | 7B 模型权重显存 |
|---|---|---|
| FP32 | 4 bytes | 28 GB |
| FP16/BF16(主流) | 2 bytes | 14 GB |
| INT8 量化 | 1 byte | 7 GB |
| INT4 量化 | 0.5 byte | 3.5 GB |
python
# 推理权重显存
params_b = 7
for name, bytes_p in [("FP32", 4), ("FP16", 2), ("INT8", 1), ("INT4", 0.5)]:
gb = params_b * 1e9 * bytes_p / 1024**3
print(f"{name}: {gb:.1f} GB")
# FP32: 26.1 GB / FP16: 13.0 GB / INT8: 6.5 GB / INT4: 3.3 GB(按 1e9 换算)
# 更常见的近似说法:7B × 2B ≈ 14GB(按 1024³ 精算约 13GB)注意:推理实际显存 = 权重 + KV Cache + 激活值(KV Cache 见 Q30,长上下文时可能超过权重本身)
训练显存估算(难度升级)
| 组件 | 每参数字节 | 7B 全参训练 |
|---|---|---|
| 权重 | 2 bytes | 14 GB |
| 梯度 | 2 bytes | 14 GB |
| Adam 优化器状态 | 12 bytes(2×动量 + 8×方差,FP32) | 84 GB |
| 合计 | 16 bytes | ≈ 112 GB(需 8×A100 80G) |
如何用少量显存训练大模型?
- LoRA:只训练 ~0.1% 参数(7B 只训约 830 万参数),显存需求从 112GB → ~16GB
- QLoRA:4-bit 量化基座 + LoRA,24GB 消费级显卡即可微调 7B
- ZeRO / 张量并行:多卡分摊(显存不够,卡数来凑)
面试话术:
"显存估算的核心是'参数×字节数':7B 模型 FP16 推理要 14GB,INT4 只要 3.5GB;但全参训练要 16 字节/参数,7B 就要 112GB,所以训练必须上 LoRA——只训 0.1% 的参数,24G 显卡就能微调 7B。面试官问'为什么下载的模型 14G 一跑起来显存超了',答案就是还有 KV Cache 和激活值。"
