第19课:Transformer 底层原理 —— 从 Self-Attention 到 RoPE
本节目标:理解 Self-Attention 公式推导与手撕代码、掌握 RoPE/KV Cache/FlashAttention 核心原理、了解现代 LLM 架构标配(RMSNorm/GQA/SwiGLU)。
这是所有 LLM 岗位的必考底层。不要求逐行背,但要求能讲清原理。
1. Transformer 的革命
| 维度 | RNN/LSTM(旧时代) | Transformer(新时代) |
|---|---|---|
| 并行性 | 串行处理 | 完全并行 |
| 长依赖 | 远距离信息衰减 | 任意距离直接连接 |
| 训练速度 | 慢 | 快(GPU 并行) |
| 可扩展性 | 难以扩到超大 | 万亿参数无障碍 |
2. Self-Attention 公式
code
Q · Kᵀ
Attention(Q,K,V) = softmax(─────────) · V
√d_k
| 符号 | 含义 |
|---|---|
| Q (Query) | 当前位置"在问什么" |
| K (Key) | 每个位置"是什么" |
| V (Value) | 每个位置"的内容" |
| d_k | Key 的维度,用于缩放防止梯度消失 |
为什么除以 √d_k?
假设 q, k 是独立随机向量(均值 0 方差 1),则 q·k 的方差 = d_k。d_k 越大 → 数值越大 → softmax 后梯度接近 0。除以 √d_k 把方差归一化回 1。
实验证明:不除会让大模型训练崩溃。
Multi-Head Attention
单头只能学习一种关注模式。多头并行学习多种:
Code
Head 1: 学习"主谓关系"
Head 2: 学习"动宾关系"
Head 3: 学习"修饰关系"
Head 4: 学习"指代关系"
...
d_model=512 → 拆成 8 个 head,每个 64 维
3. 三大架构变体
| 架构 | 注意力 | 适用 | 代表 |
|---|---|---|---|
| Encoder-Only | 双向 | 理解任务 | BERT |
| Decoder-Only | 单向(只看左边) | 生成任务 | GPT/Llama/Qwen/DeepSeek |
| Encoder-Decoder | 双向+交叉 | 翻译/摘要 | T5/BART |
为什么现代 LLM 都用 Decoder-Only?
① 训练简单:Next Token Prediction 一招打天下 ② 涌现能力强:规模扩展时表现更好 ③ 通用性强:所有任务都能转化为生成 ④ 训练数据充足:互联网文本天然适合 NTP
4. RoPE:旋转位置编码
Attention 本身没有位置信息——"我爱你"和"你爱我"对它一样。
RoPE 核心思想:用旋转矩阵编码位置。
code
对 Q, K 应用旋转:
q'_m = R_m · q_m
k'_n = R_n · k_n
那么 (q'_m)ᵀ · k'_n 只依赖于 (m-n) 相对位置!
三大优势
- 显式编码相对位置
- 外推性强(训 4K,能跑 32K)
- 数学优雅,计算高效
Llama/Qwen/DeepSeek 全部用 RoPE。这是现代 LLM 的标配。
5. KV Cache:推理加速核心
问题
生成第 N 个 token 时,要重新计算前 N-1 个 token 的 K, V?→ O(N²) 复杂度。
解决
缓存之前的 K, V:
Code
第1步:计算 K_1, V_1,缓存
第2步:复用 K_1, V_1,只算 K_2, V_2
第N步:只算 Q_N, K_N, V_N,与缓存的 [K_1..K_{N-1}] 做 attention
复杂度:O(N²) → O(N)
速度:10-100 倍加速
KV Cache 显存优化演进
| 方案 | Cache 大小 | 代表模型 |
|---|---|---|
| MHA | 100% | GPT-3 |
| GQA | ~25% | Llama-2/3, Qwen2.5 |
| MQA | ~12.5% | PaLM |
| MLA | ~7% | DeepSeek-V2/V3 |
6. 现代 LLM 架构公式
code
Decoder-Only + RMSNorm + GQA/MLA + RoPE + SwiGLU + (MoE)
| 组件 | 作用 | 现代选择 |
|---|---|---|
| Norm | 稳定训练 | RMSNorm(比 LayerNorm 快 7-64%) |
| Attention | 上下文理解 | GQA(Llama)/ MLA(DeepSeek) |
| 位置编码 | 注入位置信息 | RoPE(数学优雅+外推强) |
| FFN | 增加非线性 | SwiGLU(比 ReLU 效果好) |
| 扩展 | 增加容量 | MoE(671B 总参/37B 激活) |
7. FlashAttention
问题:标准 Attention 显存 O(N²),受限于显存带宽。
FlashAttention 创新:
- 分块计算(tiling),在 SRAM 里完成
- 不存储完整的 N×N attention 矩阵
- 反向重计算节省显存
效果:训练速度 2-4x,显存减少 10-20x,支持 128K+ 上下文。现代框架默认启用,已成标配。
核心要点
- Self-Attention 公式必背:softmax(Q·Kᵀ/√d_k)·V
- 为什么 Decoder-Only:训练简单 + 涌现能力强 + 通用性强
- RoPE 是现代 LLM 标配——用旋转矩阵编码相对位置
- KV Cache 让推理从 O(N²) 降到 O(N)
- 现代 LLM 公式:Decoder-Only + RMSNorm + GQA/MLA + RoPE + SwiGLU
下一课:多模态 LLM 与多模态 RAG。