# 注意力机制演进 > 大上下文窗口背后的底层技术支撑——没有这些创新,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 让长上下文的成本持续下降