Skip to content

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,描述运行时产生的数据。两者的中文很接近,算的是不同东西。

延伸阅读

正文在相关概念处给出原始来源。进一步阅读可以按以下顺序进行:

开始阅读:第一章 从序列建模到 Transformer。