阅读深度

稀疏注意力速览(Sparse Attention,2019 ~ 2026)

保留精确注意力、只算「选中的」token 对——核心问题是选 block 还是选 token、怎么选 · 检索时间 2026-08-23 · 每篇 = 配方 + 一句话(问题 / 方法 / 核心)

零基础读法:从「注意力为什么贵」到「怎么评价稀疏化」

定义:Transformer 的自注意力让每个 token 都看前面所有 token,所以序列长度 n 增大时,算力近似按 n² 增长。稀疏注意力的目标是不改「注意力要算得准」这件事,只把 n² 里明显不重要的部分跳过。

方法:两种主要粒度。选 block 是把连续 token 分成块,只处理整块,硬件更友好;选 token 是直接挑单个 token,更细但更难在 GPU 上高效实现。选择方式可以手工设计、MoE 式路由,或让模型学一个 indexer。

模型:早期 Longformer、BigBird 用滑窗 + 全局 token + 随机模式;近期 MoBA 用 MoE 路由选块,NSA 组合压缩/选择/滑窗,MiniMax MSA 在 GQA 组内做 Top-k 块选择,DeepSeek DSA 做 token 级选择。

算法:核心循环是「打分 → 选 Top-k → 精确注意力」。打分可以用 query-key 分数、路由分数或 landmark 相似度;选择后要保证 KV 访问连续、能上 tensor core,否则理论稀疏换不来实际加速。

评测:通常看语言建模 perplexity、长上下文检索准确率、1M 上下文下的注意力 FLOPs/KV 缓存降幅,以及实际 prefill/decode 延迟。高质量工作必须同时给出「质量掉多少」和「速度省多少」。

所以看每篇论文时,先问三句:它选 block 还是 token?靠什么规则选?省掉的算力是否真变成端到端加速?

0. 记法(这个领域的「最大公约数」)

稀疏注意力 = 不把 $O(n^2)$ 的注意力矩阵全算一遍,而是先「选」出值得算的 token 对,再在子集上做精确注意力。所有方法的差别最终落在两个轴:选择粒度(选 block 还是选 token)和选择方式(手工规则 / 路由 / 学习)。配方围绕这两轴:

记号意思
dense全注意力,$O(n^2)$,不选、全算
sparse(block)块级选择:挑连续的 token 块,块内保留全部 token
sparse(token)token 级选择:直接挑单个 token(细粒度)
compress(m:1)块压缩:每 m 个连续 token 压成 1 个 KV 条目(m=4/32/128)
select(rule|route|learned)选择方式:手工规则 / MoE 式路由 / 端到端学习
landmark每个 block 用 landmark 代表,先检索块再做局部注意力
hybrid多种稀疏模式 / 稀疏+滑窗 / 稀疏+线性 交错

配方格式:模型: sparse(<block|token> + 选择方式) -> <复杂度/上下文> [选择机制]。例:MoBA: sparse(block + route) -> 10M [MoE 式块路由]。

一句话分清两派:选 block = 一次挑一整块连续 token(实现便宜、对齐硬件,但块内可能有冗余);选 token = 一个个挑最相关的 token(更精细、召回更准,但选择本身和硬件对齐更难)。DeepSeek 从 NSA 的「选 block」演进到 DSA 的「选 token」,再到 V4 用「块压缩 + 条目选择」的 CSA/HCA,就是这条粒度的权衡史。

