要解决的问题
全局稠密自注意力的计算量随序列长度平方增长,朴素实现的注意力矩阵也占平方空间;FlashAttention 已能避免完整矩阵的存储,但仍计算所有允许的位置对。稀疏注意力进一步减少这些位置对,以降低计算量,同时需要评估质量变化。
核心方法
- 局部窗口:每个 token 只关注固定范围内的位置。双向模型可以看前后窗口;自回归语言模型只能看当前位置及其之前的窗口,不能偷看未来。多层叠加后,感受野可以扩展到更远的位置。
- 全局 token:少数特殊 token 可以关注全部位置,也被全部位置关注,负责传递全局信息。
- 块状稀疏:把序列切成块,只计算部分块之间的注意力。
不要混淆分布式计算与稀疏模式:Ring Attention 把序列分布到多台设备,沿环传递键值块,可以精确计算稠密注意力;它不是稀疏注意力,也没有把总计算量从平方阶降为线性阶。
代表工作
- Longformer(2020):局部窗口加全局 token 的组合,在单机上处理长文档。
- Ring Attention(2023,作为对照):通过分布式分块与通信重叠扩展精确注意力可处理的长度,实际仍受设备、算力和通信预算限制。
- Mistral 7B(2023):在主流基座模型中采用滑动窗口注意力,配合滚动缓冲的 KV 缓存。
挑战
- 通用、高效的稀疏注意力内核仍然稀缺,理论上省下的计算不一定转化为实际加速。
- 不同的稀疏模式在下游任务上的表现差异很大,精确召回类任务尤其容易受损。
参考资料
相关专题
- 长上下文:稀疏与局部注意力是支撑长上下文的手段之一。
- 注意力加速内核:另一条路线:不做近似,只优化精确注意力的实现。
- KV缓存压缩与注意力变体:滑动窗口也能限制 KV 缓存的大小。
- 高效序列架构:彻底换掉注意力的亚二次架构。