论文:Fast KV Compaction via Attention Matching
arXiv: 2602.16284 | MIT
一句话:用最小二乘法替代梯度优化,50倍压缩KV缓存,速度提升两个数量级。
一、问题的本质:为什么大模型"记性"那么差?
想象你正在读一本1000页的小说。正常人读完第500页时,脑子里还装着前499页的关键情节——谁背叛了谁、哪个伏笔还没回收。但Transformer不是人,它处理第500页token时,必须把前499页的所有token都带在身边。
这些token在模型里就是KV缓存(Key-Value Cache)。每个token贡献一对向量,序列越长,缓存越膨胀。在真实场景中——法律合同分析、多轮客服对话、长周期Agent编码——一个请求的KV缓存可以轻松吞掉几十GB显存。
现有的解法有三类,但都不理想:
| 方法 | 原理 | 问题 |
|---|---|---|
| Token丢弃 | 直接删掉老token | 信息永久丢失,模型"失忆" |
| Token合并 | 把相似token捏成一个 | 高压缩率下质量雪崩 |
| 文本摘要 | 把前文总结成一段话 | 高度失真,损伤下游任务 |
2025年Eyuboglu等人提出的Cartridges是个突破——它在隐空间(latent space)直接训练一个紧凑的KV缓存,50倍压缩后性能几乎无损。但代价是梯度优化:压缩一个上下文要跑数小时GPU,实时应用完全不可行。
MIT这篇论文的核心问题很直接:能不能不用梯度优化,也能达到Cartridges的质量?
二、核心洞察:注意力匹配(Attention Matching)
作者Adam Zweiger团队的关键洞察是:紧凑的KV缓存不需要完美重建原始token,它只需要让注意力机制"感觉"一样。
注意力机制的本质是:给定一个查询向量q,它在所有key上算出一组权重,然后用这些权重加权求和value。如果我们替换了一个压缩后的KV缓存,只要注意力的输出分布和 注意力质量(mass) 跟原来一样,后续层的模型根本分辨不出来。
这引出了两个数学约束:
约束1:局部注意力输出匹配
压缩后的加权value和 ≈ 原始加权value和
约束2:注意力质量匹配
压缩后的注意力总质量 ≈ 原始总质量
第二个约束有个 subtle 的难点:当token数从T压缩到t(t << T),即使q=0,原始mass=T,压缩后mass=t,天然不匹配。作者引入了一个 标量偏置β(scalar bias),让每个保留的key可以"代表"多个原始key的质量贡献。
直觉上,\(β_j = log(w_j)\),而\(w_j\)代表"这个紧凑key相当于多少个原始key"。如果\(w_j=5\),意味着这个key扛起了5个原始key的注意力质量。
三、方法:三步流水线,全程闭式解
最漂亮的地方在于:整个优化过程 完全不需要梯度下降,每一步都是闭式(closed-form)的线性代数运算。
步骤1:采样参考查询(Reference Queries)
系统需要知道"模型未来会问什么样的问题"。三种策略:
- Repeat-prefill:让模型重复前文,提取重复过程中的query向量
- Self-study:让模型生成关于上下文的摘要和问答,提取query
- On-policy:逐层压缩,用前面已压缩层的输出作为后面层的参考查询(减少分布漂移)
步骤2:选择紧凑Key(\(C_k\))
两种策略,速度-质量 trade-off:
A. Highest Attention Keys(最快)
- 在参考查询下,计算每个原始key的注意力权重
- 用RMS(Root Mean Square)聚合多查询的权重,选出得分最高的\(t\)个key
- \(O(T)\)复杂度,极快
B. OMP Keys(最准)
- 正交匹配追踪(Orthogonal Matching Pursuit)
- 贪心策略:每次选最能减少mass误差的key,然后用NNLS重新拟合权重
- \(O(t^2)\)或更高,但质量更好
步骤3:拟合偏置β和紧凑Value(\(C_v\))
给定选好的\(C_k\),\(β\)和\(C_v\)都是 最小二乘 的直接求解:
拟合β(非负最小二乘):
其中 \(A_ij = exp(q_i · C_(kj))\),\(m_i = Σ exp(q_i · K_k)\) 是原始注意力质量。
拟合\(C_v\)(普通最小二乘):
其中X是压缩后的注意力权重矩阵,Y是原始的注意力输出矩阵。
全程没有SGD、没有反向传播、没有学习率调参。就是纯线性代数。
四、非均匀压缩:不同头部,不同预算
所有head一刀切是浪费的。MIT团队发现:不同注意力头的敏感度差异巨大,而且这种排名在不同输入间高度稳定。
有些head是"局部模式匹配器"(只看附近几个token),压缩对它们影响很小;有些head是"长程依赖追踪器",需要更多预算。非uniform compaction给每个head分配不同的压缩率,在相同总内存下获得更好的质量。
实现上需要FlashAttention等支持variable-length序列的kernel,技术上已经可行。
五、实验结果:Pareto前沿上的新标杆
Figure 1是这篇论文最直观的结果:在Qwen3-4B模型、QuALITY长文档QA任务上,50倍压缩率下:
| 方法 | 压缩时间 | 下游QA准确率 |
|---|---|---|
| Token丢弃基线 | 秒级 | 显著下降 |
| Cartridges(梯度优化) | 数小时 | 接近无损 |
| Attention Matching (OMP) | 秒级~分钟级 | 超过Cartridges |
| Attention Matching (HighestAttn) | 秒级 | 接近Cartridges |
Attention Matching的方法族形成了清晰的Pareto frontier:
- 想要极致速度 → Highest Attention Keys(秒级,质量略逊)
- 想要极致质量 → OMP Keys(分钟级,超过Cartridges)
- 想要平衡 → 两者之间的各种变体
关键是:即使是最快的方法,质量也显著优于传统的token丢弃/合并基线。
六、为什么这很重要?
1. 长上下文Agent的内存瓶颈被解开了
现在的Agent(如Claude Code、OpenAI Codex)在长会话中会周期性地"压缩上下文"——本质上就是摘要。Attention Matching提供了一种更精确、更快、几乎无损的替代方案。一个数小时的压缩任务变成几秒,意味着可以每轮都压缩,而不是等到内存快满了才做一次。
2. 无需训练/微调
Cartridges需要为每个上下文单独训练。Attention Matching是zero-shot的——拿到模型和上下文,直接算。这对API服务提供商特别重要:不需要改模型权重,不需要用户数据,部署即开即用。
3. 与现有推理栈兼容
标量偏置β可以直接融入PyTorch的SDPA和FlexAttention,不需要改kernel。逻辑长度(logical length)保持原始T,新token的RoPE位置编码不受影响。
七、局限与未解问题
1. 参考查询的质量依赖
如果采样到的参考查询不能代表未来真实查询的分布,压缩质量会下降。Self-study效果最好但成本最高,context-prefill最便宜但略差。实践中需要权衡。
2. OMP的速度瓶颈
虽然比梯度优化快两个数量级,但OMP的贪心+NNLS迭代在极端长上下文(百万token)下仍可能慢。作者提到可以通过"批量选key+间隔重拟合"加速4-8倍,但最优算法仍待探索。
3. 多模态记忆的缺席
论文只关注文本KV缓存。图像、音频、视频的多模态KV缓存是否适用同样的框架?注意力质量的概念在跨模态场景下需要重新定义。
4. 与量化方法的互补性
论文是"token数量压缩"(从T个token减到t个),而非"每个token的精度压缩"(如KIVI、TurboQuant的2-4bit量化)。两者是正交的——可以先用Attention Matching减少token数,再对保留的token做量化。这个组合能走多远,作者没测。
八、一句话总结
MIT的Attention Matching做了一件漂亮的事:它把KV缓存压缩从"深度学习优化问题"重新定义为"线性代数求解问题"——保留key子集、最小二乘拟合偏置、最小二乘拟合value。没有梯度,没有训练,50倍压缩,秒级完成。
这不是渐进式改进,这是范式转移。
对于任何做长上下文推理、Agent记忆、或者大规模LLM服务的人来说,这篇论文值得仔细读。
参考信息
- 论文:arXiv:2602.16284 | Fast KV Compaction via Attention Matching
- 作者:Adam Zweiger, et al. (MIT)
- 相关:Cartridges (Eyuboglu et al., 2025), H2O (Zhang et al., 2023), KIVI (ICML 2024), TurboQuant (ICLR 2026)
#论文解读 #KV缓存 #注意力机制 #长上下文 #MIT #AI基础设施 #小凯
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。