SparseEngine 统一 15 种稀疏注意力方法,解码吞吐最高 10 倍于 vLLM

SparseEngine: Sparse-First Inference Engine

Jitai Hao, Quansheng Gu, Qiang Huang, Jun Yu

cs.LG

2026-09-30

用统一生命周期契约把 15 种稀疏注意力方法装进同一推理引擎,KV 驱逐下大 batch 解码吞吐约 10 倍于 vLLM,agent 回放端到端提速 2.24 倍。

这篇在解决什么

长上下文 agent 每轮工具调用都在堆历史,KV cache(注意力键值缓存)的显存和 attention 计算随轮次膨胀,128K 输入下解码 batch 上不去,这是 serving 侧的双重瓶颈。稀疏注意力是现成解法,但分四族:动态选择(Quest、OmniKV)只读部分上下文、KV 全量保留;驱逐(SnapKV、H2O)直接删条目;另有压缩(Palu)和量化(KIVI)。四族对缓存表示和更新时机的要求完全不同。

系统侧的麻烦更大。现有稀疏 serving 系统把抽象绑死在单一布局或流程上:Vortex 围绕 page 操作,SPIN 固定五步流水线,Tangram 专做逐头非均匀保留。方法进别人框架就得改写,社区里因此堆出 LlamaSnapKV、Qwen3H2O 这类模型×方法定制 fork。论文 Figure 1 把覆盖图画得很直白:没有一个系统同时做到方法覆盖广,又保住 prefix caching 和 continuous batching。

方法

SparseEngine 换了抽象边界:不规定流程,只约定生命周期。

在此之上有两个跨请求机制。Chain Cache 给每个会话发 chainid,驱逐式方法压缩后的 KV 与方法状态跨轮保留,逻辑 token 前缀不变,下一轮只 prefill 新增后缀,空闲链按 LRU 回收。这补的是一块真空:驱逐删了物理 KV,radix prefix cache 的前缀完整性假设被破坏,以前只能整段重算。Prefix-Cache Pruning 让应用指定历史区间 [L,R) 和保留比例,用 KVzip 之类的打分策略选留哪些,物理槽位释放、逻辑前缀原样保留,后续请求照样命中匹配。

结果

设置指标结果
SnapKV,128K 输入,各自最大可测 batch聚合解码吞吐 vs vanilla vLLM约 10×(Qwen3-30B 与 GLM 均如此)
Quest / OmniKV,同 batch解码吞吐 vs vanilla vLLM1.5–2.6×
Quest,batch=2、128K(Qwen3)vs Vortex / HiSparse1.24× / 1.55×
SnapKV,同设置vs Tangram1.55×
20 组总分对比(LongBench V1+V2)与原方法实现的分差平均 +0.17 分(方差 0.32)
SnapKV 8K + Chain Cache,Gasai 轨迹回放端到端加速 vs Vanilla2.24×(49.9→22.2 分钟)
SnapKV + Chain Cache,SWE-bench Lite解决率GLM 24.7%(Vanilla 25.0%);Qwen3 8.3%(Vanilla 5.3%)

质量保持是这篇最扎实的部分:与各方法原实现的 20 组总分对比平均只差 0.17 分,引擎没有偷工。AIME 2024 给出了价码表:全量 attention 81.7% 准确率,OmniKV 在 1.51× 加速下保住 80.0%,SnapKV 4K 预算掉到 58.3%,StreamingLLM 冲到 3.36× 只剩 18.3%。加速越大掉得越多,论文没回避这条曲线。工具结果剪枝的消融也有信息量:立即剪枝保留 20% 时解决率微降,改成 lag=4(新工具结果进来时只剪倒数第五轮,最近四轮不动)恢复到 25.0%,高于不剪枝的 23.7%。

为什么重要

对跑长上下文 agent 的团队,价值在「一个引擎换着用」:15 种方法共用同一套调度、prefix caching 和 continuous batching,覆盖 14 种模型变体,包括 MLA(GLM-4.7-Flash)和混合线性注意力(Qwen3.6),HiSparse 和 Tangram 在这些配置上根本跑不了。10× 那个数字要读准口径:它来自驱逐省下的显存换来更大 batch,同并发对比下增益是 1.5–2.6×。对 agent 场景最实际的是 Chain Cache,驱逐式方法第一次能跨轮复用压缩状态,省的是每轮重算前缀的 prefill。

局限与存疑

论文自认的:质量与效率此消彼长;上下文变短加速缩水(AIME 上多数方法只有 1.05–1.66×,因为 attention 占比下降);LongBench V2 子任务样本少、采样带随机性,单项分数波动大。读下来还有几处要留意:

术语

原文与代码

相关论文

全部论文解读