← 返回题库
基础理论中等

Transformer 推理 FLOPs 与参数量如何估算?

#FLOPs 估算#参数量#计算量#训练算力

题目

给定一个 LL 层、隐藏维度 dd、词表 VV 的 Decoder-only 模型,如何估算其参数量与训练/推理 FLOPs?

参考答案

参数量估算(忽略 bias):

每层包含:

  • 注意力:Q/K/V/O 四个矩阵,各 d×dd \times d,共 4d24d^2
  • FFN:标准两层 d4ddd \to 4d \to d,参数 2×d×4d=8d22 \times d \times 4d = 8d^2(用 SwiGLU 则 3×d×h3 \times d \times hhh 为中间维度,常约 83d\frac{8}{3}d)。
  • LayerNorm/RMSNorm:可忽略。

故每层约 12d212d^2 参数。LL 层主干 =12Ld2= 12Ld^2

加上 embedding:输入 + 输出共享时 VdVd,不共享 2Vd2Vd

总参数量约:

N12Ld2+VdN \approx 12Ld^2 + Vd

示例L=32,d=4096,V=32000L=32, d=4096, V=32000 → 主干 12×32×409626.4B12 \times 32 \times 4096^2 \approx 6.4\text{B},embedding 32000×40960.13B32000 \times 4096 \approx 0.13\text{B},约 6.5B(接近 LLaMA-7B)。

训练 FLOPs 估算

经验法则:每 token 训练约 6N6N FLOPs(前向 ~2N2N,反向 ~4N4N)。

Ctrain6NDC_{\text{train}} \approx 6ND

其中 DD 为训练 token 数。

示例:7B 模型训 1T token → 6×7×109×1012=4.2×10226 \times 7\times10^9 \times 10^{12} = 4.2\times10^{22} FLOPs ≈ 4.2e22。

换算 GPU:A100 算力约 312 TFLOPS(BF16 理论),实际 MFU 30–50%:

GPU 时=CFLOPS×MFU×3600\text{GPU 时} = \frac{C}{\text{FLOPS} \times \text{MFU} \times 3600}

4.2e22 / (3.12e14 × 0.4 × 3600) ≈ 93,500 GPU 时,约 3,900 A100 跑一天。

推理 FLOPs 估算

  • Prefill:处理 prompt,约 2N×prompt 长度2N \times \text{prompt 长度} FLOPs。
  • Decode 每 token:约 2N2N FLOPs(前向一次),但实际瓶颈是访存而非计算(见 KV Cache 题)。

关键直觉

  • 训练算力与参数和 token 数线性相关:C=6NDC = 6ND
  • 推理 prefill 是计算瓶颈,decode 是访存瓶颈。
  • 参数量主要看 12Ld212Ld^2LLdd 平方关系——扩 dd 比扩 LL 更”费参数”。

面试加分点

  • 能口算”训 X B 模型用 Y token 需多少 A100 天”是 Infra 岗的硬技能。
  • 指出训练算力公式 6ND6ND 来自 Kaplan 论文,是 Scaling Law 的基础。
  • 推理时”参数量决定下限、KV Cache 决定上限”——长上下文推理显存主要被 KV Cache 吃掉,而非权重。

出处:Chinchilla 论文、大模型算力估算面经。

内容来源

整理自大模型算力估算面经与 Chinchilla 论文

本站内容整理自公开面经与开源仓库,仅供学习交流,严禁杜撰。