跳转至

大模型公式与数字速查

导读:本文把大模型面试中最常用的公式、参数量、显存和 benchmark 集中成表,适合面试前 20 分钟快速扫读。 所有数字均为公开资料或按标准公式估算,单位默认使用十进制 GB(\(10^9\) 字节),实际框架可能按 GiB 显示而略小。 遇到具体模型,务必以官方 config、论文和实测为准;本文的“量级”用于建立直觉,不作为工程验收依据。

核心要点

  • 先记四个主干:注意力 \(O(n^2d)\)、训练 \(6ND\)、KV Cache 随序列线性增长、decode 受显存带宽限制。
  • 显存估算要分训练与推理:训练看参数、梯度、优化器状态和激活,推理看权重、KV Cache 和并发。
  • 数字题先给假设再给结果,例如精度、batch、序列长度和是否开启 GQA,避免报一个没有前提的绝对值。

一、符号约定

符号 含义 备注
\(P\) 或 \(N\) 模型参数量 以“个”为单位,不是亿
\(D\) 训练 token 数 去重后的有效 token
\(L\) Transformer 层数 decoder block 数
\(d\) 隐藏维度 \(d_{model}\) 残差流宽度
\(h\) query 注意力头数 head 数
\(n_{kv}\) key/value 头数 MHA 时等于 \(h\),MQA 时为 1
\(d_h\) 每个头的维度 通常 \(d_h=d/h\)
\(d_{ff}\) FFN 中间维度 SwiGLU 常见约 \(8d/3\)
\(V\) 词表大小 vocabulary size
\(S\) 或 \(n\) 序列长度 训练或推理上下文长度
\(B\) batch size 并发序列数
\(b\) 每个数值的字节数 FP16/BF16 为 2,FP32 为 4,INT8 为 1,INT4 为 0.5
MFU 模型浮点运算利用率 有效模型 FLOPs / 硬件峰值

二、核心公式表

