Cartridges++:KV 缓存压缩不丢失离上下文能

来自 arXiv · 期号 2026-09-29

摘要

给 LLM 反复喂同一份长文档很贵:KV cache 会随上下文长度膨胀。压缩 KV cache(CKV)方法试图提前算好一份文档的紧凑表示,其中 Cartridges 通过蒸馏相关问答对来学习这种表示,效果领先。 但现有评测只关心 CKV 能否答对文档相关的问题(on-context),忽略了它能否处理与文档无关的查询(off-context)—— 而原生 KV cache 靠注意力机制恰好擅长后者。 作者发现一个根本的取舍:Cartridges 在 on-context 查询上更好,但启发式变体保留了更好的 off-context 能力(避免上下文污染、保持通用知识、遵循指令)。他们提出 Cartridges++,用两种简单修改来保留 off-context 能力:路由变体在推理时判断是否该用学到的长上下文记忆,数据混合变体在训练问答对里掺入少量与文档无关的查询。 论文表明,只用文档问答来评估 CKV 会掩盖模型能力的严重退化,但这些问题可以用很小的代价修复。

深读

导读 长文档重复输入 LLM 时,KV cache 的内存开销会随上下文线性增长。压缩 KV cache(CKV)方法试图提前算好一份文档的紧凑表示,但现有评测只关心它能否答对文档相关的问题,忽略了它处理无关查询时的能力。这篇论文发现了一个根本取舍,并提出两种简单修改来保留模型在无关查询上的表现。 关键信息 - 现有 CKV 评测只关注 on-context(与文档相关)查询,忽略了 off-context(与文档无关)查询,而原生 KV cache 靠注意力机制恰好擅长后者。 - Cartridges 在 on-context 查询上表现领先,但启发式变体在 off-context 能力(避免上下文污染、保持通用知识、遵循指令)上保留得更好。 - Cartridges++ 提出两种修改:路由变体在推理时判断是否该用学到的长上下文记忆;数据混合变体在训练问答对里掺入少量与文档无关的查询。 逐节讲解 问题:CKV 评测的盲区 LLM 重复处理同一份长文档时,KV cache 的内存开销随上下文长度膨胀。CKV 方法通过提前计算文档的紧凑表示来缓解这一问题,方法包括丢弃部分列或学习式压缩。其中 Cartridges 通过蒸馏相关问答对来学习紧凑表示,是目前领先的压缩方法。但现有评测只关心 CKV 能否对文档相关查询给出近似原生 KV cache 的回答,忽略了它能否处理与文档无关的查询,而原生 KV cache 恰好擅长后者。 核心发现:on-context 与 off-context 的取舍 作者通过实验观察到,Cartridges 在 on-context 查询上表现更好,但启发式变体保留了更好的 off-context 能力。他们从三个维度衡量 off-context 能力:避免上下文污染(模型不应把文档内容混入无关回答)、保留通用知识、遵循指令。这表明,仅用文档相关查询来评估 CKV 会掩盖模型在更广泛能力上的显著退化。 解决方案:Cartridges++ Cartridges++ 用两种简单修改来保留 off-context 能力,代价很小或可忽略。路由变体在推理时判断当前查询是否应该使用学到的长上下文记忆;数据混合变体在训练问答对中分配一小部分与参考长文档无关的查询。论文表明,这些良性的改动就能修复 CKV 在 off-context 场景下的问题。 值得注意 论文基于摘要,没有给出具体的实验设置、数据集、基准方法对比或量化结果(如压缩率、性能损失的具体数值)。路由变体的判断机制和数据混合变体中“小部分”的具体比例也未说明。这些细节需要阅读全文才能评估方法的实际效果。

读原文

本站只做摘要与索引,全部内容版权归原作者所有。