3.2 KiB
3.2 KiB
注意力机制演进
大上下文窗口背后的底层技术支撑——没有这些创新,1M tokens 就只是理论数字。
核心问题
原始 Transformer 的自注意力复杂度是 O(n^2):
- 4K tokens → 1600 万次计算
- 128K tokens → 163 亿次计算
- 1M tokens → 1 万亿次计算
不解决这个问题,长上下文就是空谈。
关键创新时间线
| 时间 | 创新 | 影响 |
|---|---|---|
| 2017.06 | 原始 Transformer / 自注意力 | "Attention Is All You Need";O(n^2) 复杂度限制了上下文长度 |
| 2019-2020 | 稀疏注意力变体 | Longformer、BigBird;降低注意力复杂度,支持更长序列 |
| 2022.05.27 | FlashAttention | IO 感知的精确注意力 + 分块计算;2-4x 加速;让长上下文训练变得实际可行 |
| 2023 | FlashAttention-2 | 更好的并行和工作分配 |
| 2023.08 | Ring Attention | 分块并行 Transformer;将注意力计算分布到多设备,理论上支持"无限"上下文 |
| 2023.11 | Striped Attention | 优化 Ring Attention 在因果 Transformer 上的效率 |
| 2024 | FlashAttention-3 | 异步计算 + 低精度支持 |
| 2024.02 | Ring Attention 处理百万级视频 | 实际验证 1M+ token 处理能力 |
FlashAttention:最关键的突破
传统注意力
Q, K, V 矩阵(全在 GPU HBM 中)
↓
计算完整 n×n 注意力矩阵(写回 HBM)
↓
与 V 相乘(再次读写 HBM)
问题:GPU 的计算很快,但 HBM 读写是瓶颈
FlashAttention
Q, K, V 矩阵
↓
分块(Tiling):切成小块放入 SRAM
↓
在 SRAM 中完成注意力计算(不写回中间结果)
↓
只输出最终结果到 HBM
效果:减少 HBM 读写次数,2-4x 加速,无精度损失
Ring Attention:分布式长上下文
设备 1 设备 2 设备 3 设备 4
┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
│ Q块1 │ │ Q块2 │ │ Q块3 │ │ Q块4 │
│ K块1 │ ──→ │ K块1 │ ──→ │ K块1 │ ──→ │ K块1 │ ──→ (环形传递)
│ V块1 │ │ V块1 │ │ V块1 │ │ V块1 │
└──────┘ └──────┘ └──────┘ └──────┘
KV 块在设备间环形传递,每个设备只需要存储自己的 Q 块
→ 上下文长度随设备数线性扩展
→ 理论上:设备数 × 单设备上下文 = 总上下文
技术栈对应关系
| 上下文里程碑 | 底层技术支撑 |
|---|---|
| 4K → 32K | 模型架构优化(RoPE 位置编码等) |
| 32K → 128K | FlashAttention 让训练可行 |
| 128K → 1M | FlashAttention-2/3 + 稀疏注意力 |
| 1M → 10M | Ring Attention + 分布式计算 |
趋势
- 精确注意力没有被抛弃 —— FlashAttention 证明通过 IO 优化,精确注意力也能高效
- 分布式是长上下文的终极答案 —— Ring Attention 让上下文长度和硬件规模线性相关
- 硬件在追赶 —— 更大 SRAM、更快 HBM 让长上下文的成本持续下降