技术摘要:SelKV —— 基于逐 Token 决定合并或丢弃及注意力补偿的选择性 KV 缓存合并技术
1. 问题陈述
大型语言模型(LLM)在自回归推理过程中面临着一个关键瓶颈:键值(KV)缓存。随着上下文长度(n)的增加,KV 缓存的内存占用呈线性增长(O(L⋅H⋅d⋅n)),这严重限制了长上下文应用中的批处理大小、吞吐量和部署成本。
虽然现有的压缩方法试图缓解这一问题,但它们存在两个主要的局限性:
- 统一的“合并或丢弃”决策: 当前的方法通常采用二元策略:要么合并所有被驱逐的 Token(例如 KVMerger、WeightedKV),要么完全丢弃它们(例如 H2O、SnapKV)。这种缺乏粒度的方法意味着,当被驱逐 Token 的值向量(value vector)与其合并目标不相似时,加权平均会破坏保留下来的语义表示。相反,不加区分地丢弃则会导致信息的丢失。
- 注意力衰减(Attention Sag): 当多个 Token 被合并到单个缓存条目中时,该条目获得的 Softmax 注意力质量与单个未合并的 Token 相同。这导致了“注意力衰减”现象,即合并后的位置被系统性地低估了注意力权重,其程度与合并的 Token 数量(∼m)成正比,导致模型无法充分利用所保留的信息。
2. 方法论:SelKV
作者提出了 SelKV(Selective KV Cache Merging,选择性 KV 缓存合并),这是一个旨在解决上述局限性的无需训练的双组件框架。SelKV 是一个可插拔模块,集成在现有合并流水线的预填充(prefill)阶段之后。
核心组件
1. 软余弦门控(解决统一决策问题)
SelKV 没有采用二元的“合并或丢弃”决策,而是引入了一种基于值向量相似度的连续、逐 Token 门控机制。
- 机制: 对于路由到合并目标的每个被驱逐 Token,系统计算其值向量与目标之间的余弦相似度。
- 门控函数: 一个软门控 g=max(cos_sim,0) 用来调节合并强度:
- g≈1:高相似度 → 完全合并。
- g=0:不相似(正交)向量 → 丢弃该 Token。
- 0<g<1:中等相似度 → 部分合并。
- 实现: 这不需要学习参数或阈值调优。保留的 Token i 的合并值是通过对其原始值和来自被驱逐 Token 的贡献进行门控加权平均计算得出的,并由各自的门控值进行缩放。
2. 注意力补偿(解决注意力衰减问题)
为了纠正合并位置出现的系统性注意力不足,SelKV 在解码时应用了一个 Logit 偏置。
- 机制: 不同于以往使用原始合并计数(在高压缩率下可能不稳定)的方法,SelKV 从预填充统计数据中推导出注意力比例(Rh,i)。该比例估计了合并位置相对于其原始状态应获得的总体注意力质量。
- 校正: 在解码期间,向注意力 Logits 中添加一个偏置项 α⋅log(Ri)。这重新校准了 Softmax 分布,以确保合并后的位置能够获得与其现在所代表的信息量相匹配的适当注意力质量。
流水线概览
SelKV 流水线在预填充阶段后分为六个阶段进行:
- 重要性评分: 根据注意力权重与值向量幅度的乘积对 Token 进行评分(遵循 VATP),而非仅根据注意力权重。
- Token 选择: 每层(以及 MHA 中的每个头,或通过 GQA 中的并集)选择前 ms 个 Token 进行保留,同时保留一个固定的近期窗口。
- 合并目标路由: 根据预填充注意力模式,将被驱逐的 Token 路由到位置桶内的保留 Token 中。
- 选择性合并: 软余弦门控决定每个被驱逐 Token 的合并强度。
- 注意力补偿: 计算并应用 Logit 偏置。
- RoPE 重定位: 将 Key 重新嵌入到连续位置(在长上下文评估中禁用,以避免位置失真)。
3. 主要贡献
- 逐 Token 粒度: 引入了软余弦门控,能够根据语义相似度实现合并强度的连续调节,消除了以往方法中“全有或全无”的缺陷。
- 稳定的注意力补偿: 一种新型的基于注意力比例的 Logit 偏置,比基于原始计数的法更稳健地纠正了注意力衰减,尤其是在高压缩率下。
- 无需训练的集成: 该框架不需要微调,可以集成到现有的单次(one-shot)压缩流水线中。
- 架构适应性: 该方法支持多头注意力(MHA)和分组查询注意力(GQA)架构,并针对 GQA 模型提供了特定的 Token 选择并集处理。
4. 实验结果
该框架在 LongBench(16 个英文数据集)上对三种模型进行了评估:LongChat-7B (MHA)、LLaMA-3.1-8B (GQA) 和 Gemma-2-9B (GQA),仅保留 25% 的 KV 缓存。
- 性能对比基准: SelKV 一致优于具有代表性的单次压缩基准(SnapKV、LOOK-M、PyramidKV)。
- 在 GQA 模型上,SelKV 取得了最接近全缓存基准的性能,平均差距分别为 $-0.67$ (Gemma-2) 和 $-0.73$ (LLaMA-3.1)。
- 在 MHA 模型 (LongChat) 上,PyramidKV 在特定的 31.5k token 设置下表现略好,但 SelKV 仍保持竞争力。
- 多文档问答: 值得注意的是,SelKV 在多个多文档问答任务(如 LLaMA-3.1 上的 HotpotQA 和 MuSiQue)中超过了全缓存基准。作者将其解释为选择性合并起到了一种隐式注意力过滤器的作用,在保留显著证据的同时抑制了干扰上下文。
- 效率: 在 100k token 的上下文长度下,压缩后的缓存相比全缓存基准实现了 3.3 倍的解码加速。
- 鲁棒性: 该方法在不同的压缩率(10%–90% 保留率)和任务类别(包括摘要、少样本学习和代码补全)中均表现出鲁棒性。
5. 重要性与主张
论文将 SelKV 定位为在不牺牲质量的前提下实现长上下文 LLM 推理可行性的重要一步。作者主张:
- 选择性合并优于统一策略: 通过根据表示相似度调节合并强度,SelKV 避免了因不加区分的合并而导致的语义破坏。
- 注意力补偿至关重要: 如果不纠正注意力衰减,合并后的 Token 将被低估使用;SelKV 基于比例的校正确保了保留的信息能被有效地访问。
- 隐式过滤: SelKV 在复杂多文档问答任务中能够超越全缓存基准,这表明压缩过程本身可以通过过滤噪声来增强模型性能,这一发现挑战了“压缩总会降低能力”的假设。
作者总结道,SelKV 提供了一种实用的、无参数的解决方案,用于在内存受限的环境中部署 LLM,同时保持近乎无损的生成质量,特别是在基于 GQA 的架构中。