

随着大语言模型(LLM)的上下文窗口不断扩展,从数十万词元迈向百万级别,一个核心的挑战日益凸显:模型推理时,用于存储注意力计算中间状态的关键值(KV)缓存会线性增长,这给GPU内存容量和带宽带来了巨大压力。为了处理一篇数十万字的文档或进行长代码生成,模型不仅需要巨大的内存来存放这些历史状态,而且在生成每一个新词元时,都需要反复读取全部历史KV缓存,导致解码过程严重受限于内存带宽。
动态稀疏注意力算法为解决这一难题提供了理论上的可能。研究表明,在生成每个新词元时,并非所有历史词元都同等重要,模型实际上只依赖于一小部分关键的上下文。因此,如果能动态地、精准地只选取这一小部分KV状态参与计算,就能大幅减少每次解码步骤所需处理的数据量,从而缓解内存和带宽压力。更进一步,我们可以将庞大的完整KV缓存存放在容量更大的CPU内存中,只在需要时将选中的关键部分“按需”取回GPU,这似乎是一个完美的解决方案。
然而,理想与现实之间存在着一道鸿沟。尽管稀疏算法在理论上能大幅减少计算量,但现有的推理系统却难以将这些算法优势转化为实际的端到端性能提升。不同的稀疏算法操作粒度各异,缺乏统一的系统抽象,导致每个算法都需要独立、特设的实现,无法共享优化的内核或内存管理。更重要的是,当KV缓存分布在GPU和CPU之间时,稀疏算法所引发的细粒度、不规则的数据检索模式,会严重低效地利用PCIe带宽,其带来的额外开销很容易抵消掉稀疏性本身带来的收益。
来自弗吉尼亚大学、香港中文大学、微软研究院和佐治亚理工学院的研究团队,敏锐地捕捉到了这一系统级挑战,并提出了一个名为Spin的解决方案。
Spin是一个稀疏注意力感知的推理框架,它通过协同设计执行流水线与分级KV存储,将稀疏算法的理论潜力转化为实实在在的系统效率。

论文标题:Unifying Sparse Attention with Hierarchical Memory for Scalable Long-Context LLM Serving
论文链接:https://arxiv.org/pdf/2604.26837
理想与现实的差距:稀疏服务的“系统墙”
为了量化稀疏注意力算法理论潜力与实际系统性能之间的差距,研究者们定义了一个“理想稀疏服务包络线”。这条线代表一个“先知”系统:它拥有最优的GPU-CPU KV缓存策略,能够以最小的开销精确预取未来所需的数据,并能以峰值效率利用PCIe带宽进行数据传输。

图1:理论性能与现实性能的差距。在A100 GPU上进行32K上下文长度的工作负载测试,现有的稀疏注意力实现(如ShadowKV)距离理想性能上限很远,且由于低效的内存管理,无法扩展到大的批处理规模。而基于Spin的系统则能接近这一上限。
然而,如图1所示,现有的稀疏注意力实现方案距离这条理想曲线相去甚远。问题根源在于三大系统挑战:
缺乏统一的稀疏抽象:稀疏算法多种多样,且发展迅速,它们可能以块(Block)、簇(Cluster)等不同粒度进行操作。现有推理框架(如vLLM)没有提供能容纳这些变体的通用接口,导致支持工作变成了算法特定的原型,无法复用优化内核和内存管理。 不规则KV检索侵蚀收益:一旦将完整KV缓存置于CPU内存,稀疏服务的瓶颈就转移到了GPU-CPU之间的数据移动上。与稠密注意力连续、可预测的访问模式不同,稀疏注意力需要根据每个解码步骤、每一层、每一个注意力头的动态选择,去检索少量、分散的KV数据。这种不规则的传输模式难以充分利用PCIe带宽,并将额外的延迟引入了关键路径。 元数据开销膨胀:为了跟踪海量KV缓存块在GPU和CPU之间的位置,系统需要维护庞大的元数据(如页表)。在长上下文场景下,尤其是支持“按头稀疏”(每个注意力头选择不同的关键词元)时,元数据的大小会急剧膨胀,甚至可能达到数十或数百GB,反过来挤占了本可用于缓存KV的宝贵GPU内存。

