Transformer 主干把每个 token 的初始向量变成包含上下文的向量。LM Head 再把这个向量投影成下一 token 的词表分数。
先读:基础原理总览。本文先看整体,各模块的细节见下表中的链接。
1. 整体结构
Section titled “1. 整体结构”ids [B,T] ↓ Embedding + 位置信息X [B,T,D] ↓ 重复 L 个 Block:Attention → 残差;MLP → 残差 ↓ 最后归一化hidden [B,T,D] ↓ LM Head(D → Vocab)logits [B,T,Vocab]| 模块 | 解决什么问题 | 深入 |
|---|---|---|
| Embedding 与位置 | 整数如何变成向量,顺序如何进入模型 | 输入表示 |
| Attention + causal mask | 当前 token 如何读取已有上下文 | 注意力 |
| Norm、残差、MLP | 如何逐层改进表示,并保持接口维度 | 一个 Block |
| LM Head | 表示如何变成 100 个候选分数 | 训练与生成的数据流 |
| KV Cache | 生成时如何复用历史计算 | 缓存 |
例子:读到“窗边”之后
Section titled “例子:读到“窗边”之后”教学输入 [11,23,37] 表示“小猫 坐在 窗边”。Embedding 后是 [1,3,8]。每层 Block 保持这个外部形状,同时改变向量内容。LM Head 产生 [1,3,100]。
第 0 个位置预测“坐在”;第 1 个位置预测“窗边”;第 2 个位置预测“晒太阳”。最后一行不是“窗边的概率”,而是读完前缀后,下一个 token 的分数。
Decoder-only 与原始 Transformer
Section titled “Decoder-only 与原始 Transformer”这一组文章以 decoder-only 为主线:没有独立 Encoder,也没有读取 Encoder memory 的 cross-attention。2017 年原论文是 Encoder–Decoder;翻译时,源语言进入 Encoder,目标语言前缀进入 Decoder。原图和具体数据流见 Encoder–Decoder 对照。两种架构的输入方式不同,不要混在一起理解。
GPT-2 使用学习式位置向量、LayerNorm、GELU 和 MHA。许多现代模型换用 RoPE、RMSNorm、SwiGLU 和 GQA,但“输入表示 → 多层 Block → 输出分数”的骨架仍可用于定位组件。具体模型以配置为准,不把一组参数当成所有 Transformer 的规定。