1. 主线:从「算不动」到「选得准」,粒度越做越细

  1. 2019-2020 早期(算得动):Sparse Transformer / Reformer / Longformer / BigBird 用固定稀疏模式(滑窗、全局、随机、哈希)把复杂度降下来,不关心「选得准不准」。
  2. 2023-2024 检索式(选得对):Landmark / MInference / MoBA 开始按「相关性」动态选块,把稀疏从「固定模式」变成「检索/路由」。
  3. 2025 DeepSeek NSA → DSA(原生 + 粒度细化):NSA 把压缩、块选择、滑窗三路做成「硬件对齐、原生可训练」;DSA 把选择粒度从 block 细化到 token。
  4. 2026 DeepSeek V4 CSA + HCA(压缩 + 混合):先在序列维度把 KV 压缩(4:1 的 CSA、128:1 的 HCA),再在压缩条目上做稀疏/密集注意力,把 1M token 的 KV 和 FLOPs 都砍到 V3.2 的约 1/10。
  5. 2026 厂商落地(混合 SWA + DSA 系):GLM-5 直接采用 DSA、LongCat 优化 DSA 索引器、小米 MiMo 用 128-token SWA + 全局 5:1、StepFun 用 3:1 SWA/全注意力、Meta SP-KV 用学习式 KV 裁剪——学术稀疏开始进入开源/闭源旗舰的默认配置。

两条并行轴:选择粒度(block → token)、选择方式(固定 → 路由 → 学习 → 压缩后选择)。交点是一个开放问题:是先压缩再选(CSA/HCA),还是先选再算(DSA/Seer)?

2. 早期稀疏注意力(2019-2020,先让长序列算得动)

第一代只求「跑得动」:用固定稀疏模式替代全注意力,不追求动态选择。这段的遗产是「注意力不必是 $O(n^2)$」。更完整的 hardware 视角(FlashAttention / PagedAttention)见 long-context.html。

Sparse Transformer(1904.10509,Child et al. 2019)
sparse(fixed) -> $O(n\sqrt{n})$ [strided + fixed 两种固定模式]
问题 注意力时间/显存随长度平方涨;方法 把注意力矩阵分解成 strided(跨步)和 fixed(固定局部)两种稀疏模式;核心 稀疏注意力开山,复杂度 $O(n\sqrt{n})$;后续 Longformer / BigBird 指出固定模式不通用、质量有损,NSA 改成原生可训练动态选择——稀疏线被继承、固定模式被改。

Reformer(2001.04451,Kitaev et al. 2020)
sparse(LSH) -> $O(n \log n)$ [局部敏感哈希 + 可逆残差]
问题 全注意力算不动、还要存激活;方法 用局部敏感哈希只让相似 token 互相注意,配可逆残差省激活内存;核心 哈希近似注意力路线;后续指出 LSH 有近似误差、实现复杂,主流未沿用,这条线基本被弃。

Longformer(2004.05150,Beltagy et al. 2020)
sparse(滑窗+全局+膨胀) -> $O(n)$ [三种模式组合]
问题 长文档放不进全注意力;方法 组合滑窗、任务相关全局 token、膨胀窗口;核心 $O(n)$ 复杂度,长文档 NLP 常用底座;后续 NSA 指出固定稀疏不通用、选择该可训练,把稀疏改成原生可训练 + 硬件对齐——滑窗/全局思想被继承。

BigBird(2007.14062,Zaheer et al. 2020)
sparse(随机+滑窗+全局) -> $O(n)$ [随机图 + 理论保证]
问题 稀疏注意力凭什么能替代全注意力;方法 随机、滑窗、全局三类边的稀疏图,给出图灵完备性理论;核心 既省算力又带理论保证;后续 NSA / DSA 指出随机图模式不如动态选择,改成按分数选 token / block——理论保证被保留、固定随机模式被改。

3. DeepSeek 稀疏注意力谱系(NSA → DSA → CSA + HCA)

这是「选 block 还是选 token」最清晰的一条演进线:NSA 把稀疏做成原生可训练 + 硬件对齐,选择粒度是 block;DSA 用「闪电索引器」把粒度细化到 token;V4 的 CSA / HCA 反过来先块压缩 KV,再在压缩条目上选择或直接密集,把 1M token 的成本砍到 V3.2 的约 1/10。

NSA(Native Sparse Attention,DeepSeek)(2502.11089,Yuan et al. 2025,ACL 2025 Best Paper)
sparse(block) -> 64K 原生可训练 [压缩 + 块选择 + 滑窗三路]
问题 稀疏注意力要么不可原生训练、要么硬件不友好;方法 三路并行:token 压缩(每块压成 1 个粗 token)、块级 token 选择(按块重要性选 top-k 块、块内保留细粒度 token)、滑动窗口,统一成硬件对齐算子、端到端训练;核心 27B 模型匹配 full attention、64K 加速,「原生稀疏 + 硬件对齐」的标杆,选择粒度是 block。