图2:不同系统的单词元解码延迟分解。现有的稀疏注意力实现(ShadowKV)的解码延迟远高于理想稀疏服务包络线,并且在低负载下显著低于稠密服务系统(vLLM)。
图2进一步揭示了具体性能差距。在低批处理大小时,由于注意力计算尚未成为瓶颈,而稀疏算法引入的评分(Scoring)和检索(Retrieval)开销不可忽视,即使理想曲线也可能不如优化的稠密系统(vLLM)。但现有的稀疏实现(ShadowKV)其检索开销甚至是理想情况下的两倍。随着批处理规模增大,数据移动开销增加,与理想曲线的差距进一步拉大。
Spin的核心设计:从抽象到高效管理
Spin的目标正是弥合这一差距。其核心思想是:将稀疏服务的核心问题从稀疏计算转化为稀疏数据管理。为此,Spin设计了三个关键技术:
1. 统一的分区抽象:连接算法与硬件的桥梁
Spin引入了“分区”作为核心抽象概念。一个分区是一组连续的词元,作为算法选择和系统检索的逻辑单元。它可以是固定大小的块,也可以是动态聚类的簇。尽管不同算法识别关键分区的方式不同,但它们都遵循一个共同的五阶段执行流水线模式。

图3:Spin中稀疏注意力的抽象推理流水线,展示了计算与数据移动的解耦。其中Select和Retrieve仅在解码阶段调用。
这个流水线包括:
算法定义的计算操作: Index(组织KV到分区并生成摘要)、Select(根据查询选择关键分区)、Attention(计算注意力)。Spin管理的数据移动操作: Offload(将KV分区卸载到CPU)、Retrieve(将关键分区从CPU取回GPU)。
这种设计将算法逻辑与系统级数据管理解耦。算法开发者只需实现Index、Select和可选的定制化Attention算子,而Offload和Retrieve则由Spin提供统一、优化的实现。这使得不同的稀疏方法可以共享高效的内存管理和数据传输机制。
图4展示了如何将ShadowKV算法集成到Spin中,仅需移植核心算法逻辑(高亮部分),其余繁重的系统工作均由Spin接管。
2. 动态的、局部性感知的KV管理
为了最大化关键KV数据在GPU的驻留时间,Spin实现了一个轻量级、感知局部性的KV管理器,它包含两项关键技术:
缓冲区弹性:Spin将每个请求的GPU缓存区分为“强制页”(存放当前解码步必需的分区)和“缓冲页”(存放历史分区以利用时间局部性)。调度器根据系统负载动态调整每个请求的缓冲页大小,在单请求吞吐量和系统整体并发度之间寻找最佳平衡。研究发现,将缓冲区大小设置为强制页大小的约5倍时,能获得最佳的收益成本比。 分桶LRU替换策略:在GPU缓冲区内部,需要决定哪些分区被保留,哪些被替换出去。传统的精确LRU维护全局顺序,在GPU上开销巨大。Spin设计了“分桶LRU”策略,为每个GPU驻留的页关联一个有限范围(如0-63)的时间戳(桶),代表其新旧程度。替换时,系统只需扫描一次页表构建直方图,然后从最旧的桶开始逐桶回收页面,直到满足需求。这种方法避免了全局排序,并行度高,非常适合GPU执行。

