← 返回 2026-03-31

HISA:基于高效分层索引的细粒度稀疏注意力机制 HISA: Efficient Hierarchical Indexing for Fine-Grained Sparse Attention

Yufei Xu, Fanxu Meng, Fan Jiang, Yuxuan Wang, Ruijie Zhou, Jiexi Wu, Zhixin Pan, Zhaohui Wang, Xiaojuan Tang, Wenjie Pei, Tongxuan Liu, Di yin, Xing Sun, Muhan Zhang 📅 2026-03-30 👍 44 2026-07-13 08:36
LLM系统优化 推理加速 注意力机制 稀疏注意力 长上下文

通过分层索引加速稀疏注意力的token选择,实现3.75倍内核加速

前置知识

稀疏注意力(Sparse Attention)

传统自注意力机制需要计算每个query与所有key的点积,复杂度为O(L²)。稀疏注意力的核心思想是:对于每个query,只选择最相关的k个key进行注意力计算,而非全部。这样可以将注意力计算复杂度从O(L²)降低到O(Lk),其中k远小于L。DeepSeek-V3.2采用的DSA(DeepSeek Sparse Attention)就是典型的token级稀疏注意力,通过一个轻量级索引器对每个历史token打分,选择top-k个最高分的token进行后续计算。

这是本文要解决的核心问题所在的领域。HISA正是针对稀疏注意力中索引器的瓶颈进行优化,理解稀疏注意力的基本原理是理解本文动机和方法的基础。

DeepSeek Sparse Attention(DSA)

DSA是DeepSeek-V3.2采用的token级稀疏注意力方案,由两个核心组件构成:Indexer和Sparse MLA。Indexer为每个query维护轻量级的索引query表示和gating权重,通过公式 $I_{t,s} = \sum_{j=1}^{H_I} w_j^{I,t} \cdot \text{ReLU}(q_j^{I,t} \cdot k_s^I)$ 计算query t与每个历史token s的相关性分数,然后选择top-k个token。Sparse MLA则仅在选定的token子集上执行Multi-Head Latent Attention。

HISA的目标是作为DSA中Indexer的即插即用替代品。理解DSA的架构和工作流程是理解HISA如何在不改变下游Sparse MLA的情况下提升效率的关键。

Multi-Head Latent Attention(MLA)

MLA是DeepSeek系列模型采用的注意力变体,通过将KV缓存压缩到低维潜空间来减少内存占用。在MQA模式下,每个token存储单个latent key-value条目,所有query head共享同一个key表示。Sparse MLA是在MLA基础上的稀疏版本,仅在选定的token子集上执行注意力计算。

HISA生成的token集合直接传递给Sparse MLA算子,理解MLA的工作机制有助于理解为什么HISA的输出格式(token索引集合)必须与DSA完全一致。

块稀疏注意力(Block Sparse Attention)

块稀疏注意力将序列划分为固定大小的块,以块为单位进行重要性评估和选择。这种方法天然适配GPU的tiled矩阵乘法,但其核心局限是粒度问题:一个块内的所有token必须被整体保留或整体丢弃,无法捕捉块内的token级重要性差异。代表方法包括MoBA(使用MoE风格的块路由)、NSA(结合压缩、选择和滑动窗口分支)、MInference、FlexPrefill等。

HISA也引入了块级阶段,但仅作为快速预过滤器,最终仍保留token级粒度。理解块稀疏方法的优劣是理解HISA分层设计动机的重要背景。

TileLang

TileLang是一个GPU内核编程框架,用于高效实现注意力相关的计算内核。本文的HISA内核实现基于TileLang,包括块级过滤内核和token级精炼内核。DSA的官方参考实现同样使用TileLang。TileLang的优势在于能够方便地表达分块矩阵运算,并自动生成高效的GPU代码。

论文的内核级加速实验基于TileLang实现,理解这一工具有助于评估实验结果的可信度和可复现性。

研究动机