DSA(DeepSeek Sparse Attention,DeepSeek-V3.2)(2512.02556,DeepSeek-AI 2025)
sparse(token) -> 细粒度 token 选择 [lightning indexer + top-k token]
问题 NSA 选 block 会带进块内冗余,能不能更细地选到单个 token;方法 用「闪电索引器」(lightning indexer)算 query 与每个前序 token 的廉价索引分,直接选 top-k 个单个 token(细粒度);核心 把稀疏选择的粒度从 block 细化到 token,是 V3.2-Exp 的注意力,长上下文训练/推理效率大升。

CSA(Compressed Sparse Attention,DeepSeek-V4)(2606.19348,DeepSeek-AI 2026)
compress(4:1) + sparse(entry) -> 精确检索 [块压缩后 DSA 选择,top-k=512]
问题 直接对原始 token 做稀疏选择,KV 和 FLOPs 在 1M 尺度仍太重;方法 先把每 4 个连续 token 压成 1 个 KV 条目(压缩率 4),再对压缩条目做 DSA 式稀疏选择(索引器 64 头、维 128、top-k 512);核心 V4 的「精确检索」路径——先块压缩、再条目选择,兼顾召回与成本。

HCA(Heavily Compressed Attention,DeepSeek-V4)(2606.19348,DeepSeek-AI 2026)
compress(128:1) + dense -> 全局粗视野 [重度压缩后密集注意力]
问题 需要一个「全局粗粒度」视角来补 CSA 的局部精确;方法 每 128 个连续 token 压成 1 个条目,之后不再稀疏选择、直接密集注意力;核心 V4 的「全局视野」路径——重度压缩 + 密集,和 CSA 混合成 61 层(30 c4a + 31 c128a,外加最近 128 token 的滑窗原始 KV)。

DeepSeek-V4(混合注意力全景)(2606.19348,DeepSeek-AI 2026)
hybrid(CSA + HCA + SWA) -> 1M token [压缩 + 稀疏 + 滑窗交错]
问题 1M token 上下文里注意力是主要计算瓶颈;方法 混合 CSA(4:1 压缩 + 稀疏选择)、HCA(128:1 压缩 + 密集)、SWA(最近窗口原始 KV),配 MoE + Muon;核心 1M 上下文下 V4-Pro 单 token FLOPs 只有 V3.2 的 27%、KV 缓存只有 10%。

4. block 级选择派(一次挑一整块)

选 block 的好处是硬件友好(连续内存、好做 kernel)、实现便宜;代价是块内 token 可能冗余。代表:MoBA 用 MoE 路由选块、Landmark/HiLS 用 landmark 代表块、MiniMax SA 用 GQA 组内 Top-k 块选择、MInference 识别块稀疏模式。

MoBA(Mixture of Block Attention,Kimi)(2502.13189,2025)
sparse(block + route) -> 10M 上下文 [MoE 式块路由]
问题 稀疏注意力怎么又高效又选对块;方法 把 MoE 路由搬到注意力,每个 query 只路由到少数相关 block;核心 「注意力 MoE 化」,Kimi 10M 上下文的底座。

Landmark Attention(2305.16300,Mohtashami & Jaggi 2023)
sparse(block + landmark) -> 无限上下文 [landmark 代表块 + 检索]
问题 全注意力算不了无限长;方法 每个 block 用 landmark token 做代表,query 先检索相关 block 再做局部注意力;核心 检索式块稀疏的早期代表。

