KVzip: Query-Agnostic KV Cache Compression with Context Reconstruction¶
会议: NeurIPS 2025 (Oral)
arXiv: 2505.23416
代码: 有
领域: 模型压缩 / LLM推理优化
关键词: KV Cache压缩, 查询无关, 上下文重建, 长上下文推理, 缓存复用
一句话总结¶
提出 KVzip,一种查询无关的 KV Cache 驱逐方法,通过利用 LLM 自身从缓存的 KV 对中重建原始上下文来量化每个 KV 对的重要性,实现 3-4× 的 KV Cache 压缩率和约 2× 的 FlashAttention 解码延迟降低,同时在多查询场景下显著优于现有查询感知方法。
研究背景与动机¶
随着 LLM 处理的上下文长度不断增长,KV Cache 的内存开销和注意力计算延迟成为部署瓶颈:
内存挑战:长上下文场景(如 170K token)下 KV Cache 占据大量 GPU 内存
延迟挑战:注意力计算的延迟随 KV Cache 长度线性增长
现有 KV Cache 压缩方法主要是查询感知的(query-aware),即根据当前查询的注意力分数来决定保留哪些 KV 对。但这种方法有根本缺陷:
- 缓存无法复用:每次查询需要重新压缩,无法在多查询场景中复用同一压缩缓存
- 性能退化:即使在 90% 的缓存预算比下,查询感知方法在多查询场景也会出现性能下降
- 需要查询预知:必须在处理查询时才能决定哪些 KV 对重要
KVzip 的核心洞察:KV 对的重要性应该由其对上下文重建的贡献来衡量,而非由特定查询的注意力分数决定。
方法详解¶
整体框架¶
KVzip 工作流程:
- 预填充阶段:LLM 正常处理上下文,生成完整的 KV Cache
- 重要性评估:使用 LLM 自身评估每个 KV 对对重建原始上下文的重要性
- KV 驱逐:移除重要性低的 KV 对,保留压缩后的 KV Cache
- 多查询推理:压缩后的 KV Cache 可被多个不同查询复用
关键设计¶
1. 基于上下文重建的重要性评估
KVzip 利用 LLM 本身作为评估工具:给定一组候选保留的 KV 对,测量 LLM 能否从这些 KV 对中重建原始输入上下文。重建能力越强,说明保留的 KV 对包含了更多关键信息。
具体而言,重要性分数通过以下方式计算: - 计算每个 KV 对被移除后上下文重建损失的增量 - 增量越大,说明该 KV 对越重要,应该保留
2. 查询无关性
重要性评估完全基于上下文本身,不依赖任何未来查询。这意味着: - 压缩只需执行一次 - 压缩后的 KV Cache 可为任意后续查询服务 - 特别适合 prefill-once, decode-many 的部署场景(如文档QA、多轮对话)
3. 分层驱逐策略
不同注意力层和不同注意力头对 KV 对的重要性可能不同,KVzip 允许在每一层独立估计重要性并执行驱逐,实现更精细的压缩。
损失函数 / 训练策略¶
KVzip 是一种无需额外训练的方法,直接利用现有 LLM 的能力进行重要性评估。上下文重建损失即为标准的交叉熵损失,衡量从压缩 KV Cache 中重建原始 token 序列的能力。
实验关键数据¶
主实验¶
表1: 多查询场景下的性能(保留 25% KV Cache)
| 方法 | 类型 | QA准确率 | 检索准确率 | 推理准确率 | 代码理解准确率 | 平均 |
|---|---|---|---|---|---|---|
| Full Cache (100%) | - | 基准 | 基准 | 基准 | 基准 | 100% |
| H2O | 查询感知 | 显著下降 | 显著下降 | 显著下降 | 显著下降 | <80% |
| SnapKV | 查询感知 | 下降 | 下降 | 下降 | 下降 | <85% |
| KVzip | 查询无关 | 接近基准 | 接近基准 | 接近基准 | 接近基准 | ~97% |
表2: 不同模型上的压缩效果
| 模型 | KV Cache压缩率 | FlashAttention延迟降低 | 性能损失 |
|---|---|---|---|
| LLaMA3.1-8B | 3-4× | ~2× | 可忽略 |
| Qwen2.5-14B | 3-4× | ~2× | 可忽略 |
| Gemma3 | 3-4× | ~2× | 可忽略 |
表3: 不同缓存预算比下的对比(多查询场景)
| 缓存预算比 | H2O (查询感知) | SnapKV (查询感知) | KVzip (查询无关) |
|---|---|---|---|
| 90% | 性能退化 | 性能退化 | 接近满缓存 |
| 50% | 严重退化 | 明显退化 | 轻微影响 |
| 25% | 不可用 | 大幅下降 | 仍可接受 |
消融实验¶
上下文重建 vs 其他重要性度量
| 重要性度量方法 | 25% 预算下平均性能 |
|---|---|
| 随机驱逐 | 很差 |
| 注意力分数 (首个query) | 中等但不稳定 |
| 累积注意力分数 | 较好但退化 |
| 上下文重建 (KVzip) | 最佳且稳定 |
长上下文扩展测试
| 上下文长度 | KVzip 压缩率 | 性能保持 |
|---|---|---|
| 8K tokens | 3× | >98% |
| 32K tokens | 3× | >97% |
| 128K tokens | 4× | >95% |
| 170K tokens | 4× | >94% |
关键发现¶
- 查询感知方法在多查询场景失效:即使 90% 预算比,H2O 等方法也因为针对特定查询优化而在其他查询上退化
- 上下文重建是更好的重要性信号:比注意力分数更能反映 KV 对的全局重要性
- 跨模型一致性:在 LLaMA3.1、Qwen2.5、Gemma3 上均有效
- 超长上下文可行性:在 170K token 上下文长度下仍能维持有效压缩
- 实际加速:FlashAttention 解码延迟降低约 2×,内存减少 3-4×
亮点与洞察¶
- 查询无关范式:重新定义了 KV Cache 压缩问题——重要性不应由查询决定,而应由上下文信息密度决定
- 自监督信号:巧妙利用 LLM 自身作为"评判者"评估 KV 对重要性,无需额外标注或训练
- Prefill-once 部署:完美契合长文档QA、代理推理等需要对同一上下文多次查询的实际场景
- NeurIPS 2025 Oral:说明审稿人对这个简洁而有效的方法给予了高度评价
- 即插即用:不修改模型架构,可直接应用于任何 Transformer LLM
局限与展望¶
- 重要性评估的开销:需要额外的前向计算来评估 KV 对重要性(一次性成本)
- 静态压缩:一旦压缩完成,无法根据新查询动态调整保留的 KV 对
- 可与量化结合:KV Cache 驱逐与量化是正交方法,结合可获得更大压缩率
- 注意力头异质性:不同注意力头可能有不同的最优压缩率,自适应策略值得探索
- 流式场景:当上下文持续增长时(如对话),需要增量式重要性更新
相关工作与启发¶
- H2O (Zhang et al., 2024):基于注意力分数的 KV Cache 驱逐
- SnapKV (Li et al., 2024):通过观察窗口注意力模式进行压缩
- StreamingLLM (Xiao et al., 2023):保留 attention sink token 的流式推理
- GQA / MQA:通过共享 KV 头减少 KV Cache 大小
- 启发:KV Cache 压缩的关键不是找到"对当前查询重要的 token",而是找到"包含上下文信息的 token"
评分¶
| 维度 | 分数 (1-5) | 说明 |
|---|---|---|
| 创新性 | 5 | 查询无关压缩范式,上下文重建的新颖角度 |
| 技术质量 | 4 | 方法简洁有效,NeurIPS Oral |
| 实验充分度 | 5 | 多模型、多任务、多长度、多对比方法 |
| 实用性 | 5 | 即插即用,解决实际部署痛点 |
| 写作质量 | 4 | 问题定义清晰,结果展示充分 |
相关论文¶
- [NeurIPS 2025] Inference-Time Hyper-Scaling with KV Cache Compression
- [NeurIPS 2025] ChunkKV: Semantic-Preserving KV Cache Compression for Efficient Long-Context LLM Inference
- [ICML 2025] RocketKV: Accelerating Long-Context LLM Inference via Two-Stage KV Cache Compression
- [NeurIPS 2025] Homogeneous Keys, Heterogeneous Values: Exploiting Local KV Cache Asymmetry for Long-Context LLMs
- [NeurIPS 2025] KeyDiff: Key Similarity-Based KV Cache Eviction for Long-Context LLM Inference in Resource-Constrained Environments