随着大语言模型上下文窗口从128K扩展到1M甚至更长,传统的全注意力机制面临二次方复杂度的性能瓶颈。DeepSeek-V3.2采用的DSA通过token级稀疏注意力缓解了这一问题:其Sparse MLA算子仅在选定的k个token上计算注意力,复杂度为O(Lk)。然而,DSA引入了一个更隐蔽的瓶颈——Indexer。为了选出最优的k个token,Indexer必须对每个query扫描整个前缀序列中的每个token,计算相关性分数。具体而言,如果前缀长度为L,每个query每层都需要O(L)的打分开销,所有query的总开销为O(L²)——与全注意力相同的渐近复杂度。在64K上下文长度下,Indexer内核耗时达到5.6毫秒,而Sparse MLA算子仅需约1.6毫秒,表明Indexer已经成为实际的性能瓶颈。当上下文长度推向128K或1M时,这一开销会变得极其昂贵,甚至成为主导成本。

本文的目标是本文的核心目标是:在不改变DSA最终输出的稀疏注意力模式的前提下,大幅降低Indexer的搜索成本。具体来说,HISA要保持与DSA完全相同的输出接口——为每个query生成一个包含k个token索引的集合,使得下游的Sparse MLA算子无需任何修改。同时,HISA要实现显著的内核级加速,在64K上下文下达到2-4倍的速度提升,并且在质量上与DSA保持接近。

与已有工作不同的是,现有的加速方案主要分为两类,各有局限。块稀疏方法(如MoBA、NSA、MInference等)虽然高效,但粒度太粗——无法捕捉块内的token级重要性差异,导致选择质量下降。在LongBench的Synthetic任务上,块稀疏基线在GLM-5上的得分比DSA低8.35个百分点。另一些token级方法(如KV缓存淘汰方法H2O、TOVA)虽然保持了token粒度,但采用的是不可逆的淘汰策略,被丢弃的token无法恢复。HISA的独特切入角度是:采用分层搜索策略,先用高效的块级过滤器快速排除大部分无关区域,再在保留的候选块内进行token级精炼。这种“先粗后精”的两阶段设计在保持token级选择质量的同时,大幅降低了搜索复杂度。

核心方法

HISA的核心直觉是:在长上下文中,高注意力权重的token往往集中在语义连贯的区域内,而非随机分散在序列各处。因此,可以用块级的粗粒度表示快速定位重要区域,再在这些区域内进行精细的token级选择。技术路线如下:首先,将前缀序列划分为大小为B的连续块,对每个块内的索引key进行平均池化得到块的代表向量;然后,用与DSA相同的query对所有块代表向量打分,选择top-m个最重要的块(第一阶段);接着,在这mB个候选token上执行与DSA完全相同的token级打分,选出最终的top-k个token(第二阶段)。整个过程是一个从块到token的分层搜索,输出格式与DSA完全一致。

HISA的核心创新在于将DSA的“扁平全扫描”重写为“分层搜索路径”,同时保持搜索结果不变。与现有方法的本质区别体现在三个方面:第一,与块稀疏方法不同,HISA的最终选择仍然是token级的,不会因为块粒度而丢失重要的token;第二,与KV缓存淘汰方法不同,HISA不进行不可逆的信息丢弃,候选池的选择是动态的;第三,与DSA相比,HISA的per-query复杂度从O(L)降低到O(L/B + mB),per-layer复杂度从O(L²)降低到O(L²/B + LmB)。关键的工程创新是:块代表向量可以与KV缓存增量维护,几乎不引入额外开销;块级和token级索引器复用相同的query表示和gating权重,无需额外参数。

方法步骤详情

