一句话定义
递归稀疏注意力(Recursive Sparse Attention)是一种把注意力计算组织成“层层筛选”的长上下文方案:模型不再让每个词元(token)和所有词元两两比对,而是先粗后细、递归地在候选区间里做路由(routing),只对少数真正相关的片段付全注意力的代价,从而把成本从随长度平方增长压到接近对数增长。
原理:像在图书馆里查资料
全注意力(Full Attention)好比把馆里每本书的每一页都和其他所有页互相比对一遍——书一多,工作量按平方爆炸。AI 词典:滑动窗口注意力">滑动窗口注意力(Sliding Window Attention)则是只翻当前页和前后几页,便宜,但看不到远处的书架。
递归稀疏注意力的做法更像查目录:先把长文本切成块,用一个便宜的打分器(比如把每块词向量池化成一个摘要向量)粗选出“值得看”的几块;对被选中的块再切细、再选一次;如此递归下去,直到粒度落到单个词元或一个小窗口。每一层只保留常数个分支,深度是 log(n/w),于是总代价大约是 O(n log n),甚至可以做到接近线性。同时通常会保留一条固定局部窗口作为兜底,保证近处细节不丢。
它和相邻概念的区别
| 方案 | 计算成本 | 视野 | 主要短板 |
|---|---|---|---|
| 全注意力 | O(n²) | 全局 | 长序列显存与延迟爆炸 |
| 滑动窗口 | O(n·w) | 局部 | 远处信息要靠多层堆叠间接传递 |
| RoPE 扩展 | 仍是 O(n²) | 全局 | 只改位置编码,算力没省,外推有限且常需微调 |
| 原生稀疏注意力 | 约 O(n) | 全局稀疏 | 依赖高度定制的 GPU 内核 |
| 递归稀疏注意力 | 约 O(n log n) | 全局自适应 | 路由难训练,实现复杂 |
几个关键差别:滑动窗口的视野是固定的,递归稀疏的视野是内容驱动、可以“按需加深”的;原生稀疏注意力(Native Sparse Attention)通常是一条固定流水线(压缩、选择、窗口几路并行),而递归稀疏强调的是选择过程本身层层递进;RoPE 扩展(位置插值、NTK 缩放一类)是改坐标,递归稀疏是改计算图,前者不省算力,后者真的省。它也和检索增强(RAG)不同——那是模型外部查库,这是模型内部的软路由。
为什么它能长度外推
递归结构里每一层只关心“局部该看谁”,学到的是一种相对的选择策略,而不是对绝对位置编号的记忆。因此短序列上训出来的路由习惯,迁移到长得多的序列上依然成立,这就是长度外推(length extrapolation)的来源。
对从业者和普通人的意义
对从业者:它缓解的是 KV 缓存与显存压力、以及长输入的预填充(prefill)延迟。真正的坑在于,稀疏选择不可导,训练要靠直通估计或强化式信号;块选择在 GPU 上访存不规整,“理论 FLOPs 降了、实际墙钟时间没降”是常态,必须配套内核融合。别只看论文里的复杂度曲线。
对普通人:意味着长文档、整个代码库、几小时会议记录可以一次读完,且跨章节引用不容易漏。具体实现细节各家论文不同,以论文原文与官方页面为准。