HiLS Attention(Hierarchical Landmark Sparse Attention)(2607.02980,Xiang Hu et al. 2026,Tencent Hunyuan)
sparse(block + 层级 landmark) -> 64×+ 外推 [压缩 chunk key → chunk-mass surrogate + inter/intra-chunk softmax + LM loss 端到端]
问题 之前 chunk-wise 稀疏(Landmark 等)有两个死穴:chunk 重要性估计表达力不足、选择过程端到端不可导,于是选不准、追不上 full attention;方法 HiLS 用压缩后的 chunk key 估一个 chunk-mass surrogate,把注意力因式分解成 inter-chunk(检索分数)与 intra-chunk(块内 softmax)两部分;检索分数直接参与前向注意力,next-token 损失的梯度能一路流回来,因此做的是原生稀疏训练;核心 域内长度打平/超过 full attention,外推 >64× 仍 90% 检索准确率,8K 训练的模型在 4M(约 512×)NIAH 上仍 90–100%;现有 full-attention 模型轻量续训即可转换,保住域内性能、换来超长外推 + 稀疏 KV 加速。它的边界是只解决「chunk 级选择」这一条线,与 DeepSeek CSA/HCA 的「先压缩再选」形成对台——1M+ 下谁更省、更准仍是开放问题。

MiniMax Sparse Attention(MSA)(2606.13392,2026)
sparse(block + local) -> $O(kB_k)$ [GQA 组内 Top-k block + 强制 local block]
问题 agentic / 仓库级代码要联合看几十万到百万 token,softmax attention 二次成本部署不起;方法 建在 GQA 上:把序列切成 $B_k$ 大小的 KV block,轻量 Index Branch 对每个 GQA group 用一个 index query head + 共享 index key head 先算 token 分数,再在块内 max-pool 得到 block 分数;每个 GQA group 独立 Top-k 选块,并强制保留当前 token 所在 local block。Main Branch 只在这些块上做精确 softmax attention,所以每 query 成本从 $O(N)$ 降到固定的 $O(kB_k)$。Index Branch 的 Top-k 不可导,训练时用 KL loss 让 index 分布对齐 Main Branch 概率(teacher stop-gradient),再加 indexer warmup / gradient detach 稳定稀疏训练;核心 1M 上下文时 attention compute 降 28.4x,H800 上 prefill 14.2x、decode 7.6x。

MInference(2407.02490,Jiang et al. 2024)
sparse(block + 动态模式) -> 10× 预填充加速 [A-shape / VS / Block-Sparse]
问题 长上下文预填充太慢;方法 免训识别 A-shape、Vertical-Slash、Block-Sparse 三种动态稀疏模式并据此计算;核心 动态块稀疏,prefill 加速一个数量级。

5. token 级选择派(一个个挑最相关的)

选 token 更精细、召回更准,但选择本身和硬件对齐更难。代表是「学出来的阈值」(SeerAttention)和 DeepSeek 的 DSA(见 §3)。与之相邻的「KV 驱逐」也常是 token 级(H2O / SnapKV / Quest),但驱逐是「丢掉 KV」而非「跳过计算」,见 long-context.html §5。

SeerAttention(Learning Intrinsic Sparse Attention)(2410.13276,2025)
sparse(token + learned) -> 90% 稀疏 [端到端学注意力阈值]
问题 手工稀疏规则不通用;方法 让模型端到端学习「哪些 token 对的注意力该保留」的阈值,达到内在稀疏;核心 「学出来的 token 级稀疏」而非手工设计。

H2O(Heavy-Hitter Oracle)(2306.14048,2023,交叉引用)
evict(token) -> KV 压缩 [保留 heavy-hitter token]
问题 KV 缓存线性涨;方法 注意力分数重尾,保留少数 heavy-hitter token + 最近 token;核心 token 级「驱逐」的起点,是稀疏选择的近亲(详见 long-context)。

6. 可切换 / 分布式(短长自适应与跨设备)

两条工程化支线:短上下文要 dense、长上下文要 sparse,能否无缝切换(InfLLM-v2);以及长序列单卡放不下,能否分布式分块(RingAttention)。

InfLLM-v2(Dense-Sparse Switchable)(2509.24663,2025)
sparse↔dense 可切换 -> 短长自适应 [语义块检索]
问题 短上下文要 dense、长上下文要 sparse,难兼得;方法 dense/sparse 可切换,短时全注意力、长时检索稀疏;核心 无缝短到长自适应。

