做长上下文推理的人都被同一个问题折磨过:显存不够,速度起不来。最直接的办法是压缩KV Cache,但压缩多少、压哪个头,一直是个拍脑袋的活。百度百舸团队和复旦大学联合提出的LU-KV(Long-horizon Utility KV)框架换了个思路——把每个注意力头的预算分配看作一个面向长程边际效用的全局组合优化问题,先离线画好每个头的边际贡献曲线,再在压缩时按曲线贪心求解。这一波操作下来,80%压缩比下LongBench和RULER基准的性能损失被压到很小,论文也被ICML 2026接收了。
KV Cache压缩的"老毛病":局部贪心,全局失衡
现成的KV Cache压缩方法不少,SnapKV、KeyDiff、PyramidKV都能列出一长串,但它们大多在做同一件事:压缩那一刻盯着注意力分数看,谁高留谁。问题在于,注意力分数高的头未必真的"重要"——有的头当前分数亮眼,砍掉之后对后续几百个token的影响却微乎其微;有的头分数平平,却默默承担着长距离依赖的活。局部贪心的代价是预算被错配,整体性能没拉到理论上限。
从"看分数"到"看效用"
LU-KV的核心转变在于:评估一个注意力头值不值得保留预算,不看它当下有多"响",而看它在整个上下文窗口内的边际效用。换句话说,要回答的是"砍掉这个头多少token之后,模型输出会变差多少",而不是"这个头当前分数排第几"。
为什么是组合优化
预算就那么多,所有头一起分。给A头多留一点,B头就得少拿,反之亦然——这天然是个组合问题。LU-KV把它形式化为一个长程目标下的全局分配任务,目标函数覆盖整个生成窗口,而不是压缩瞬间的快照。形式上一升级,求解空间就从一个贪心排序变成了一个带约束的优化问题。
LU-KV的求解路径:离线画像 + 在线贪心
把问题建模漂亮只是第一步,能不能在真实推理延迟预算内解出来才是关键。LU-KV的设计明显考虑了工程落地:重活离线干,轻活在线算。
离线阶段:给每个头画一条"效用曲线"
团队先在离线状态下,对每个注意力头、每种压缩粒度做一次边际贡献画像。具体做法是逐头扫描预算从满到零的若干档位,记录模型在验证集上的指标变化,最终得到一条"保留预算-性能贡献"曲线。这条曲线就是该头的效用指纹,后续在线分配完全基于它,不再触碰模型本身。
凸包松弛:把NP-hard问题变可解
全局组合优化在头数多、预算档位细时是典型的组合爆炸问题。LU-KV的解法是对效用曲线做凸包松弛,把原始离散搜索变成一个上界可控的连续近似。原问题的最优解被夹在凸包近似与原始离散解之间,松弛后用经典凸优化就能在毫秒级拿到接近最优的预算配置。
在线求解:边际效用贪心分配
拿到凸包曲线之后,预算分配就退化为一个简单的贪心过程:每一步挑"再多给一档预算能换来最大性能增益"的那个头加码,直到总预算耗尽。整个过程不涉及梯度反传,不重跑模型,纯查表式计算,可以塞进推理主循环而不拖累首token延迟。
兼容性:不是替代,是"插件"
LU-KV的定位很克制——它不重新发明压缩方法,而是给现有方案换一套更聪明的预算分配器。
SnapKV、KeyDiff直接接入
论文里把LU-KV挂到SnapKV和KeyDiff上做对照,原本基于局部注意力分数的预算分配被替换成基于长程边际效用的版本。结果显示,在80%压缩比下,LongBench多项任务和RULER长上下文基准的指标损失被显著收窄,部分任务甚至接近全量缓存的水平。
工程收益是直接的
更少的有效KV意味着更低的显存占用,意味着同卡能撑更长的上下文,也意味着推理延迟在decode阶段进一步下降。对部署长上下文问答、代码仓库理解、多轮对话摘要等场景的团队来说,这是一份实打实的性价比提升——不用换模型,不改服务框架,只调整预算分配策略就能拿到收益。
为什么这篇论文值得细读
KV Cache压缩这个赛道过去一年的工作集中在两件事:发现更聪明的"留谁"规则,以及发现更高效的存储格式。LU-KV属于前者,但它把"留谁"从经验式规则升级成了有理论目标、有求解算法、有离线-在线分离的系统性框架。这种升级路径在工程上比堆一个更大的模型或更花哨的压缩算子更难,也更稀缺。
对长上下文推理的从业者来说,LU-KV的真正价值不在某个具体数字,而在它给出的方法论提示:当你手里的优化对象是一个有预算约束的多智能体系统(这里每个注意力头就是一个小智能体),用局部指标做决策一定会撞墙,全局效用视角几乎是唯一能逼近最优解的方向。这条经验,从注意力头分配,到MoE专家路由,再到多模型级联调度,全都适用。ICML 2026接收这篇工作,看中的多半也是这个层面的洞察。

