[控场AI]
· 6 分钟阅读· 3,048 字

AttSVD:用注意力引导的SVD压缩KV缓存,内存砍半不掉点

AttSVD:用注意力引导的SVD压缩KV缓存,内存砍半不掉点

AttSVD通过在线逐prompt的低秩SVD压缩KV缓存特征维度,无需训练即可将显存降至50%且精度不降。

AttSVD是一种免训练的KV缓存压缩方案,针对自回归Transformer推理时KV缓存随上下文线性膨胀的痛点,提出了一条与主流token驱逐方法截然不同的技术路线。它不删减任何token,而是沿特征轴对每个token的K、V向量做低秩SVD压缩,且压缩所用的基直接从每个prompt自身的注意力几何结构中在线推导,天然具备自适应性和可解释性。配合两种解码缓存策略(累积式用于短生成、流式用于长生成),以及逐矩阵能量规则和注意力感知基截断两项精细化改进,AttSVD在LongBench和智能体基准上以最多50%的显存占用实现了与完整稠密缓存相当的精度,为长上下文大模型的高效推理落地提供了一条值得关注的路径。

长上下文的内存瓶颈:KV缓存为何成为拦路虎

自回归Transformer在推理时需要缓存每一层、每一个注意力头的键值对(Key-Value,简称KV),以避免重复计算。问题在于,这个KV缓存的大小会随着上下文长度线性增长。当模型处理长文档、多轮对话或智能体(Agent)任务时,KV缓存往往会成为显存占用的最大头,直接决定了模型能支持的最大上下文窗口和并发量。

一篇新发布的arXiv论文《AttSVD: Prompt-Adaptive Low-Rank KV Cache Compression via Attention-Guided SVD》针对这一痛点,提出了一种无需重新训练的KV缓存压缩方案,在多个模型和基准测试上实现了最高仅用50%内存却保持与完整缓存相当精度的效果。

AttSVD论文

换个维度省内存:从"删token"到"压特征"

大多数免训练的KV缓存优化方法走的是"驱逐(eviction)"路线——判断哪些token不重要,然后直接丢弃。这种做法的问题在于它是沿序列轴进行的不可逆操作:一旦某个token被删掉,它所携带的信息就彻底丢失了,无法恢复。如果后续生成恰好需要这部分信息,模型就会出错。

AttSVD的思路完全不同。它选择保留每一个token,但在"特征轴"(feature axis)上用更廉价的方式存储它们。换句话说,它不去判断哪些token该留该走,而是通过低秩分解压缩每个token向量的表示维度。这种策略规避了序列层面信息丢失的风险,是一种更"温和"也更可逆的压缩思路。

核心机制:基于注意力几何的在线SVD

AttSVD的关键创新在于,它用于低秩压缩的基(basis)并非固定不变,而是从每个提示(prompt)自身的注意力几何结构中推导出来的。具体做法是对每个prompt执行一次在线的、逐prompt的截断奇异值分解(truncated SVD),只保留注意力实际"读取"的那些方向。

这一设计的直接收益是:持久化的每头KV内存占用,会按照保留的秩(rank)成比例下降。而且由于压缩方向来自注意力本身的几何,它天然是"可解释"的——保留的正是注意力真正消费的那部分信息空间。

奇异值分解(SVD)是线性代数中的经典矩阵分解方法:任意矩阵 $M$ 可以分解为 $M = U\Sigma V^T$,其中 $\Sigma$ 是按奇异值从大到小排列的对角矩阵。截断SVD(truncated SVD)只保留前 $r$ 个最大奇异值及其对应的左右奇异向量,将原矩阵近似为一个秩为 $r$ 的低秩矩阵,从而实现信息压缩。秩 $r$ 越低,存储成本越小,但近似误差也越大。AttSVD的关键之处在于"在线逐prompt"执行这一分解——它不是离线预计算一个固定的全局投影基,而是在推理时针对每个具体输入的KV矩阵实时计算SVD,捕获该prompt特有的注意力几何结构。这意味着压缩方向能够动态适应不同输入的信息分布,而非用一个对所有输入平均最优的静态基来凑合,这正是"prompt-adaptive"(提示自适应)名称的由来。

