其中
若记
因此 Attention 的计算复杂度是
在输入序列较长的应用场景中,例如:
平方级的复杂度导致 Self-Attention 计算速度显著变慢,限制了大模型在这些场景中的广泛应用。
本质上,计算 Self-Attention 的过程就是让所有 token “注意” 其他所有 token 的过程。
联想:平时我们在阅读文章时,并不会一个字一个字地理解,往往是通读一遍抓住关键词,就能掌握大致意思。
问题:真的需要每个 token 都“注意”所有其他 token 吗?
在 llama3 模型上输入 "A is B. C is D. A is" 并设置 max_new_tokens=1 (prefill) 得到以下 Attention Heatmap(部分),其中颜色由暗到亮(由紫到黄)表示激活值从小到大(0-1)。
在 Self-Attention 计算过程中:
Sparse Attention 可以如下表述:
其中
例如,对于
由于训练需要消耗大量资源,学术界主要聚焦在 Training-free 或只要简单训练的方法上;而部分大模型厂商(如 DeepSeek)正在尝试 Training-based Sparse Attention。
Sliding windows: 维护一个固定大小的窗口,保留最近的 tokens 参与计算,其余全部丢弃。


总体上看,这些固定的模式往往不能适应文本生成中变化的关键 token,或多或少会有较显著的精度损失。

优点:相较于 static pattern,dynamic pattern 类的方法精度更高;
缺点:由于计算最合适的 tokens 会引入一定 overhead,综合下来会比简单的 static pattern 方法慢(但是相比 dense attention 还是有加速效果);同时,如何设计选择算法也依赖经验(启发式)。

总体而言,Training-based 方法由于其成本高,当前大模型厂商少有投入。但从 DeepSeek 公布的效果来看(NSA),训练后的原生 Sparse Attention 精度几乎无损甚至能反超 Dense Attention,推理速度也更快。


### Paged Attention Demo(视频) <video src="https://cdn-uploads.huggingface.co/production/uploads/6527e89a8808d80ccff88b7a/DP2zDJTAU-yHrxVRh5GUt.mp4" controls width="100%" poster="../images/2025/l12/paged_attention.png"> Your browser does not support the video tag. </video> (注:此视频仅在 HTML 播放,PDF/PNG 导出不支持播放) ---