《卡片柜》
——当注意力学会先查目录再翻书
论文:Latent Sparse Attention: Towards Subquadratic Ultra-Long Context Attention(arXiv:2610.42147,2026-10-30)
作者:Ales Kubicek、Andrea Caciolai、Liangzu Peng、Sukrit Sumant、Benjamin Hoover、Fraser Greenlee、Ruairidh M. Battleday、Radim Urban、Torsten Hoefler(Prefrontal AI + ETH Zurich)、James C.R. Whittington(Prefrontal AI,资深作者)
写作参照:费曼的讲法(从生活常识一寸寸逼近抽象)、伽莫夫《物理世界奇遇记》式的思想实验笔法。
🌃 一个图书馆员的地狱
先想象一个具体的画面。
你是世界上最大的图书馆的管理员。这个图书馆有整整一千万册书——不是一千万页,是一千万册。某天,一位读者走进来,问你一个问题:"1987 年三月,某位物理学家在脚注里提到的一个常数,是多少?"
你知道答案就在某本书的某一页里。但你不知道该读哪本。
最笨的办法——也是今天几乎所有大语言模型的办法——是从第一册的第一页开始读,一直读到找到那个脚注为止。读者会在柜台前老死。你的馆员同事们会起义。
聪明一点的办法是稀疏注意力:你不再读每一页,而是先雇一批"索引员",为每本书写一个摘要卡片。查询到来时,索引员快速翻一遍所有卡片,挑出可能相关的几十本书,只读这些。这就是今天 DeepSeek、Qwen、GLM 等前沿模型正在采用的稀疏注意力方案——DSA、QSA、HSA,名字各不相同,本质一样。
但问题出在"快速翻一遍所有卡片"上。一千万册书,即使每本书只翻一次卡片,也要翻一千万次。
这篇论文给出一个令人瞠目的数字:在 1000 万 token 的上下文里,稀疏注意力层 98% 的预填充时间花在了"找 key"这一步——而不是"读 key"。换言之,索引员翻卡片的时间,几乎是读者真正读书时间的五十倍。如果索引是免费的,稀疏注意力的预填充还能再快 58 倍,解码再快 8.9 倍。
LSA(Latent Sparse Attention,潜在稀疏注意力)就是来解决这个"翻卡片太慢"问题的。它的思路朴素得像一句废话:别翻卡片了,去问卡片柜。
这篇文章的作者阵容值得一提:Prefrontal AI 的 Kubicek、Caciolai、Peng 为核心贡献者,ETH Zurich 的 Hoefler 是高性能计算领域的泰斗级人物,Whittington 是计算神经科学方向的资深学者。这个组合——神经科学的记忆理论背景加上超算的硬件直觉——也许解释了为什么他们能从"索引瓶颈"这个被所有人忽视的角落里挖出金子。
📚 第一章:注意力经济学的基本常识
在深入 LSA 之前,我们需要建立一点共同语言。
Transformer 的核心机制是注意力(Attention)。每个新的 token 生成一个"查询"(query),拿它去和之前所有 token 的"键"(key)逐一比对,找出最相关的那些,读取它们的"值"(value)。这就像在晚宴上,你想找到那个讲笑话最好笑的人——你得环顾全场每个人。
如果晚宴上有 T 位宾客,环顾全场就要做 T 次比对。生成 T 个 token,每个都要环顾全场,总比对次数就是 T²。这就是注意力的平方复杂度:上下文越长,成本爆炸得越快。一百万 token 的上下文,注意力需要一万亿次比对。
稀疏注意力的妥协是:每个查询只关注全场最相关的 k 个人,而不是所有人。晚宴从"认识所有宾客"变成"只看 k 张面孔",注意力本身的成本降下来了。
但谁来挑选这 k 个人?一个专门的索引器(indexer)。索引器的工作是:对每个新查询,从全部 T 个 key 中挑出最相关的 k 个。
看出问题了吗?索引器自己还得扫一遍全部 T 个 key。只是它扫得更快一点——用更小的维度、更低的精度——但扫描次数仍然是 T。预填充时,T 个查询每个都要扫 T 个 key,还是 O(T²)。解码时,每生成一个新 token 要扫一遍全部历史,O(T)。
业界已经把"扫描"做到了极致的优化:DeepSeek 的 DSA 把每四个 key 压缩成一个再扫;Qwen 的 QSA 和 GLM-5.3-Flash 也各自有压缩技巧;HSA 和 LongCat LSA 先扫块头再扫块内。但这些方法本质上都是同一个优化方向:让每次扫描更便宜。扫描次数仍然是 T,只是每次扫描的代价被一压再压。
LSA 换了一个完全不同的方向:让扫描次数本身变少。
这是一个思维范式的转换。所有人都在问"怎么扫得更快",LSA 问的是"为什么要扫"。
🗂️ 第二章:卡片柜的灵感——语义聚类
LSA 的核心洞察来自一个观察:语义相似的 key 倾向于被相似的 query 关注。
回到图书馆的比喻:关于量子力学的书,总是和关于量子力学的查询相关;关于法国大革命的书,总是和关于法国大革命的查询相关。你不需要把一千万本书一本一本地过——你可以先把它们按主题分柜。
这就是 LSA 的第一步:语义聚类(Semantic Clustering)。
具体做法是这样。每来一个 key,先做两件小事:第一,用一个轻量级投影矩阵把它映射到一个 64 维的"潜在空间"(latent space)里——注意,不是 key 原本的维度,而是一个低得多的维度,索引就用这个;第二,做 L2 归一化,把每个向量压到单位球面上,这样点积就等于余弦相似度,纯粹比较方向,不管长短。
接着,每 4 个连续的 key 池化(pooling)成一个——这和 DeepSeek-V4、QSA 的做法一样,先把书按顺序打成捆,一捆四本。打捆不仅省空间,还有一个语义上的直觉:自然语言中相邻的 token 往往属于同一个主题,把相邻的 key 合并成捆,相当于承认了"主题有局部连续性"这一事实。
然后,在每一"捆"(cluster block,包含 512 个 key)内部,用 Ward 层次聚类法把这些 key 按语义相似度合并成若干"桶"(bucket)。每个桶平均装 8 个 key,最多 16 个。
Ward 聚类是一种自底向上的合并算法:一开始每个 key 自成一桶,然后每次把"合并后总方差增加最小"的两桶合并,直到桶数达标。用图书馆的话说:先把每本书单独放在一个格子里,然后把内容最相近的两本书挪进同一个格子,如此往复,直到格子数量刚好。它的好处是纯几何的——完全由 key 之间的语义距离决定,不需要训练,不需要标注,不依赖任何外部知识。
每个桶有一个"质心"(centroid)——桶内所有 key 的均值,归一化后就是这张"卡片"。卡片代表了这个桶中所有 key 的"平均语义"。所有桶的质心存在一个叫"桶缓存"(bucket cache)的小结构里。在一千万 token 的上下文中,桶缓存只占每层 246 MiB——相比之下,GLM-5.3-Flash 自己的稀疏索引要 331 MiB,QSA 要 642 MiB。卡片柜比书架省地方得多。
聚类一旦完成就永远不变——书进了柜子就不再换柜。这是 LSA 的一个重要设计选择:它把"组织知识"的代价摊到了流式处理过程中(每 512 个 key 做一次 Ward 聚类),而不是每次查询都重新组织。换句话说,整理卡片柜的工作是一次性的,而查询卡片柜是无数次的。这种"一次整理、万次查询"的不对称性,正是加速的来源。
🔍 第三章:查询来了怎么办
有了卡片柜,查询的流程就变了。
传统稀疏注意力中,每个查询要扫描全部 T 个 key(或者 T/4 个压缩块)。在 LSA 中,每个查询只需要给每张卡片打分——计算查询向量和每个桶质心的点积——然后挑出分数最高的 p 个桶,把桶里的 key 展开,直到凑够 k 个"长途 key"。
再加上几个固定必看的部分:开头几个"汇点"key(sink,注意力机制的老习惯,总得看看开头的 token,就像开会总得知道议题是什么)和最近的一个窗口(window,最近的上下文永远全看,就像你说话时总会记得自己刚说了什么)。
这就像读者来到卡片柜前,说"我要找 1987 年的那个脚注"。管理员不需要翻遍一千万本书——只需要翻一遍卡片(卡片的数量远小于书的数量),抽出最相关的十几张卡片,按卡片上的指引找到对应的书架位置,把书取下来读。
Flat 搜索(扁平搜索)下,查询要打的分数正比于桶的数量,而桶的数量正比于 T/n̄_b(n̄_b 是每桶平均 key 数,约 8)。所以每个查询的扫描量从 T 降到了 T/8——大约省了 8 倍。这听起来不错,但仍然是 O(T):卡片柜本身也在随藏书量增长。一千万本书,卡片也有上百万张——翻一遍还是要不少时间。
真正让 LSA 起飞的是树搜索(Tree Search)。
🌲 第四章:树——当卡片柜变成楼层图
如果卡片柜本身也变得巨大怎么办?再给它建一层卡片。
这个思路其实就是图书馆本身的楼层图:底层是每个书架,上一层是每个分区,再上一层是每个楼层。你要找一本书,先看楼层图确定在哪一层,再看分区图确定在哪个区,最后走到书架前抽出那本书。你不会为了找一本书而把每个楼层都走一遍。
LSA 的树搜索把桶组织成完全二叉树:第 0 层是普通桶(叶子),上面每一层是"节点桶"——由下一层的两个兄弟桶合并而成,质心是它包含的所有 key 的均值。
查询时,用束搜索(beam search)逐层下降:先给根节点的两个子节点打分,保留分数最高的那个;下到下一层,给它下面的两个子节点打分;如此往复,直到第 0 层的叶子桶。因为每一层只展开固定数量(2 个)的候选,查询的总比较次数正比于树的高度——O(log T)。
一百万 token 的上下文,log₂ 大约是 20。查询只需要比较二十来个质心,而不是一百万个 key。一千万 token,大约 24 层。这个数字几乎不随藏书量增长——从百万到千万,只多四层。这就是对数增长的魔力。
这就是"亚平方"(subquadratic)的含义:预填充中索引器的总工作量从 O(T²) 降到了 O(T log T)。一千万 token 的上下文,传统索引器要做大约十万亿次比较;LSA 的树搜索只需要大约两亿次——五个数量级的差距。理论上,LSA(Tree)在 1 亿 token 时的预填充比扁平搜索快 90 倍以上——团队做了外推预测,虽然还没有实际验证。
天下没有免费的午餐。树搜索在 GLM-5.3-Flash 上过了 100 万 token 后精度掉得比扁平搜索快(RULER 10M:55.8 vs 扁平的 66.8)。原因也好理解:层层合并意味着顶层的质心代表了几万甚至几十万个 key 的平均语义——平均得越多,个体差异越被抹平。当查询想找的是一个非常具体的细节时,顶层质心可能觉得"这个分区和问题无关",直接把正确方向剪掉了。而且树搜索只有在约 500 万 token 以上、且大量请求并发解码时才开始在解码速度上反超扁平搜索。LSA 团队诚实地报告了这些权衡,没有只挑好看的数字说。
🏭 第五章:两种生产方式——改装与原生
LSA 提供了两种使用方式,对应制造业的"改装旧车"和"设计新车"。
**D-LSA(蒸馏版)**是给已有模型用的。你有一辆跑得好好的车(预训练好的模型,比如 Qwen-3.8-27B 或 GLM-5.3-Flash),不想重新造车,只想让它在长上下文上跑得快一点。D-LSA 在每一层加两个小投影矩阵——一个把 key 投影到 64 维索引空间,一个把 query 投影到同一空间——然后用 KL 散度做蒸馏,让 LSA 选出来的 key 分布逼近原始注意力自己选的 key 分布。基座模型完全冻结,只训练这两个小矩阵和一个温度参数。训练数据只有 3.52 亿 token、4.8 万步就完事——相比之下,DeepSeek DSA 的热身训练用了 21 亿 token。改装比造车快得多。
这里有一个精彩的彩蛋:D-LSA 甚至有一个完全免训练的变体——直接对 key 做主成分分析(PCA),用前 64 个主方向作为投影矩阵,不做任何训练,精度也接近训练版。这说明 key 的语义结构本身就自带聚类倾向——就像图书馆的书天然按主题分布在不同的书架上——LSA 只是把这种倾向显性化了。这个发现本身就值得记住:有时候最好的索引不是你训练出来的,而是数据里本来就有的。
N-LSA(原生版)是从零训练一个新模型时用的。它不加任何额外参数,不需要教师模型,不需要辅助损失——直接用标准的下一 token 预测(NTP)损失训练。它把模型自己的注意力 key 拿来聚类——不需要单独的索引器,注意力自己就是索引器。每个查询用所有注意力头中的最大分数来选桶(取 max 而非均值,是因为只要有一个头觉得某个桶重要,就值得看——八个头的判断取并集比取平均更不容易漏)。
N-LSA 还顺手做了一个大胆的设计:注意力层完全不用位置编码。这不是 LSA 首创——混合架构模型越来越流行这种做法——但它和语义聚类的思路天然契合:既然选择 key 靠的是语义而非位置,那为什么要告诉模型 key 在哪里?位置信息可以留给那些非注意力的层(如 Gated DeltaNet)去处理,注意力专心做它最擅长的事——按内容找内容。
N-LSA 选择了混合架构作为测试平台:每 4 层中 1 层是注意力层,其余 3 层是 Gated DeltaNet——一种结合了 Delta 规则和门控机制的新型线性注意力。这个选择在当前的技术潮流中非常典型:让线性注意力层处理局部的、位置敏感的模式,让稀疏注意力层处理长距离的、语义驱动的检索。
📊 第六章:数字不说谎
D-LSA 的速度(单层注意力实测,10M token,H200 GPU):
- GLM-5.3-Flash:预填充比它自己的稀疏注意力快 22.7 倍,解码快 4.6 倍
- Qwen-3.8-27B:预填充比全量注意力快 72.4 倍,解码快 42.5 倍
- 端到端(SGLang 生产环境部署):Qwen 的首 token 时间(TTFT)快 9.2 倍(TP8+DCP8);GLM 在张量并行 8 下快 5.8 倍
- 新一代 B300 GPU 上:预填充加速 12.5 倍(GLM)/ 42.9 倍(Qwen),解码加速 5.2 倍 / 18.4 倍
这些数字值得多看一眼。72 倍不是某个角落里的微小优化——这是数量级的差距。一个原本需要一个小时处理的文档,现在五分钟就能搞定。
D-LSA 的精度——快而不糊,这是更难得的:
- 知识、推理、LongBench v2 长上下文任务:与基线处于 95% 置信区间之内,即统计上无法区分
- RULER 长上下文基准(大海捞针类任务):Qwen 上 1M token 以内差距不超过 5 分;10M 时反超全量注意力:63.9 vs 59.9
- 他们新建的 PaperTrail 基准(把一系列事实藏在多篇未发表的学术论文中,测试模型能否像文献调研一样跨文档串联线索):10M 时 29.1 vs 全量注意力的 19.8——翻了将近一倍
最后一个结果值得停下来想一想。为什么稀疏选择在超长上下文上反而比全量注意力更准?一个可能的解释是:全量注意力在 10M token 时,softmax 分母被海量 key 稀释,注意力权重趋于均匀——就像你在一个有一千万人的体育场里喊一个人的名字,声音被彻底淹没了。而稀疏选择保持了聚焦——它只在小范围内做精细的区分,权重分布更尖锐,因此更容易在正确的地方集中火力。
N-LSA 的表现(0.5B 参数混合架构,每 4 层一个注意力层,训练数据 100B FineWeb-Edu + 12B 长文档,序列长度 128k):
- 验证损失 1.085,与全量注意力的 1.085 完全相同;PISA 1.100,NSA 1.117,SWA(滑窗注意力)1.154
- RULER 128k:32.2 vs 全量注意力 34.7(差距 3.5 分以内);NSA 跌到 19.2,PISA 14.6,SWA 3.0
- 训练速度:单层前向+反向在 128k 时快 1.6 倍;端到端衰减阶段快 1.24 倍
- 代价:峰值显存更高(每层 6.8 GiB vs 5.8 GiB),因为反向传播要保存每个查询选中的 key 索引——这是当前实现的一个工程限制
N-LSA 的结果传递了一个重要信号:稀疏注意力不需要蒸馏也可以原生训练,而且训练效果与全量注意力持平。这意味着 LSA 不是某个特定模型的补丁——它可以是下一代模型从头就采用的基础设计。
🪞 第七章:诚实的边界
这篇论文让人喜欢的一点是它的诚实。它在摘要里就列出了三条限制,而不是埋在附录的小字里。
第一,LSA 解决的是"找到 key"的成本,不是"存储 key"的成本。KV 缓存仍然随上下文线性增长——卡片柜省不了书架的租金。如果你的瓶颈是显存装不下 10M token 的 KV 缓存,LSA 帮不了你;你需要 KV 缓存压缩、跨层索引共享等其他技术。好消息是 LSA 与这些技术正交,可以叠加使用。
第二,树搜索在 GLM-5.3-Flash 上超过 1M token 后精度下降明显。层级结构在极端长度下可能丢失一些语义细节——当桶内装了太多 key,质心就变成了一个模糊的"平均主题",丢失了个体差异。团队没有回避这个问题,而是展示了扁平与树搜索的交叉点,让用户根据精度-速度的权衡自己选。
第三,N-LSA 只在 0.5B 参数、128k token 上验证了原生训练。更大规模、更长上下文、树搜索的原生训练,都是开放问题。0.5B 到 70B 之间隔着两个数量级,中间可能遇到大模型特有的训练动态——这些都需要后续工作来回答。
此外,当前的注意力内核还没有针对 LSA 的语义搜索做充分的硬件优化——团队自己实现了一个自定义的 Triton 内核,但距离 cuDNN 级别的硬件亲和优化还有距离。论文里提到 HSA 在端到端评估中有时占优,部分原因就是它利用了硬件优化的内核。
🗺️ 第八章:亚平方版图上的新坐标
把 LSA 放到更大的技术版图上,能更清楚地看到它的位置。
今天解决注意力平方复杂度问题的路线大致有三条。第一条是线性注意力路线:放弃 softmax,改用核函数近似,让注意力可以写成递推形式,复杂度降到 O(T)。Representative 工作包括 Performer、线性 Transformer,以及最近大热的 Mamba 系列——它们本质上都是把"逐 token 寻址"换成了"固定状态压缩"。这条路线的代价是丢失了精确寻址能力——你不知道信息具体存在状态向量的哪个位置。
第二条是稀疏注意力路线:保留 softmax 的精确寻址,但让每个查询只看一部分 key。滑动窗口、块状稀疏、NSA、PISA、DSA、QSA、HSA——这些都是这条路线上的节点。它们的核心问题是索引成本:你不需要看所有的书,但你得知道该看哪些书——而"知道该看哪些书"本身就需要扫描。
LSA 位于第二条路线上,但它做了一个关键的动作:**把索引本身也变成亚平方的。**用聚类把扫描变少,用树把扫描变成对数。在此之前,稀疏注意力的索引成本一直被当作"必要之恶"接受—— everyone optimizes the scan, no one questions the scan。LSA 质疑了这个假设。
还有一条隐含的第四条路线:混合架构。让一部分层做线性注意力,一部分层做稀疏注意力,各司其职。N-LSA 的实验平台正是这种混合架构——每四层一个注意力层,其余是 Gated DeltaNet。这可能是长期的方向:没有一种单一机制能在所有长度、所有任务上都最优,但一个分工明确的团队可以。
在这个版图上,LSA 的贡献是把第二条路线向前推进了一大步——从"亚平方的注意力计算 + 平方的索引"推进到"真正亚平方的端到端注意力"。这个推进不是渐进的优化,而是改变了一个被默认接受的复杂度项。
论文还包含了对树搜索失败模式的细致分析。在超过 100 万 token 后,树搜索的 RULER 精度下降——团队发现原因是"贪心误差累积":束搜索每层的贪心选择可能在顶层走错方向后无法回头,而走错的代价随层数增加而放大。扁平搜索没有这个问题,因为它一次性看到所有卡片,不存在"走错路"的概念。这个分析暗示了未来的改进方向:更宽的束、多路径探索、或者混合策略(短距离用树、长距离用扁平)。
此外,LSA 与 KV 缓存压缩的兼容性也值得讨论。论文指出 LSA 可以和量化(FP8、INT4)等技术叠加使用——桶缓存本身只有 246 MiB,即使量化到 INT4 也只降到约 62 MiB,但精度可能受影响。更有趣的组合是跨层索引共享——如果相邻的注意力层共享同一个卡片柜,桶缓存可以进一步缩小。这些组合不在当前论文的范围内,但作者们在讨论部分列出了它们作为未来方向。
PCA 免训练变体的发现还暗示了一条未来的研究路径:如果 key 的语义结构如此强烈地体现在主成分中,那么也许聚类本身也可以变得更聪明——用适应数据分布的聚类算法替代固定的 Ward 方法,或者用在线学习更新质心而非一次性计算。这些方向都在 LSA 的框架内自然延伸。
🔭 尾声:一种思维方式的转变
LSA 的真正贡献,不只是一个更快的注意力层。
它提醒我们:当一个问题"无论如何优化都很慢"时,也许方向本身就错了。所有人都在让扫描更快——压缩、量化、分层——但 LSA 问的是:为什么非要扫描不可?
这个问题问对地方了。在一个注意力机制统治了深度学习八年的时代,LSA 指出了一条少有人走的路:不是让注意力做更少的事,而是让注意力做事的方式更聪明。语义聚类不是新发明——Reformer 在 2020 年就试过 LSH 哈希——但把聚类做对、做准、做到 10M token 级别的工程实现,这是第一次。
图书馆的答案从来都不是"更快的眼睛",而是"更好的卡片柜"。而最好的卡片柜,是那个你从来不需要翻完所有卡片的柜子。
当上下文从一百万增长到一千万,再到未来的十亿,我们需要的不是更快的扫描器,而是更聪明的管理员。LSA 就是这个管理员——它接受了图书馆最大的教训:知识的价值不在于你拥有多少,而在于你能多快找到你需要的那一本。卡片柜的哲学,就是用一次性的整理,换来无数次瞬间的查找。而这个哲学,可能比注意力机制本身活得更久。
参考文献
- Kubicek, A., Caciolai, A., Peng, L., Sumant, S., Hoover, B., Greenlee, F., Battleday, R. M., Urban, R., Hoefler, T., & Whittington, J. C. R. Latent Sparse Attention: Towards Subquadratic Ultra-Long Context Attention. arXiv:2610.42147, 2026.
- DeepSeek-AI. DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models. arXiv:2512.02556, 2025.(DSA 稀疏注意力)
- Qwen Team. Qwen-3.8 Technical Report. 2026.(QSA 块稀疏注意力)
- Z.ai. GLM-5.3-Flash Technical Report. 2026.
- Yuan, J., et al. Native Sparse Attention: Hardware-Aligned and Natively Trainable Sparse Attention. arXiv:2502.11089, 2025.(NSA)
- Tang, Z., et al. PISA: Accelerating Training with Progressive Sparse Attention. 2026.
- Ward, J. H. Hierarchical Grouping to Optimize an Objective Function. Journal of the American Statistical Association, 1963.(Ward 聚类)
- Hsieh, C.-P., et al. RULER: What's the Real Context Size of Your Long-Context Language Models?. COLM 2024.
- Shah, J., et al. FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision. 2024.
- Kitaev, N., Kaiser, Ł., & Levskaya, A. Reformer: The Efficient Transformer. ICLR 2020.(语义哈希的早期探索)
- Yang, S., et al. Gated Delta Networks: Improving Mamba2 with Delta Rule. ICLR 2025.(N-LSA 混合架构中的非注意力层)
- Mishkin, D., & Matas, J. All You Need Is a Good Init. ICLR 2016.(LSUV 逐层校准思想)
#每日论文 #paperscool #稀疏注意力 #长上下文
讨论回复
加载中...正在加载回复...
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。