图5:Spin内存管理系统概览。步骤1-4描述了为关键分区执行“检索”的过程。
图5展示了Spin内存管理器的整体架构。通过分区到页的映射表,系统可以高效地定位数据。当需要检索关键分区时,管理器首先检查元数据表确定其驻留状态,然后通过分桶LRU策略在GPU页表中腾出空间,最后从CPU页表中获取物理地址并发起PCIe传输。
3. 分级元数据组织:告别空间浪费
为了应对元数据膨胀问题,Spin借鉴了操作系统多级页表的思想。如图6所示,Spin将所有元数据表(如GPU页表)组织为两级索引结构。系统只在GPU上保留一个小的、静态分配的顶级目录,其条目指向二级段。这些二级段仅在物理页被实际分配给请求时,才从预分配的共享池中按需分配。

图6:两级页表设计示意图。
这种设计使得元数据的大小与活动的物理工作集成比例增长,而不是与最坏情况的逻辑地址空间(最大批大小 x 最大上下文长度 x 层数 x 头数)成比例。结合“分层-拆分”映射(将部分元数据表放在CPU端),Spin将元数据的GPU内存消耗降低了一个数量级以上,为KV缓存腾出了宝贵空间。
性能评估:显著提升与广泛优势
研究团队在vLLM之上实现了Spin,并集成了三种代表性的稀疏注意力算法:ShadowKV、RetroInfer和SeerAttention-R,形成了Spin-ShadowKV、Spin-RetroInfer和Spin-SeerAttention系统。
他们在A100和B200两种GPU平台、Qwen3-14B/32B和Llama-3.1-70B等多种模型、以及LongBench-v2和LongGenBench两种长上下文基准测试上进行了全面评估。
主要发现如下:
端到端吞吐量大幅提升:在在线服务场景下,Spin驱动的系统在不同GPU、模型和工作负载上,实现了比vLLM高 1.66倍至5.66倍 的端到端吞吐量。请求率越高,优势越明显。这是因为Spin通过减少每个请求的HBM需求,支持了更大的运行批处理规模。 首词元时间显著降低:Spin将首词元时间降低了 7倍至9倍。在高负载下,由于Spin能维持更高的吞吐量和更大的批处理规模,新请求的排队延迟大大减少。 超越原始稀疏实现:与原始稀疏注意力算法的实现相比,Spin将单词元解码延迟降低了 **8.4% 至 58%**,吞吐量最高提升 2.39倍。这证明了Spin系统级优化的有效性。对于ShadowKV和RetroInfer,增益主要来自更低的PCIe检索开销;对于SeerAttention-R,则来自更高效的GPU内核。 元数据内存占用锐减:Spin的分级元数据组织将元数据的HBM消耗降低了 49倍至78倍。 缓存管理效果显著:局部性感知的缓冲区管理将解码吞吐量提升了 2.18倍。

图7:在LongBench-v2上,端到端吞吐量随请求率的变化。Spin系统能持续扩展,而vLLM在高负载下因内存抖动很快达到平台期甚至下降。

图13:Spin与原始稀疏实现的单词元解码延迟分解对比。Spin在所有算法上都一致地降低了延迟。
总结与展望
Spin工作的重要性在于,它首次系统性地解决了将动态稀疏注意力算法高效部署于实际推理系统所面临的核心挑战。通过提供统一的流水线抽象,Spin让多种稀疏算法能够以最小的开发成本集成,并共享一套优化的内存管理和数据传输基础设施。
这项工作不仅显著提升了长上下文LLM服务的效率和可扩展性,也为未来更复杂的稀疏化、动态化推理算法提供了一个坚实且灵活的系统基础。随着上下文窗口的持续增长和模型复杂度的提升,像Spin这样软硬件协同、算法与系统共设计的思路,将成为释放大语言模型全部潜力的关键。
> 本文由 Intern-S1 等 AI 生成,机智流编辑部校对
-- 完 --
机智流推荐阅读:
1.
2.
3.
4.
cc | 大模型技术交流群 hf | HuggingFace 高赞论文分享群 lc|LangChain 技术交流群 code | AI Coding 交流群 具身 | 具身智能交流群 硬件 | AI 硬件交流群 推理 | AI 推理框架交流群 智能体 | Agent 技术交流群