HISA的方法分为两个主要阶段。第一阶段是块级粗过滤:将长度为L的前缀划分为M = ⌈L/B⌉个连续的因果有效块B1, B2, ..., BM;对每个块Bb内的索引key进行平均池化,得到代表向量 \tilde{k}_b^I = Pool({k_s^I | s ∈ Bb});使用DSA的索引query q_j^{I,t} 和gating权重 w_j^{I,t} 对所有块代表向量打分:J_{t,b} = \sum_{j=1}^{H_I} w_j^{I,t} \cdot ReLU(q_j^{I,t} \cdot \tilde{k}_b^I);选择top-m个块 Ct = TopK(J_{t,:}, m),候选token集为所选块内所有token的并集 \Omega_t = \bigcup_{b ∈ Ct} Bb。第二阶段是token级精炼:在候选集\Omega_t内使用与DSA相同的打分机制计算每个token的分数 I_{t,s} = \sum_{j=1}^{H_I} w_j^{I,t} \cdot ReLU(q_j^{I,t} \cdot k_s^I), s \in \Omega_t;选出最终的top-k个token Tt = TopK({I_{t,s} | s \in \Omega_t}, k)。特别地,第一个和最后一个块始终被包含在Ct中,以保留注意力汇聚点和局部上下文。整个过程确保满足可行性约束mB \geq k,即候选池大小必须不小于最终选择的token数。

技术新颖性

HISA的技术新颖性体现在多个层面。首先,问题定义层面:论文首次形式化了稀疏索引器的搜索路径优化问题,将关注点从“选什么”转向“怎么选”。其次,算法设计层面:分层索引的“块到token”搜索路径是一个优雅的工程方案,它利用了注意力分布的块聚集特性——论文的可视化研究表明,高注意力权重的token倾向于形成连续的语义跨度。第三,系统集成层面:HISA是一个真正的即插即用模块,不需要额外训练、不需要修改注意力架构、不需要改变KV缓存布局,仅替换索引器的搜索路径。第四,边界行为处理:论文分析了三种regime——当t≤k时退化为全注意力,当kmB时才激活分层优势。这种优雅的退化设计保证了HISA在短上下文下不会引入额外开销。

DSA token-wise indexer与HISA hierarchical block-to-token indexer的对比
Figure 1: DSA token-wise indexer与HISA hierarchical block-to-token indexer的对比
注意力分布可视化
Figure 4: 注意力分布可视化

实验结果

论文在五个维度上评估了HISA:内核级延迟、Needle-in-a-Haystack检索精度、LongBench下游任务性能、注意力分数可视化和超参数敏感性分析。内核级实验显示,在64K上下文下,HISA实现了最高3.75倍的加速(固定8K预算),以及2.16倍的加速(4:1压缩比)。需要注意的是,稀疏MLA算子固定耗时约1.6毫秒,而DSA的Indexer在64K下达到5.6毫秒,说明瓶颈确实在Indexer。Needle-in-a-Haystack测试中,DSA在所有上下文长度和针位置上达到近乎完美的检索精度,HISA紧密匹配这一性能,仅在极端长度和深度下有微小退化。相比之下,块稀疏基线表现出明显的精度下降,特别是在针位于上下文中部时。LongBench评估覆盖6个任务类别,在DeepSeek-V3.2和GLM-5两个模型上,HISA的平均分分别达到50.78和46.32,与DSA的51.05和46.01非常接近。值得注意的是,HISA在Synthetic任务上一致超越DSA,在GLM-5上甚至获得更高的平均分。而块稀疏基线的性能差距明显,特别是在GLM-5的Synthetic任务上下降了8.35%。

DeepSeek-V3.2和GLM-5在不同索引策略下的LongBench结果
Table 1: DeepSeek-V3.2和GLM-5在不同索引策略下的LongBench结果
Indexer内核延迟对比:DSA vs HISA
Figure 2: Indexer内核延迟对比:DSA vs HISA
Needle-in-a-Haystack检索精度热力图
Figure 3: Needle-in-a-Haystack检索精度热力图
不同Indexer配置下的LongBench分数消融研究
Figure 5: 不同Indexer配置下的LongBench分数消融研究
查看结构化数据
任务指标本文基线提升
DeepSeek-V3.2 LongBench 平均分 平均分数 HISA: 50.78 DSA: 51.05 / Block-Sparse: 49.54 HISA与DSA差距仅0.27分,比Block-Sparse高1.24分
GLM-5 LongBench 平均分 平均分数 HISA: 46.32 DSA: 46.01 / Block-Sparse: 42.67 HISA超越DSA 0.31分,比Block-Sparse高3.65分
64K上下文内核级延迟 加速倍数 3.75×(固定8K预算)/ 2.16×(4:1压缩比) DSA基线 最高3.75倍加速
DeepSeek-V3.2 Synthetic任务 分数 HISA: 70.83 DSA: 69.83 / Block-Sparse: 68.67 HISA超越DSA 1.0分,超越Block-Sparse 2.16分
GLM-5 Synthetic任务 分数 HISA: 69.35 DSA: 68.84 / Block-Sparse: 60.49 HISA超越DSA 0.51分,超越Block-Sparse 8.86分