RingAttention(2310.01889,Liu et al. 2023)
dense(分块环形) -> 近无限上下文 [分布式分块注意力]
问题 长序列单卡放不下、注意力矩阵爆炸;方法 序列分块、按环在设备间传递 KV,块间做注意力;核心 分布式分块把 dense 扩到百万级(严格说不是稀疏,是分布式的块化 dense)。

7. 厂商落地(混合 SWA / DSA 系 + KV 缓存)

2026 年这条线从「学术方法」走向「厂商落地」:GLM-5 直接把 DSA 当默认注意力,LongCat 用流式/跨层/层级三个索引策略修 DSA 闪电索引器的工程瓶颈,小米 MiMo 走「128-token 滑窗 + 全局 5:1」、StepFun 走「3:1 滑窗/全注意力」,Meta 用「学习式 KV 裁剪」把缓存压 3-10x,HySparse 在 80B MoE 里只留 5/49 层 full、KV 近 10x。共同矛盾是:稀疏/混合确实省算力和 KV,但要追平 full attention 的召回,且索引器与缓存工程不能拖后腿。这些落地是 §2-§6 学术方法的「上线版」,也把「先选再算 vs 先压缩再选」「block vs token」的争论直接带进旗舰配置,汇成本文末尾的共识与分歧。

GLM-5(from Vibe Coding to Agentic Engineering)(2602.15763,Zhipu 2026)
sparse(DSA) -> 省训练/推理 + 保长上下文 [DSA + 异步 RL]
问题 下一代基础模型的训练与推理成本高;方法 采用 DSA 显著降低训练/推理成本、同时保持长上下文 fidelity,并配套解耦生成与训练的异步 RL 基础设施;核心 开源旗舰把 DeepSeek DSA 当默认注意力落地,说明 DSA 正从单一模型走向厂商通用底座。

LongCat Sparse Attention(LSA)(2608.01662,Meituan 2026)
sparse(DSA + 三层索引优化) -> 1M 原生训练 [流式 / 跨层 / 层级索引]
问题 DSA 闪电索引器有 $O(L^2)$ 打分开销、输出访存不连续;方法 三个正交策略:流式感知索引把散落 KV 转成连续布局、跨层索引复用单层结果并配蒸馏、层级索引粗到细收缩候选集;核心 69B-A3B 到 560B-A27B 都追上 full attention,支撑 LongCat-2.0(1.6T-A48B)并原生训到 1M token。

LongCat ZigZag Attention(LoZA)(2512.23966,Meituan 2025)
sparse(ZigZag) -> 现成 full-attn 模型转稀疏 + 1M [轻量续训]
问题 已有 full-attention 模型要长上下文,但重训成本高;方法 ZigZag 稀疏注意力用有限算力把任意 full-attention 模型转成稀疏版本;核心 中途续训 LongCat-Flash 得到 LongCat-Flash-Exp,可处理到 1M token。

MiMo-V2-Flash(2601.02780,Xiaomi 2026)
hybrid(SWA 128 : global = 5:1) -> 309B/15B agentic [SWA+全局交错 + MTP]
问题 快速推理与 agentic 能力怎么同时要;方法 128-token 滑窗注意力与全局注意力 5:1 交错,27T token + Multi-Token Prediction,原生 32K 再扩到 256K;核心 小米旗舰:滑窗管局部、全局管召回,5:1 是不同于 Qwen/Kimi 3:1 的另一种配比。

HySparse(Hybrid Sparse Attention)(2602.03560,Xiaomi 2026)
sparse(full-oracle + KV 复用) -> 近 10x KV 降 [full 层选 token,sparse 层复用 KV]
问题 稀疏层选 token 要额外 proxy,且往往只省算力不省 KV;方法 用 full attention 层当 oracle 选重要 token,稀疏层直接复用 full 层的 token 选择与 KV 缓存;核心 80B MoE 49 层只留 5 层 full,仍超 full attention 与 SWA 基线,同时省计算和内存。