主题 公式 说明与常见量级
缩放点积注意力 \(\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V\) 除以 \(\sqrt{d_k}\) 使 logits 方差稳定
注意力复杂度 \(O(S^2d)\) 朴素实现显存 \(O(S^2)\);FlashAttention 显存可降到 \(O(S)\)
多头注意力 \(\mathrm{head}_i=\mathrm{Attention}(QW_i^Q,KW_i^K,VW_i^V)\) 总计算量与单个大 head 同阶
MHA 每层参数量 \(4d^2\) Q、K、V、O 四个 \(d\times d\) 矩阵,忽略 bias
GQA 每层注意力参数量 \(2d^2+2dd_{kv}\) \(d_{kv}=n_{kv}d_h\);\(n_{kv}=h\) 时退化为 \(4d^2\)
FFN 参数量(普通) \(2dd_{ff}\) 两个矩阵;\(d_{ff}=4d\) 时约 \(8d^2\)
FFN 参数量(SwiGLU) \(3dd_{ff}\) 三个矩阵;\(d_{ff}\approx8d/3\) 时约 \(8d^2\)
输入/输出 embedding \(Vd\) 每份 不共享时共 \(2Vd\),共享时 \(Vd\)
每 token KV Cache \(2Ln_{kv}d_hb\) 字节 因子 2 表示 K 和 V;MLA 用压缩潜变量替代
总 KV Cache \(2Ln_{kv}d_hSBb\) 字节 与 batch、序列长度线性相关
训练 FLOPs \(C\approx6ND\) 前向 \(2ND\),反向约 \(4ND\);重计算时接近 \(8ND\)
推理 FLOPs 约 \(2P\) / 生成 token prefill 还要加 \(O(LS^2d)\) 的注意力项
混合精度 Adam 状态 约 \(16P\) 字节 权重 2、梯度 2、FP32 主权重 4、动量 4、方差 4
ZeRO-1 每卡状态 \(4P+12P/N\) 字节 仅切优化器状态,\(N\) 为数据并行度
ZeRO-2 每卡状态 \(2P+14P/N\) 字节 再切梯度
ZeRO-3 每卡状态 \(16P/N\) 字节 参数也切分,另有激活和通信开销
交叉熵损失 \(\mathcal{L}=-\frac{1}{N}\sum_i\log p_\theta(x_i\mid x_{<i})\) 语言模型预训练标准目标
困惑度 \(\mathrm{PPL}=\exp(\mathcal{L})\) 越低越好;不同 tokenizer 间不可直接比较
DPO 损失 \(-\log\sigma\!\left(\beta\left[\log\frac{\pi_\theta(y_w\mid x)}{\pi_{ref}(y_w\mid x)}-\log\frac{\pi_\theta(y_l\mid x)}{\pi_{ref}(y_l\mid x)}\right]\right)\) \(y_w\) 为偏好回答,\(y_l\) 为拒绝回答
PPO 裁剪目标 \(\mathbb{E}\left[\min\left(r_t\hat A_t,\ \mathrm{clip}(r_t,1-\epsilon,1+\epsilon)\hat A_t\right)\right]\) \(r_t=\pi_\theta(a_t\mid s_t)/\pi_{old}(a_t\mid s_t)\)
GRPO 优势 \(\hat A_i=\frac{r_i-\mathrm{mean}(r_{1:G})}{\mathrm{std}(r_{1:G})}\) 同一 prompt 采样 \(G\) 个回答,组内归一化
LoRA 增量 \(W=W_0+BA,\ B\in\mathbb{R}^{d\times r},\ A\in\mathbb{R}^{r\times k}\) 可训练参数 \(r(d+k)\),缩放常为 \(\alpha/r\)
仿射量化 \(q=\mathrm{round}(x/s)+z,\ \hat x=s(q-z)\) 对称量化时 \(z=0\),误差上界约 \(s/2\)
投机解码加速比 \(\frac{1-\alpha^{\gamma+1}}{(1-\alpha)(1+c\gamma)}\) \(\alpha\) 接受率、\(\gamma\) 草稿长度、\(c\) 草稿相对成本
GPU-hours \(\frac{6ND}{F_{peak}\times\mathrm{MFU}\times3600}\) \(F_{peak}\) 用 FLOP/s;结果再除以 GPU 数得小时
调用成本 \(\frac{T_{in}}{10^6}p_{in}+\frac{T_{out}}{10^6}p_{out}\) 还要加缓存、重试、工具和人工审核成本
最大并发(KV 约束) \(B_{max}\approx\frac{M_{KV}}{2Ln_{kv}d_hSb}\) 未计权重、激活和碎片;实际更小

公式使用提醒

  • \(6ND\) 不包含注意力二次项、通信、数据加载和失败重跑;长上下文训练要额外估算。
  • KV Cache 公式默认 MHA/GQA 的显存布局;MLA、量化缓存和分页管理会改变实际占用。
  • 训练显存公式中的 16P 是常见 mixed precision + Adam 口径,不同框架的 master weight 和 optimizer 实现会有差异。

三、常见模型配置(公开资料)

下表用于建立量级直觉。不同版本、微调模型和推理框架可能修改上下文、词表或并行配置,需以官方 config 为准。

模型 总参数 / 激活参数 层数 隐藏维度 Q 头 / KV 头 FFN 维度 词表 公开上下文
Llama 3 8B 8.0B / 8.0B 32 4096 32 / 8 14336 128256 8K
Llama 3 70B 70.6B / 70.6B 80 8192 64 / 8 28672 128256 8K
Qwen2.5 7B 7.6B / 7.6B 28 3584 28 / 4 18944 152064 32K 原生,YaRN 可扩至 128K
Qwen2.5 72B 72.7B / 72.7B 80 8192 64 / 8 29568 152064 32K 原生,YaRN 可扩至 128K
DeepSeek-V3 671B / 37B 61 7168 128 / MLA 18432(稠密层)/ 2048(专家) 129280 128K

DeepSeek-V3 的 MLA/MoE 补充

项目 公开配置量级 面试用法
路由专家数 256 说明总参数大、单 token 只激活少量专家
每 token 激活专家 top-8 激活参数约 37B,不能拿 671B 直接算算力
共享专家 1 提供通用能力,减少路由波动
KV 压缩维度 512 MLA 缓存潜变量,而非完整 K/V
RoPE 维度 64 与压缩潜变量拼接,保留位置信息
每层每 token 缓存 约 576 个元素 512 + 64,BF16 约 1.1 KB/层/token
61 层每 token 缓存 约 70 KB 按 BF16 估算,128K 约 9 GB,量级远低于同规模 MHA

