论文

MOIRA:面向质量的索引,具有用于长上下文解码的不规则注意力

MOIRA: Mass-Oriented Indexing with Ragged Attention for Long-Context Decoding

模型推理KV Cache

摘要

长上下文解码受到记忆带宽的限制,因为每个输出token都会读取每一层的 KV 缓存。稀疏解码通过仅读取部分 KV 缓存来降低此成本。我们观察到,查询所需的页面数量在 KV 头、层和步骤之间存在很大差异。固定预算很简单,但它们的大小适合要求苛刻的情况,并根据工作负载进行调整;自适应预算更灵活地遵循这种变化,但现有设计需要付出额外的选择成本或训练的代价。在内核级别,FlashAttention-3 (FA3) 和 FlashInfer 是为类似长度的行而设计的:对于每个 KV 头长度不同的页列表,它们要么填充列表(放弃大部分稀疏节省),要么使线程块不平衡,或者依赖在 CUDA 图之外运行的主机端计划。我们提出 MOIRA,vLLM中的无需训练稀疏解码路径,其预算适应每个 KV 头和每层。对于每个请求、层、KV 头和步骤,覆盖规则保留估计注意力质量达到分数 $γ$ 的最小页面集。一个新的内核,自我规划注意力,让每个线程块从列表长度中获得自己的工作份额,因此整个解码步骤保留在 CUDA 图中。在 H200 上,在 RULER 的 128k 上下文中,具有 $γ=0.99$ 的 MOIRA 在阅读大约 30% 的页面时可匹配密集精度,并且相对于密集 FA3,将每次输出token (TPOT) 的时间减少 2.2-2.5$\times$;使用 $γ=0.98$ 时,它可以将 TPOT 减少 2.7$\times$ 并保持在密集的噪声范围内。在高服务负载下,它可将吞吐量提高高达 51%。这些结果表明,每个头和层的预算与将此类预算保留在 CUDA 图中的内核配对,使得稀疏解码既灵活又快速。

MOIRA:面向质量的索引,具有用于长上下文解码的不规则注意力的原论文方法或结果图
图 1:一行所需的预算各不相同,固定预算或粗略长度会导致节省。 Oracle 覆盖范围设置 $\mathcal{C}^{\star}(0.95)$ 超过 60 个 LongBench 请求、64-token页。 (a) 对于 Llama-3.1-8B 的每个(层,KV 头),集合的平均大小(作为上下文的一部分):第一层需要大部分上下文,而大多数层只需要十分之一。 (b) 预算策略相对于覆盖集读取的token,当每个策略必须在所有层和步骤上提供 90% 的行时,至少 0.95 的质量:每个固定或分析预算读取 1.7–2.4$\times$ 与覆盖集(虚线)一样多的token。 (c) 当每(层、KV 头)长度粗化时,按 32 个请求批量读取的密集 KV 缓存的分数(解码步骤 16-256 的总和):填充到最长的头使读取次数加倍。