局限与改进

论文承认的局限性包括三个方面。第一,块级粗过滤存在信息损失风险:当前每个块仅用一个平均池化向量表示,当块跨越语义边界时,池化表示可能无法反映块内最重要的token。论文提出可能的缓解方向包括重叠块、自适应块边界或使用最大池化替代平均池化。第二,HISA目前仅作为推理时的无训练替代方案,未充分利用训练信号。如果在训练阶段联合优化块打分模块,可能进一步提升粗过滤的准确性。第三,论文仅在内核级别进行了延迟测量,未在完整的推理服务栈(如连续批处理、推测解码等)中进行端到端评估。从独立观察来看,论文的实验主要聚焦在两个模型(DeepSeek-V3.2和GLM-5),未在更多模型架构上验证泛化性;超参数敏感性分析虽然覆盖了三种配置,但mB=8192的候选池大小是否在更长上下文下仍然最优需要进一步验证;此外,论文未详细讨论HISA在不同序列长度分布下的实际吞吐量提升。

独立分析的弱点

基于对论文的独立分析,识别出以下几个值得关注的弱点。第一,块代表向量的表示能力有限:平均池化是一种非常简单的聚合方式,可能会稀释块内关键token的信号。特别是当一个块内同时包含高重要性token和大量低重要性token时,平均池化后的代表向量可能无法准确反映块的价值。改进方向包括:使用注意力加权池化、引入最大池化分支、或学习一个轻量级的块编码器。第二,因果掩码边界处理的额外开销:论文提到第一个和最后一个块始终被包含,这在批处理预填充时可能引入额外的逻辑复杂度。改进方向可以是设计更优雅的边界感知块划分策略。第三,超参数B和m的选择:论文固定B=128、m=64,但最优配置可能因模型、任务和上下文长度而异。可以考虑自适应的块大小和选择数量,根据序列的实际注意力分布动态调整。第四,缺少与IndexCache等跨层索引复用方法的对比:IndexCache通过复用相邻层的索引来降低成本,HISA是否可以与这类方法结合值得探索。

未来方向

论文提出了三个明确的未来方向。第一,减少粗过滤的信息损失:探索重叠块、自适应块边界、或用最大池化替代平均池化来更好地保留显著方向。第二,训练感知的HISA:在训练阶段联合优化块打分模块,特别是在语义边界情况下提升粗过滤准确性。第三,端到端系统集成:将HISA集成到完整的推理服务栈中,结合连续批处理和推测解码,在真实工作负载下测量吞吐量和延迟。基于现有成果,还可以延伸出更多研究方向:(1) 将分层索引思想扩展到其他稀疏注意力方案,如MoBA或NSA;(2) 探索多级层次结构(如三层或更多层),在超长上下文下进一步降低复杂度;(3) 研究HISA与KV缓存压缩技术(如量化、蒸馏)的协同效应;(4) 在多模态长上下文场景(如长视频理解)中验证HISA的有效性。

复现评估

论文的可复现性较好。代码已在GitHub开源(https://github.com/MuLabPKU/TransArch),基于TileLang的内核实现有官方参考实现可供对比。实验环境明确:NVIDIA A100 GPU,query lens = 1024,final top-k = 2048,block size B = 128。论文使用的模型(DeepSeek-V3.2和GLM-5)和数据集(Needle-in-a-Haystack、LongBench)均为公开资源。不过,复现完整的内核级实验需要A100级别的GPU资源,这可能对资源有限的研究者构成一定门槛。此外,TileLang内核的实现细节(如线程块配置、共享内存使用)可能影响性能,复现者需要仔细对齐这些实现细节。论文的训练无关特性使得复现不需要额外的训练成本,只需替换推理时的索引器模块即可。