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