跳转至

附录 E 显存与速度速算表

第 4 章三个公式的汇总卡片,建议单独印一页随身用。

权重显存

权重显存 = P × 每参数字节数

精度 每参数字节 8B 模型 70B 模型
fp32 4 32 GB 280 GB
bf16 2 16 GB 140 GB
int8 1 8 GB 70 GB
int4 0.5 4 GB 35 GB

MoE 模型按总参数代入,不是激活参数。 训练显存 ≈ 权重 + 梯度 + 优化器两份状态 + 激活,约为推理的 6–8 倍。

KV 显存

KV 字节数 = 2(K和V)× 精度字节 × L × n_kv × d_h × n × B

先算"每 token 每层"的基本单位,再乘层数:

配置 每 token 每层 每 token 全模型 32K 单请求
MHA, h=32, d_h=128, L=36, bf16 16 KB 576 KB 19 GB
GQA, n_kv=8, d_h=128, L=36, bf16 4 KB 144 KB 4.8 GB
3:1 混合(仅 9 层产生 KV) 4 KB 36 KB 1.2 GB

线性 / 状态层只有与长度无关的固定状态,估算时可忽略。

计算量

每 token FLOPs ≈ 2 × P_激活 + 4 × L × n × d

前项是权重相关(decode 时的访存主体),后项是注意力的长度相关项。 序列越长后项占比越高;判断某个注意力优化值不值得,先比这两项的大小。

训练总 FLOPs ≈ 6 × P × 训练 token 数

判断瓶颈

算术强度 = 计算量 / 访存量,与硬件的"算力÷带宽"比值相比:

  • 高于硬件比值 → 算力受限(prefill、大 batch 训练)
  • 低于硬件比值 → 访存受限(decode、batch=1 推理)

decode 阶段几乎总是访存受限,这是第 9、14、15 章一系列设计的共同前提。