模型架构 进阶

稀疏注意力

别名:Sparse Attention / Block Sparse Attention / 块稀疏注意力

只计算部分 token 对(局部窗口、全局 token、块稀疏),降低长序列的注意力和显存开销。

更新于 2026/11/08
Attention长上下文稀疏

一句话定义

稀疏注意力不计算所有 token 对,而是只保留一部分连接:局部窗口、全局 token、跨步连接或块稀疏模式,从而减少计算和显存。

为什么需要它

标准 Attention 是 N×N 的全连接,长序列下 O(n²) 很快成为瓶颈。语言、图像、音频里很多关系是局部的,没必要让每个 token 都看所有 token。

怎么工作

  • 局部窗口:每个 token 只看前后 w 个 token,复杂度 O(n·w)。
  • 全局 token:少数特殊 token 看全序列,负责汇总长程信息。
  • 跨步/膨胀:隔一段取一个连接,扩大感受野。
  • 块稀疏:按块划分,只计算选中的块,对 GPU 更友好。
  • 模式可以组合,例如局部窗口 + 全局 token + 少量随机连接。

Block Sparse

把序列按块划分,只计算预先选定的块对;块大小和模式要匹配 GPU,否则稀疏带来的收益会被索引开销吃掉。

稀疏注意力:只计算选中的 token 对

关键取舍

  • 计算和显存下降,但可能丢掉未被连接的长程关系。
  • 稀疏模式要和任务匹配;长文档问答通常需要全局 token 或检索配合。
  • 块稀疏对硬件友好,非规则稀疏未必真的更快。
  • 局部窗口负责邻近关系,全局 token 负责汇总;块大小要匹配 GPU。
  • 评测时要比较同预算下的质量和吞吐,而不是只看复杂度。
  • 模式越规则,越容易在 GPU 上高效实现。

常见误区

  • FlashAttention 不是稀疏注意力:它优化 IO,但仍计算完整注意力。
  • 稀疏注意力不是“无损压缩”,它改变了模型能看到的连接。
  • 稀疏不等于一定更快;模式、块大小和算子实现决定收益。

用在哪里

  • 长文档、长音频、高分辨率图像、基因组等超长序列。
  • 需要控制显存/延迟,同时保留局部结构的场景。
  • 与全局 token、检索或混合架构配合,弥补长程信息。

相关概念