看懂 Transformer 之后,新名词很容易混在一起:FlashAttention、MLA、MoE、各种 gate,似乎都在说“更高效”。先别急着记名字,把它们放回计算过程,就能看出它们改的不是同一件事。
还不熟悉 Q、K、V 和 residual,可以先回完整 Transformer。想顺着流程读,直接去预训练或生成与推理;这页适合用来区分机制。
先分清序列、层和参数
一句话里有很多 token,一个模型里有很多层。沿序列找信息、沿深度组合信息、选择一部分参数来计算,是三个不同的动作。
| 改动发生在哪里 | 读哪篇 | 用什么小例子分清 |
|---|---|---|
| Attention 输出 | Gated Attention | 两个 head 的结果乘上不同门值;算完再少传,不等于少算 |
| 历史状态 | Gated DeltaNet | 写入一个新 key 后,原先存的关联怎样变化 |
| 局部模式查表 | Engram | 相同短语查到同一条目,不同上下文决定用多少;不是聊天记忆 |
| 网络深度 | Attention Residuals | 同一个 token 怎样组合前层输出,而不是多看几个 token |
| FFN 参数 | MoE | 哪些专家处理这个 token;省下的计算会不会换成通信 |
| 重复计算的次数 | Looped Transformer | 共享一套参数多算几轮;少参数不代表低延迟 |
这些组件可以组合,不是只能选一个。读具体配置时,仍要确认它放在哪层、哪个位置,以及有没有为这种组合重新训练。
想追进展,也先找它改的环节。Muon接在优化器之后,DFlash / DFlash 2接在 KV cache 之后;前者讲参数更新,后者讲生成时的草拟与验证,不需要按发表年份一起读。
模型怎样学:从输入到一次更新
| 先弄清什么 | 阅读入口 | 接着核对什么 |
|---|---|---|
| 文本怎样切开 | BPE、WordPiece 与 Unigram | 词表(vocabulary)、byte coverage 与模型权重是否兼容 |
| 序列梯度怎样传播 | BPTT 与门控 | 乘法链为什么会衰减,LSTM 的加性路径改变了什么 |
| 为什么训练集好、验证集差 | 泛化与诊断 | 过拟合(overfitting)、泄漏与分布变化,别用同一种办法处理 |
| 初始值与梯度尺度 | 激活与初始化 | Xavier / He 的假设,深层网络的尺度变化 |
| 梯度怎样变成参数变化 | SGD 到 AdamW | 动量、二阶矩与 weight decay 各管什么 |
| 哪些位置提供监督 | 语言模型目标 → 一次训练更新 | Shift、mask、有效 token 数与梯度累积 |
| 数据怎样送进训练 | 预训练流程 | 去重、混合、packing、验证集与断点恢复 |
| 同时预测多个位置 | Multi-token prediction | 额外目标怎样对齐;训练收益与生成加速分开看 |
| 训练为什么占显存 | 精度与显存 | 权重、梯度、优化器状态、激活分别算账 |
需要把这些步骤写出来,配合 PyTorch 五章。它从存储和 shape 开始,最后跑一个完整训练循环,不要求先会分布式训练。
模型怎样生成:不要把几种“省”混起来
举个例子:上下文从 4K 变成 32K,有些方法让每个位置存得更少,有些方法让每次读取的位置更少,还有些只是改善数据搬运。它们影响的成本不同。
| 机制 | 主要改变什么 | 不要误读成什么 |
|---|---|---|
| KV cache、MQA / GQA | 复用历史 K/V;减少 K/V 头数 | 不再需要处理历史信息 |
| RoPE、插值与 YaRN | 位置信息怎样参与 attention | 上下文长度调大后,模型必然能用好远处证据 |
| NoPE 与顺序信息 | 不加显式位置编码(positional encoding)时,顺序还能从哪里来 | 任意 checkpoint 都能直接关掉 RoPE |
| FlashAttention | 精确 attention 的分块与访存 | 自动删掉一部分 attention 配对 |
| PagedAttention | 多请求的 KV cache 如何分块存放 | 改变模型学习到的 attention 规则 |
| MLA 与 sparse attention | 压缩每个位置的状态,或选择读取哪些位置 | 所有方法都在做同一种压缩 |
比较时先固定任务、上下文长度、batch 和输出长度,再看显存、首 token 延迟与后续生成速度。只写“更快”,读者没法知道快在哪里。
最后回到模型报告
模型家族精读把这些部件接回具体版本。读报告时可以做一张小记录:改了什么 → 解决哪个瓶颈 → 对照怎么做 → 多付了什么代价。
一个组件的算例说明它怎样工作;模型报告里的消融(ablation)说明它在那套实验里有没有帮助。两者都要看,但不能互相替代。
本页术语 4
- 词表 vocabulary
- 模型能输出的所有 token 的集合
- 过拟合 overfitting
- 训练集越来越好,没见过的数据反而变差
- 位置编码 positional encoding
- 把「第几个 token」的信息注入表示
- 消融 ablation
- 去掉一个组件再测一次,用来判断它到底有没有贡献