四、参数显存换算

4.1 1B 参数在不同精度下的权重显存

精度 每参数字节 1B 权重 7B 权重 70B 权重 671B 权重
FP32 4 4 GB 28 GB 280 GB 2.68 TB
FP16 2 2 GB 14 GB 140 GB 1.34 TB
BF16 2 2 GB 14 GB 140 GB 1.34 TB
INT8 1 1 GB 7 GB 70 GB 671 GB
INT4 0.5 0.5 GB 3.5 GB 35 GB 335.5 GB
  • 以上只算权重,不含 KV Cache、激活、量化常数、框架 workspace 和显存碎片。
  • 实际部署通常再加 10% 至 30% 余量;长上下文时 KV Cache 可能超过权重。
  • INT4 的 0.5 字节是理论值,分组量化和 scale/zero-point 会带来额外开销。

4.2 7B 与 70B 的训练显存估算

项目 7B 估算 70B 估算 说明
FP16/BF16 权重 14 GB 140 GB 仅参数
FP16/BF16 梯度 14 GB 140 GB 与参数同规模
FP32 主权重 28 GB 280 GB mixed precision 常见
Adam 动量 + 方差 56 GB 560 GB 两份 FP32 状态
小计(不含激活) 约 112 GB 约 1.12 TB 16 字节/参数口径
激活与临时缓冲 约 10 至 50 GB 约 100 GB 以上 随 batch、序列和 checkpoint 策略变化
全参数训练建议 ZeRO-3/FSDP,8×80 GB 起步 ZeRO-3 + TP/PP/offload,32×80 GB 起步(16×80 GB 仅极短序列/重计算下勉强) 均为量级,不是硬门槛
LoRA(BF16 基座) 14 GB 权重 + 少量适配器 140 GB 权重 + 适配器 仍需激活和优化器
QLoRA(4-bit 基座) 约 4 GB 权重,24 GB 卡可试 约 35 GB 权重,48 至 80 GB 卡可试 batch 和序列要小

4.3 7B 与 70B 的推理显存估算

模型 FP16 权重 每 token KV(BF16) 8K 上下文 KV 128K 上下文 KV 部署直觉
Llama 3 8B(GQA 8) 14 GB 128 KiB 1 GiB 16 GiB 24 GB 卡可做小并发;长上下文需更大卡
Llama 3 70B(GQA 8) 140 GB 320 KiB 2.5 GiB 40 GiB 权重下限 2×80 GB,实用通常 4×80 GB 起
Qwen2.5 7B(GQA 4) 14 GB 56 KiB 448 MiB 7 GiB KV 更省,适合较长上下文
Qwen2.5 72B(GQA 8) 140 GB 320 KiB 2.5 GiB 40 GiB 与 Llama 70B 同量级
DeepSeek-V3(MLA) 约 1.34 TB(BF16) 约 70 KiB 约 560 MiB 约 9 GiB 权重巨大,需多卡 EP/TP;KV 相对省
  • “每 token KV”按单序列、全部层的 K/V 合计估算,未计分页碎片和框架开销。
  • 并发 \(B\) 条 8K 序列时,KV 总量约为表中数值乘 \(B\);例如 Llama 3 8B 的 32 并发 8K 约需 32 GiB KV。
  • 70B FP16 权重 140 GB 已超过单张 80 GB 卡,实际必须多卡;INT4 可将权重降到约 35 GB,但质量和 kernel 支持要验证。

五、常用 benchmark 及含义

