17 KiB
17 KiB
第 02 章研究账本:注意力与 Transformer
核验截止:2026-07-29(Asia/Shanghai)
原则:只把原论文、正式会议页、作者技术报告与官方实现写入事实层。下文的“教学映射”是本站重组,不冒充论文原话。
0. 本章边界
本章回答的是“Transformer 这个计算骨架如何出现、如何工作、又怎样演化为现代 LLM block”。它与其他章节的边界如下:
- 第 01 章负责 N-gram → NPLM → RNN/LSTM → Seq2Seq 的完整前史。
- 第 03 章继续深入 Tokenizer、位置、表示与跨深度路径。
- 第 06 章完整解释 MoE 路由与专家并行。
- 第 07 章完整解释长上下文、线性注意力、MLA / KDA 与缓存成本。
- 第 08 章完整解释并行训练与通信。
- 本章仍必须给出这些机制的“最小闭环”,否则读者无法看懂一个现代 block;但复杂实验数字不在这里无限展开。
1. 十张问题账
| 账 | 核心问题 | 最小结论 |
|---|---|---|
| 01 信息路径 | 怎样摆脱固定向量瓶颈? | 对每个输出位置按需读取一组源表示。 |
| 02 匹配几何 | Q、K、V 究竟在算什么? | 匹配特征与被搬运内容分离;缩放抑制高维点积的幅值增长。 |
| 03 可见性 | self / cross / causal 有何区别? | 本质是来源集合和 mask 不同。 |
| 04 多头 | 为什么要并行多组投影? | 增加不同表示子空间中的路由容量,但不保证每头有单一人类语义。 |
| 05 位置 | Attention 为什么需要位置? | 无位置项时,算子本身不知道序列次序。 |
| 06 局部计算 | Attention 之后为什么还要 FFN? | Attention 跨位置混合;FFN / MoE 在每个位置做共享非线性加工。 |
| 07 深度 | 怎样堆到几十上百层? | Residual 提供加法捷径;Norm 位置改变优化行为。 |
| 08 架构与目标 | BERT、GPT、T5 为什么不同? | 可见性、组件拓扑和训练目标是三条相互关联但不等价的轴。 |
| 09 系统成本 | 同一公式为什么快慢差很多? | 训练、prefill、decode 的瓶颈不同;IO、缓存与并行实现必须单独记账。 |
| 10 当代映射 | DeepSeek / Kimi 改了哪一轴? | MLA 改 KV 表示,KDA 改序列状态,AttnRes / mHC 改深度路径,MTP 改训练信号。 |
2. 已核验主干结论
2.1 从软对齐到 Self-Attention
- Bahdanau et al. 2014/ICLR 2015 明确把传统 encoder–decoder 的固定长度向量视为瓶颈,并让 decoder 每一步对源端表示做可学习的 soft search。来源:arXiv 1409.0473。
- Luong et al. 2015 系统比较 global / local attention 与 dot / general / concat 打分。它仍是 RNN NMT,不是 Transformer。来源:arXiv 1508.04025。
- Vaswani et al. 2017 的原始 Transformer 是 encoder–decoder 机器翻译架构,使用 encoder self-attention、masked decoder self-attention 与 encoder–decoder attention;论文主张以 attention 取代 recurrence / convolution,并强调训练并行性。来源:NeurIPS 正式页。
- 原论文在 WMT 2014 英德/英法翻译实验中报告 28.4 / 41.0 BLEU,并称其大模型在 8 个 P100 上训练 3.5 天;这些数字只属于论文设定,不能外推为现代 LLM 的通用速度结论。
2.2 Q / K / V、缩放与 Mask
- Scaled dot-product attention:
softmax(QKᵀ / √d_k)V。原论文给出的动机是:若 Q、K 分量独立、均值 0、方差 1,则点积方差为d_k;大幅值把 softmax 推向小梯度区,因此除以√d_k。 - Q 与 K 决定“从哪里读”,V 决定“读回什么”。Q/K/V 是线性投影的计算角色,不是三份固定词义。
- Encoder self-attention 允许同一层的全部源位置互见;decoder self-attention 用 subsequent mask 阻止未来信息;cross-attention 的 Q 来自 decoder,K/V 来自 encoder。
- Causal mask 只规定信息可达性,不意味着模型的内部算法必然以人类的线性“思考步骤”运行。
2.3 Multi-Head 与解释边界
- Vaswani et al. 的原始主张是:多头允许模型在不同位置、不同表示子空间共同关注信息。
- Michel et al. 2019 发现测试时移除相当比例的头通常不会显著损害性能,一些 self-attention 层甚至可减到单头;论文没有证明这些头在训练阶段毫无作用。来源:NeurIPS 正式页。
- Clark et al. 2019 在 BERT 中观察到分隔符、相对偏移、句法和共指等模式;这是后验分析,不是“每个头被指定一种语法功能”。来源:ACL Anthology。
- Jain & Wallace 2019 展示 attention 权重与梯度型重要性可能不相关,并可构造不同权重却保持相近预测;Wiegreffe & Pinter 同年指出结论依赖“解释”的定义和测试方法。课程结论采用保守表述:权重可用于观察与提出假设,但仅凭热力图不能证明因果归因。 来源:NAACL、EMNLP。
2.4 位置
- 原始 Transformer 把固定 sin/cos 位置编码与 embedding 相加;论文还测试 learned positional embedding。
- Shaw et al. 2018 把相对距离表示加入 self-attention,并在论文的 WMT 设置中优于只用绝对位置的基线。来源:NAACL 正式页。
- Transformer-XL 用 segment-level recurrence 与新相对位置方案解决固定片段和 context fragmentation;论文的速度/依赖长度数字只属于其评测设置。来源:ACL 正式页。
- RoPE 用旋转矩阵把绝对位置写进 Q/K,并使点积显式依赖相对位置。来源:arXiv 2104.09864。
- ALiBi 不把位置向量加到 embedding,而是给 attention logits 添加与距离成比例的惩罚;原文在 1.3B、训练长度 1024 / 测试 2048 等设置中验证外推。来源:arXiv 2108.12409。
2.5 FFN / GLU
- 原始 block 不只有 Attention:每个位置还经过共享的两层 FFN(ReLU)。
- GLU 的门控思想早于 Transformer。Shazeer 2020 在 Transformer FFN 中比较 GLU 变体,报告部分变体优于 ReLU / GELU;这是一组实验结论,不是“证明 SwiGLU 永远最优”。来源:arXiv 2002.05202。
- MoE 把局部 FFN 容量稀疏化;本章只画 token → router → experts 的最小路径,负载均衡和通信留到第 06 章。
2.6 Residual / Norm / Depth
- Residual shortcut 来自深度视觉网络。ResNet 的原始贡献是把层学习目标改写为残差映射,从而缓解深网优化退化;它不是 Transformer 发明。来源:CVPR 正式页。
- LayerNorm 在单个样本内按层输入统计量归一化,训练和测试计算一致,最初尤其强调对 RNN 的适配。来源:arXiv 1607.06450。
- 原始 Transformer 图与正文采用 Post-LN(残差相加后做 LayerNorm)。
- Xiong et al. 2020 以 mean-field 分析指出:初始化时 Post-LN 输出附近梯度较大,warm-up 有助稳定;Pre-LN 梯度更良好,其实验可在多项设置下去掉 warm-up。不能简化成“Pre-LN 在一切方面更优”。来源:ICML / PMLR。
- RMSNorm 去掉 re-centering,只按 RMS 做 re-scaling;原论文报告在多种模型上的可比性能与运行时间下降,但具体 7%–64% 依赖实验模型。来源:NeurIPS 正式页。
2.7 架构家族与目标
- GPT-1 使用 Transformer decoder 做生成式预训练,再在监督任务微调;它把“decoder-only + causal LM + transfer”连成路线。来源:OpenAI 原始 PDF。
- BERT 是 Transformer encoder,目标是深度双向表示,原文采用 MLM + NSP;其贡献不是新 QKV 公式。来源:arXiv 1810.04805。
- T5 用 encoder–decoder,把任务统一为 text-to-text,并系统比较目标、架构、数据和迁移配方;不能把统一接口误写成“发明 encoder–decoder”。来源:JMLR 正式页。
- UniLM 表明同一个 Transformer 可通过不同 self-attention mask 实现单向、双向与 seq2seq 目标。来源:arXiv 1905.03197。
- 架构拓扑、mask 和预训练目标必须分开画:decoder-only 常配 causal LM,但逻辑上它们不是同义词。
2.8 训练、Prefill、Decode 与 IO
- 训练用 teacher forcing,可在因果 mask 下并行计算全部位置的损失;生成时新 token 尚不存在,必须自回归逐步解码。
- KV Cache 用显存换重算:保留旧 token 的 K/V,不改变标准 attention 的数学输出。
- MQA 让多组 Q 头共享一组 K/V,论文直接把动机写成增量解码反复加载 K/V 的 memory-bandwidth cost。来源:arXiv 1911.02150。
- GQA 在 MHA 与 MQA 之间使用中间数量的 K/V heads,并提出以原训练计算量 5% uptrain checkpoint 的方案;论文报告质量接近 MHA、速度可比 MQA。来源:EMNLP 正式页。
- FlashAttention 是 IO-aware 的精确 attention:分块并利用在线 softmax,减少 HBM 与片上 SRAM 间读写;不是稀疏近似,也没有改变稠密 attention 的数学定义。来源:NeurIPS 正式页。
- Megatron-LM 处理 intra-layer model parallel;它是训练系统切分,不是新的 attention 算子。来源:arXiv 1909.08053。
3. DeepSeek 重点谱系
3.1 DeepSeek-V2:MLA
- 报告模型为 236B total / 21B active,128K context。
- MLA 把每个 token 的 K/V 表示压进低维 latent,再按需上投影,缓存 latent 而非全部 head-specific K/V。
- 报告声称相对 DeepSeek 67B:训练成本降 42.5%、KV Cache 降 93.3%、最大生成吞吐 5.76×。课程引用这些数字时必须带比较对象。
- 来源:arXiv 2405.04434,本地提取
research/sources/long-context/2405.04434.txt。
3.2 DeepSeek-V3:MLA 延续 + MTP
- V3 继续采用 MLA 与 DeepSeekMoE。
- MTP 使用顺序模块预测额外未来 token,增加训练信号;主目标仍然是 autoregressive next-token。
- 报告 §2.2 明确:推理时可直接丢弃 MTP 模块,主模型独立运行;也可把模块用于 speculative decoding。
- 来源:arXiv 2412.19437,本地证据
research/sources/moe/2412.19437.txt:534-602。
3.3 DeepSeek-V4:CSA / HCA + mHC
- V4 用 CSA 与 HCA 的混合稀疏/压缩 attention 面向 1M context;这不是单纯把 V3 的 MLA 改名。
- 报告同时用 manifold-constrained hyper-connections(mHC)升级相邻层的 residual path。
- 报告称 V4-Pro 在 1M context 的 single-token inference FLOPs / KV cache 分别为 V3.2 的 27% / 10%;V4-Flash 为 10% / 7%。这些是报告内比较,不能外推到不同服务栈。
- 来源:arXiv 2606.19348,本地证据
research/sources/long-context/2606.19348.txt:14-26,178-212,473-483。
4. Kimi K3 映射
- K3 报告的 backbone 采用 3 个 KDA 层 + 1 个 Gated MLA 层的重复 block,另有额外 Gated MLA;不是纯线性 attention。证据:
research/sources/kimi-k3/k3_tech_report.txt:195-225。 - KDA 是带 channel-wise forget gate 的 delta-rule recurrence;长序列解码维护固定大小 recurrent state,区别于随序列增长的 softmax KV Cache。证据:同文件
:230-256,1161-1177。 - K3 的 Gated MLA 沿用 DeepSeek-V2 的 latent KV compression,并增加 input-dependent channel-wise output gate;报告还说明 MLA 层使用 NoPE,而 KDA 提供位置敏感、recency-aware 的混合。证据:
:352-370。 - AttnRes 让当前层以 learned pseudo-query 对先前深度表示做选择性聚合;Block AttnRes 降低内存/通信开销。证据:
:377-401;独立报告:arXiv 2603.15031。 - 每个 attention layer 后接 Stable LatentMoE;额外 RMSNorm 与 SiTU-GLU 用于稳定潜空间与抑制大激活。证据:
:421-501。 - 课程问题轴:
- KDA:序列长度上的有限状态更新。
- Gated MLA:周期性全局 token-to-token 交互与压缩缓存。
- AttnRes:网络深度上的选择性信息路由。
- Stable LatentMoE:模型宽度上的稀疏局部计算。
5. 正式论文链(40 个教学节点)
| # | 年 | 节点 | 主账 | 本章一句话 |
|---|---|---|---|---|
| 01 | 2014 | Bahdanau Attention | 信息路径 | 每个输出步按需软读取源表示。 |
| 02 | 2015 | Luong Attention | 匹配几何 | global/local 与多种 score 形成可比较设计空间。 |
| 03 | 2015 | Pointer Networks | 信息路径 | 权重本身也可成为指向输入位置的输出分布。 |
| 04 | 2016 | ResNet | 深度 | 残差加法高速公路的直接前史。 |
| 05 | 2016 | LayerNorm | 深度 | 单样本内按特征归一化。 |
| 06 | 2017 | GLU | 局部计算 | 门控前馈的前史。 |
| 07 | 2017 | Attention Is All You Need | 全局 | encoder–decoder 的全 attention 机器翻译系统。 |
| 08 | 2018 | GPT-1 | 架构目标 | decoder-only 生成预训练 + 迁移。 |
| 09 | 2018 | BERT | 架构目标 | encoder-only 双向 MLM 预训练。 |
| 10 | 2018 | Relative Position | 位置 | 相对距离进入 self-attention。 |
| 11 | 2019 | Transformer-XL | 位置/长程 | 跨段 recurrence + 相对位置。 |
| 12 | 2019 | GPT-2 | 架构目标 | decoder-only causal LM 的零样本扩展。 |
| 13 | 2019 | T5 | 架构目标 | encoder–decoder + text-to-text + span corruption。 |
| 14 | 2019 | UniLM | Mask | 用 mask 统一单向、双向、seq2seq。 |
| 15 | 2019 | RMSNorm | 深度 | 去均值中心化的归一化。 |
| 16 | 2019 | MQA | 系统 | 多 Q 头共享一组 K/V。 |
| 17 | 2019 | Sixteen Heads? | 多头 | 测试时头存在显著可剪枝冗余。 |
| 18 | 2019 | What Does BERT Look At? | 多头 | 观察头模式,但不把观察升级为因果。 |
| 19 | 2019 | Attention is not Explanation | 边界 | 权重不能自动作为解释。 |
| 20 | 2019 | Attention is not not Explanation | 边界 | 解释定义与测试协议也需明确。 |
| 21 | 2019 | Megatron-LM | 系统 | 层内张量并行支撑更大 Transformer。 |
| 22 | 2020 | Pre-LN analysis | 深度 | Norm 位置改变初始化梯度与 warm-up 需求。 |
| 23 | 2020 | GLU Variants | 局部计算 | GEGLU / SwiGLU 等进入 Transformer FFN。 |
| 24 | 2020 | GPT-3 | 架构目标 | causal decoder + scale 形成 in-context 接口。 |
| 25 | 2020 | Query-Key Normalization | 匹配几何 | 显式控制 Q/K 尺度。 |
| 26 | 2021 | RoPE | 位置 | 旋转 Q/K 表达相对位置。 |
| 27 | 2021 | ALiBi | 位置 | 直接给 logits 加距离偏置。 |
| 28 | 2021 | NormFormer | 深度 | 在 block 内增加归一化改善梯度尺度。 |
| 29 | 2022 | DeepNet | 深度 | 深层 Post-LN 的稳定缩放路线。 |
| 30 | 2022 | FlashAttention | 系统 | 不写出完整矩阵的 IO-aware 精确实现。 |
| 31 | 2023 | LLaMA | 现代配方 | Pre-Norm RMSNorm + SwiGLU + RoPE 的代表组合。 |
| 32 | 2023 | GQA | 系统 | MHA 与 MQA 之间的 K/V head 折中。 |
| 33 | 2023 | FlashAttention-2 | 系统 | 改进并行和任务划分。 |
| 34 | 2024 | DeepSeek-V2 | DeepSeek | MLA 压缩 KV latent。 |
| 35 | 2024 | DeepSeek-V3 | DeepSeek | 延续 MLA,并加入 MTP 训练目标。 |
| 36 | 2025 | Kimi Linear | Kimi | KDA 与 MLA 的 3:1 混合路线。 |
| 37 | 2025 | DeepSeek-V3.2 | DeepSeek | DSA 把稀疏索引带回 MLA 谱系。 |
| 38 | 2026 | Attention Residuals | Kimi | 在深度维选择先前层表示。 |
| 39 | 2026 | DeepSeek-V4 | DeepSeek | CSA/HCA + mHC 面向 1M context。 |
| 40 | 2026 | Kimi K3 | Kimi | KDA/Gated MLA + AttnRes + Stable LatentMoE。 |
6. 页面交互验收目标
- QKV 手算台:调 Q/K logits 与
d_k,逐步看到 scale → softmax → Value weighted sum。 - Mask 矩阵台:full / causal / cross / prefix 四种可见性,可点位置并读出允许来源。
- 多头与位置台:切换 local / syntax-like / long-range 等教学头和 None / absolute / relative / RoPE / ALiBi,明确这是示意。
- Block 与成本台:Original Transformer / BERT / GPT / LLaMA / DeepSeek MLA / K3 hybrid;比较拓扑、Norm、FFN、KV 组织和训练/推理阶段。
- 所有实验必须支持键盘 tab、移动端无横向溢出,并把“教学模拟”与“论文事实”分开标注。