主流的KV缓存驱逐方法(如H2O、ScissorHands、StreamingLLM等)的核心逻辑是:给每个token打一个重要性分数(通常基于累积注意力权重),然后将低分token的KV向量从缓存中彻底移除。这类方法在序列长度维度上做"稀疏化",内存节省直观,但代价是决策不可逆——被驱逐的token在后续生成步骤中永久缺席。AttSVD所走的"特征轴压缩"路线则是在保留全部token的前提下,对每个token的K、V向量本身做降维:原本维度为 $d_{head}$ 的向量被投影到一个更低维度的子空间中存储,推理时再投影回原空间参与注意力计算。这与token驱逐在信息损失的模式上有本质区别:前者是完全删除部分序列位置的贡献,后者是以有损压缩的方式保留所有位置的近似贡献。

两种解码缓存策略:兼顾长短生成场景

论文针对不同的生成长度,提出了两种解码时的缓存策略:

  • 累积式(accumulating):适用于短生成场景;
  • 流式(streaming):适用于长生成场景。

这种区分很有必要。短生成和长生成对缓存的读写模式差异很大,用一套固定策略难以同时兼顾效率和精度。通过提供两种模式,AttSVD让使用者可以根据实际任务特性选择最合适的缓存管理方式。

让压缩变得自适应的两项改进

AttSVD还引入了两项让压缩更智能的精细化设计:

逐矩阵能量规则(per-matrix energy rule):它独立地为logit空间和注意力质量(attention mass)确定尺寸。这意味着压缩率不是一刀切,而是根据每个矩阵承载的能量分布动态调整,避免在信息密集的地方过度压缩。

注意力感知的基截断(attention-aware basis):它只在注意力实际读取的空间里做截断,从而同时保留注意力的logits和注意力的输出。这保证了压缩不会破坏注意力计算的关键环节。

值得一提的是,这些分解因子还顺带提供了"免费"的逐头可解释性洞察——研究者可以借此观察每个注意力头的有效秩(effective rank)以及注意力所消费的几何结构,这对理解Transformer内部机制也有参考价值。

实测表现:内存减半,精度不降

论文在多个模型上进行了验证,测试覆盖了一个智能体(agentic)基准和完整的LongBench长上下文评测套件。结果显示,AttSVD在使用最多仅50%的KV缓存内存的情况下,性能与完整的稠密缓存保持相当(on par)。

这一结果的意义在于,它证明了沿特征轴压缩的可行性和实用性:在不牺牲模型能力的前提下,把长上下文推理的显存成本直接砍掉一半。对于部署长上下文大模型、运行智能体任务或追求更高并发吞吐的场景,这类方案具有直接的工程价值。

LongBench是目前长上下文理解领域最广泛使用的综合评测基准,涵盖单文档问答、多文档问答、摘要、少样本学习、代码补全和合成任务等多个子任务,测试文档长度普遍超过8K tokens,部分任务超过32K tokens。它要求模型真正"理解"并利用长距离上下文信息,而非依赖近端信息或参数记忆就能作答,因此对KV缓存压缩方案的信息保留能力是一个严苛的考验。智能体(agentic)基准则测试模型在多步骤工具调用、规划与反馈循环中的表现,这类任务的对话历史往往比普通问答更长且结构更复杂,对缓存中早期轮次信息的完整保留有更高要求。AttSVD在这两类截然不同的评测场景下均保持了与完整缓存相当的性能,说明其压缩策略具备较强的跨任务泛化能力。

小结

AttSVD代表了KV缓存优化的一个新方向:不再纠结于"删哪个token",而是转向"如何更省地存每个token"。它借助注意力自身的几何结构做自适应低秩分解,既保留了全部序列信息,又实现了内存减半。配合累积式与流式两种解码策略,以及逐矩阵能量规则和注意力感知截断两项改进,这套方法在长上下文和智能体基准上验证了其有效性。作为一种免训练、可解释的方案,它为长上下文推理的落地提供了一条值得关注的技术路径。

#KV缓存压缩#AttSVD#低秩分解#长上下文#注意力机制#SVD#Transformer推理优化#显存优化
分享:

相关推荐