Step 3.5 Flash(2602.10604,StepFun 2026)
hybrid(SWA : full = 3:1) -> 196B/11B 前沿 agentic [SWA/full 交错 + MTP-3]
问题 前沿 agentic 智能与推理效率难兼得;方法 196B 总参 / 11B 激活的稀疏 MoE,3:1 滑窗/全注意力交错,配 MTP-3 降多轮交互延迟;核心 与 Qwen3-Next、Kimi 同款 3:1 混合配方,落到 StepFun 的开源前沿小激活模型。

SP-KV(Self-Pruned Key-Value Attention)(2605.14037,Meta FAIR 2026)
evict(learned utility) -> KV 3-10x 压缩 [预测未来效用 + 局部窗口]
问题 测试时 compute / agent 时代序列更长,KV 缓存是瓶颈;方法 轻量效用预测器给每个 KV 打分,近 token 永远保留,旧 token 只有预测效用过阈值才写进缓存并参与全局注意力,与 LLM 端到端 next-token 联合训练;核心 动态稀疏化(不固定压缩比),并揭示分层/分头稀疏模式可指导混合局部-全局架构设计。

Stem(Tencent Hunyuan)(2603.06274,ICML 2026)
sparse(token + 位置衰减/输出感知) -> 省算力 + 降预填充延迟 [TPD + OAM]
问题 因果注意力里靠前 token 参与所有后续聚合,统一 top-k 稀疏忽略这种累积依赖;方法 Token Position-Decay 做位置相关的 top-k、保留靠前 token 的递归依赖;Output-Aware Metric 按近似输出幅度优先保留高影响 token;核心 即插即用的预填充稀疏模块,省算力同时保精度。

8. 共识与分歧(速记版)

共识:

  1. 稀疏注意力保留「精确注意力」,只是挑着算,比线性压缩更接近 softmax 的召回质量。
  2. 「原生可训练 + 硬件对齐」是 2025 后的硬标准(NSA 确立,HiLS/CSA 延续)。
  3. 选择粒度是核心权衡:block 便宜但冗余,token 精确但难对齐,DeepSeek 从 NSA(block)→ DSA(token)→ CSA/HCA(块压缩 + 条目选择)完整走了一遍。
  4. 旗舰里稀疏不再单打独斗,而是和「滑窗 / 线性 / 全注意力」混合(V4 = CSA + HCA + SWA)。

分歧 / 难点:

  1. 先压缩还是先选:先块压缩再选择(CSA/HCA,省 KV)vs 先选原始 token 再算(DSA/Seer,保精度),谁更优没有定论。
  2. 选择方式:手工规则(MInference)vs MoE 路由(MoBA)vs 端到端学习(SeerAttention/HiLS),可训练性 vs 实现复杂度在拉扯。
  3. block vs token 的最优粒度:理论上 token 更准,但 block 的硬件收益常压倒精度损失,最优粒度随长度和硬件变化。
  4. 评测:稀疏注意力在 RULER/LongBench 上的收益,容易和「数据/RL」收益混在一起,难单独归因。

说明:DeepSeek 谱系(NSA 2502.11089、DSA/V3.2 2512.02556、CSA+HCA/V4 2606.19348)已读原文/技术报告;其余论文摘要/标题经核实,arXiv 号均逐一核对。新增厂商落地(GLM-5 / LongCat LSA+LoZA / MiMo / HySparse / Step-3.5 Flash / Meta SP-KV / Tencent Stem)均已读摘要核实;百度 ERNIE 4.5 引入 PLAS 稀疏注意力做推理加速(官方博客),公开技术细节有限,未单独成条;欧洲 Mistral 7B/Mixtral 用滑动窗口注意力(SWA)是厂商级 SWA 早期代表,但非中美、未单独成条;Google Gemini、OpenAI、Anthropic、xAI 等闭源旗舰的注意力配方公开信息不足,未臆测收录。早期稀疏(Sparse Transformer 等)与 hardware 视角(FlashAttention/PagedAttention)的更完整展开见 long-context.html;线性注意力那条路见 linear-attention.html。