Transformer 从原理到推理系统
Transformer 的系统学习需要把三个层次连起来:为什么需要这种结构,它如何从数据中学会预测,以及它怎样在设备上执行。理解这条链路后,模型参数、激活参数、KV Cache 和推理吞吐就成为结构与执行方式的自然结果。
本教程从序列建模的背景开始,推导注意力机制,组装完整的原始 Transformer,再进入现代语言模型与推理系统。阅读目标是能够解释每个模块为何存在、输入输出如何变化、训练信号怎样传递,以及某个结构变化为什么影响资源消耗。
内容主线
| 章节 | 内容 | 核心联系 |
|---|---|---|
| 第一章 | 从序列建模到 Transformer | 条件概率、Embedding、RNN、Seq2Seq 与动态读取 |
| 第二章 | 注意力机制的数学推导 | Q/K/V、缩放点积、Softmax、梯度与多头 |
| 第三章 | 完整 Transformer 的组成与推导 | 位置、FFN、残差、Norm、Encoder 与 Decoder |
| 第四章 | 训练目标与自回归生成 | 交叉熵、Teacher Forcing、采样、缓存与执行时序 |
| 第五章 | 现代语言模型的结构演进 | RMSNorm、SwiGLU、RoPE、GQA 与 MoE |
| 第六章 | 从模型计算图到系统成本 | 权重、状态、运算、IO 与存储层次 |
| 第七章 | 模型容量与参数量推导 | 从具体矩阵得到 Dense 与 MoE 的参数规模 |
| 第八章 | 运行时状态与显存 | KV 生命周期、临时激活、分页和量化 |
| 第九章 | Prefill 与 Decode 计算量 | 从位置配对和线性变换得到 FLOPs |
| 第十章 | 吞吐与延迟的系统模型 | 计算、带宽、batch、并行和实际测量 |
附录提供张量形状参考、完整数值案例与练习及答案。它们用于对照和检验理解,阅读主线不依赖先做题。
如何阅读和理解推导
前置知识是矩阵乘法、指数与对数、条件概率、导数和链式法则。若对矩阵不熟悉,先记住 $[n,a]\times[a,b]\to[n,b]$:内维相同才能相乘,结果保留外侧两个维度。公式中的 softmax 通常沿一行归一化,$\odot$ 表示逐元素乘法,$\top$ 表示转置。
前三章建立架构,第四章把架构连接到学习与生成,第五章解释现代变体,第六至十章将结构映射到系统行为。第一次阅读建议按这个顺序;每读完一个模块,都回到同一个问题:它接收什么表示、混合哪些信息、产生什么输出?
推导也有不同性质。概率链式法则和矩阵形状是精确关系;缩放点积的方差推导建立在简化分布假设上;模型组件是设计选择,不能从某条数学定律唯一推出;吞吐公式则是带有硬件与执行假设的成本模型。学习时需要同时理解结果和适用条件。
前半部分明确区分原始 Encoder-Decoder Transformer 与后续 decoder-only 模型。第七章起,为便于完整展开,采用同构 decoder-only、Pre-Norm、无 bias、SwiGLU、两个 RMSNorm/block、final RMSNorm、普通 RoPE 和标准 GQA/MHA/MQA 作为统一分析对象。MoE 只替换 FFN,层间不共享参数;MLA、滑动窗口等需按真实计算图调整。
附录数值案例采用明确的示例配置与假想硬件,不能视为产品实测结果。
符号表
| 符号 | 含义 |
|---|---|
| $L$ | Transformer block 数;一层指一个含 Attention 和 FFN 的 block |
| $d$ | 隐藏维度 hidden size |
| $h_q,h_{kv}$ | Query head 数与 Key/Value head 数 |
| $d_h$ | 单个 head 的维度;主线中 Q、K、V 使用相同 head dim |
| $d_q=h_qd_h$ | 拼接后 Q 的宽度;主线通常 $d_q=d$ |
| $d_{kv}=h_{kv}d_h$ | 拼接后 K 或 V 的宽度 |
| $m,m_e$ | Dense FFN 中间维度、单个 MoE 专家中间维度 |
| $E,k,E_s$ | 路由专家总数、top-k、始终执行的共享专家数 |
| $V$ | 词表大小;与 Value 矩阵的含义由上下文区分 |
| $B$ | 一个推理 step 中同时处理的序列数,不是参数量中的 billion |
| $S$ | 本次完整 Prefill 的输入长度,默认各序列等长且无前缀缓存 |
| $T$ | Decode step 开始前,每条序列已缓存的 token 数 |
| $N$ | 请求最终生成的输出 token 数 |
| $b_w,b_{kv},b_a$ | 每个权重、KV 元素、普通激活元素的字节数 |
| $P,F,D$ | 参数个数、浮点操作数 FLOPs、HBM 传输字节数 |
| $C,eta$ | 计算速率 FLOP/s、HBM 带宽 byte/s |
1 MAC 是一次乘加,按 2 FLOPs 计。1B 参数是 $10^9$ 个参数;1 GB 是 $10^9$ bytes;1 GiB 是 $2^{30}$ bytes;1 TFLOP 是 $10^{12}$ FLOPs。FLOPs 是工作量,FLOP/s 是速率。
后半部分使用的资源概念
| 问题 | 量纲 | 是否随序列变长而增加 |
|---|---|---|
| 模型总参数 | 个权重标量 | 否 |
| 每 token 激活参数 | 个参与路径的权重标量 | 同构固定 top-k 时通常不变 |
| 中间激活与 KV | 个元素或 bytes | KV 通常线性增长;临时激活由实现决定 |
| 每 token FLOPs | 次浮点运算 | 全注意力 Decode 随上下文增长 |
| 吞吐 | token/s | 由计算、访存、并行和调度共同决定 |
“激活参数”是 active parameters,描述使用哪些权重;“激活值”是 activations,描述运行时产生的数据。两者的中文很接近,算的是不同东西。
延伸阅读
正文在相关概念处给出原始来源。进一步阅读可以按以下顺序进行:
-
Neural Machine Translation by Jointly Learning to Align and Translate:固定长度编码瓶颈与动态对齐的背景。
-
Attention Is All You Need:自注意力与 Transformer 的起点。原论文是 encoder-decoder,不能把整套参数配置直接当成本文 decoder-only 模型。
- On Layer Normalization in the Transformer Architecture:Norm 位置与优化行为。
- RMSNorm、GLU Variants、RoFormer:归一化、门控 FFN 与旋转位置编码。
- GQA:多个 Query head 如何共享 KV head。
- Mixtral of Experts:稀疏专家与逐 token 路由的具体实例。
- FlashAttention:精确注意力如何通过分块降低 HBM 访问。
- PagedAttention:KV Cache 分页管理与共享。
- vLLM 指标定义:服务指标的计时边界。阅读和实测时应同时记录软件版本。
开始阅读:第一章 从序列建模到 Transformer。