Benchmark 主要测什么 指标/备注
MMLU 多学科知识选择题 准确率;覆盖 STEM、人文、社科等,存在污染风险
MMLU-Pro 更难的多学科选择题 准确率;选项更多、推理步骤更长
GPQA 研究生级科学问答 准确率;题目难,适合看专家级推理
GSM8K 小学数学应用题 准确率;常看 CoT 和 pass@1
MATH 竞赛数学 准确率;按难度分级,答案格式影响大
HumanEval Python 代码生成 pass@1/pass@k;函数级测试
MBPP 基础 Python 编程 pass@1;题目更短,覆盖入门算法
LiveCodeBench 新近竞赛编程题 pass@k;强调防污染和时效
BBH BIG-Bench Hard 推理子集 准确率;多步推理、算法和语言任务
ARC-Challenge 科学常识推理 准确率;小学到高中科学题
HellaSwag 常识续写 准确率;句子补全,较饱和
TruthfulQA 真实性与常见误解 准确率/真实性;考察是否复述流行错误
MT-Bench 多轮对话质量 1 至 10 分,常由强模型裁判
AlpacaEval 指令跟随偏好 胜率;需注意裁判和长度偏差
Chatbot Arena 人类盲测偏好 Elo/Bradley-Terry 分数;反映主观偏好
C-Eval / CMMLU 中文多学科知识 准确率;中文能力常用参考
LongBench / RULER 长上下文理解与检索 任务分数随长度变化;比“支持 128K”更有信息量
Needle-in-a-Haystack 长文中的精确检索 召回率;不能代表长文推理能力
MMMU / DocVQA 多模态理解/文档问答 准确率;看视觉 grounding 和 OCR
SWE-bench 真实代码仓库修复 解决率;接近工程任务,评测成本高

看榜注意

  • 公开榜单适合粗筛,不足以证明业务能力;要关注 prompt、few-shot 数、工具使用、投票次数和 contamination(数据污染)。
  • 生成任务的 BLEU/ROUGE 与人类偏好相关性有限,不能单独作为上线依据。
  • 同一模型在不同推理预算(采样数、思维链长度、工具)下分数差异很大,必须固定预算比较。

六、单位与换算

6.1 参数量与显存

  • 权重显存公式:\(\text{bytes}=P\times b\),其中 \(b\) 为每参数字节数。
  • 十进制与二进制:1 GB \(=10^9\) B,1 GiB \(=2^{30}\) B;1 GiB 约等于 1.074 GB。
  • 1B 参数:FP16/BF16 约 2 GB,INT8 约 1 GB,INT4 约 0.5 GB。
  • 1B 参数的训练状态(mixed precision Adam)约 16 GB,不含激活;这是全参数训练,不是 LoRA。
  • 估算口诀:推理先算权重,再加 KV 和 20% 余量;训练先算 16P,再加激活和并行开销。

6.2 token 与字符

文本类型 粗略换算 说明
中文 1 token 约 0.8 至 1.5 个汉字 取决于 tokenizer;中文优化词表通常更省
中文 1000 个汉字约 700 至 1200 token 用于预算和上下文估算的量级
英文 1 token 约 0.75 个单词 约 4 个英文字符/token
代码 1 token 约 2 至 3 个字符 符号、缩进和标识符会改变压缩率
数字/表格 压缩率波动大 数字常被拆成多个 token,需实测
  • 不要用“字数等于 token 数”做精确计费;上线前用目标 tokenizer 对真实样本统计。
  • 中文标点、换行和 Markdown 标记也占 token;RAG 组装上下文时要计入这些开销。

6.3 上下文与并发

  • 单序列 KV 显存与上下文长度 \(S\) 成正比;总 KV 还要乘并发 \(B\)。
  • 例:Llama 3 8B 在 BF16 下每 token 约 128 KiB,8K 约 1 GiB,32K 约 4 GiB,128K 约 16 GiB。
  • 若单卡剩余 40 GiB 给 KV,理论上可容纳约 40 条 8K 序列,但实际要扣除权重、激活、碎片和调度余量。
  • 长上下文不只看显存,还要看 prefill 的 \(S^2\) 计算和 TTFT。

6.4 算力、时间与成本

  • 训练 GPU-hours:先算 \(6ND\),再除以(峰值 FLOPS × MFU × 3600)。
  • 例:7B 模型训练 1T token,理论 \(4.2\times10^{22}\) FLOPs;A100 峰值约 312 TFLOPS、MFU 40% 时约 9.4 万 GPU-hours。
  • 70B 模型训练 1T token,理论 \(4.2\times10^{23}\) FLOPs;同口径约 93 万 GPU-hours,1000 卡约 39 天。
  • 实际还要加通信、数据加载、checkpoint、评估和故障重启,通常预留 10% 至 30% 甚至更多。
  • 推理成本按输入/输出 token 分别计价,输出通常更贵;缓存命中、批处理和量化会显著改变单位成本。

七、常用“数量级”结论清单(20 条)

  1. 标准注意力计算量为 \(O(S^2d)\),朴素显存为 \(O(S^2)\);FlashAttention 把显存降到 \(O(S)\),但不改变二次计算量。
  2. KV Cache 随序列长度和 batch 线性增长,是长上下文和高并发推理的主要显存项之一。
  3. 预训练算力常用 \(6ND\) 估算;开启 activation checkpointing 后接近 \(8ND\),实际还要除以 MFU。
  4. Chinchilla 的计算最优约 20 token/参数;面向长期服务的小模型常训练 100 至 1000 token/参数以上。
  5. 7B 全参数混合精度 Adam 训练状态约 112 GB,70B 约 1.12 TB,均不含激活。
  6. LoRA 可训练参数通常占全参数 0.1% 至 1%;QLoRA 可把 7B 基座权重压到约 4 GB。
  7. 7B FP16/BF16 权重约 14 GB,70B 约 140 GB,671B BF16 约 1.34 TB。
  8. Llama 3 8B 的 BF16 KV 约 128 KiB/token,8K 约 1 GiB,128K 约 16 GiB。
  9. Llama 3 70B 的 BF16 KV 约 320 KiB/token,8K 约 2.5 GiB,128K 约 40 GiB。
  10. decode 阶段每读取一个权重只做约两次浮点运算,算术强度接近 1 FLOP/byte,通常受显存带宽限制。
  11. 训练 MFU 常见 30% 至 50%,推理 MFU 往往更低;优化要看端到端 tokens/s 和尾延迟。
  12. FlashAttention 常见加速 2 至 4 倍,长序列和训练场景收益更明显。
  13. PagedAttention 把 KV 分块管理,可将传统预分配造成的显存浪费从数倍降到较低水平,并支持前缀共享。
  14. 投机解码常见加速 1.5 至 3 倍,取决于接受率、草稿成本和 batch;高温度任务收益下降。
  15. 权重 INT8/INT4 量化约带来 2 倍/4 倍显存下降,但实际加速不一定同比例,需看 kernel 和带宽。
  16. 连续批处理相对静态 batching 常带来数倍吞吐提升,具体取决于请求长度分布和 SLA。
  17. 1000 个汉字约 700 至 1200 token,中文计费不能按“一个字一个 token”精确估算。
  18. 7B FP16 在 2 TB/s 带宽的 GPU 上,decode 理论上限约 140 token/s,实际通常明显低于该值。
  19. 70B 训练 1T token 约需 \(4.2\times10^{23}\) FLOPs,40% MFU 下约 93 万 A100 GPU-hours。
  20. RAG 常见 chunk 为 300 至 800 token、overlap 10% 至 20%,召回 20 至 100 条后 rerank 到 5 至 10 条。

八、速记口诀

  • 复杂度:注意力看 \(S^2\),FFN 看 \(Sd^2\),KV 看 \(S\)。
  • 训练账:权重、梯度、主权重、动量、方差,5 份再乘参数量字节。
  • 推理账:权重打底,KV 乘 batch 和长度,最后留 20% 余量。
  • 对齐账:SFT 教格式,RM 学偏好,RL 调策略,KL 防跑偏,评测防自嗨。
  • 应用账:先检索再生成,先评测再上线,先限流再扩容,先兜底再自动化。

使用建议

  • 面试前重点背 \(6ND\)、KV Cache、16P 训练显存和 7B/70B 的权重与 KV 量级,其他数字可以现场推导。
  • 被问到具体模型时,先说明“公开资料口径”和精度、并行、上下文假设,再给数字。
  • 公式题不要只写符号,补一句工程含义,例如“所以 decode 是带宽瓶颈,量化有效”。
  • 本文数字用于估算,真实项目应以 config、profiler 和压测结果为准。

本文档为面试复习资料,公式与数字建议结合原始论文复核。