@bojie_li:如果你在生产环境中运行LLM智能体,你就会明白其中的代价。每一轮都要重新读取相同的长上下文——系统策略、工具……
摘要
研究人员提出了可编程KV缓存(Programmable KV Cache),这是一种用于编辑和组合KV缓存的方法,旨在避免LLM智能体推理过程中重新预填充长上下文,在保持决策一致性的同时,将p90首令牌时间减少了53至398倍。
查看缓存全文
缓存时间: 2026/07/07 13:32
如果你在生产环境中运行 LLM 代理,就会知道其中的代价。每一次轮询都会重新读取相同的长上下文——系统策略、工具规范、检索到的文档——而提示缓存(Anthropic 的、OpenAI 的)只在精确共享前缀的情况下才有帮助。只要前面改动一个词——时间戳、用户 ID、订单状态——后面每个词元的键和值都会失效。你的支持代理刚翻到“订单 #4471:运输中”,就要为重新填充 10,000 个词元付费,而这些词元半秒钟前刚计算过。
于是你尝试了显而易见的修补术:只刷新那个字段的键和值,保留其余部分。然而模型立即对旧值作出反应,仿佛编辑从未发生过。这个谜题困扰了我好几周——直到我们跨四个模型家族追查到了因果根源:变换器不会将其推理推迟到解码时进行。在预填充阶段,模型就已经将基于字段条件的结论写入了下游词元——写入了聚合器和分隔符词元,后面位置通过它们来读取。该字段自身的 KV 对决策的贡献不到 1%。KV 缓存并非冻结的副产品;它是一本记录了已记忆结论的笔记本。
这样理解的话,两个能力就浮现出来了。可编辑性:不要重新计算笔记,而是修正它们——一个只追加的“勘误表”(“X 现在变为 Y”)覆盖了过时的结论。可组合性:笔记是位置可移植的,因此预编译的技能可以通过 RoPE 重新定位并拼接进任何上下文,其结果与完全重新计算无法区分(十二个模型上的 logit 余弦值为 0.90–0.999),代价为 O(L) 而非 O(L²)。
关键点在于:由于勘误表是只追加的,它是在生产级前缀缓存之上运行的,而不是与之对抗——在实时的 vLLM 基准测试中,它保持了 98.5% 的缓存命中率,并将 p90 首次输出词元时间缩短了 53–398 倍,且决策结果与完全重新计算一致。你可以编程的 KV 缓存,而不仅仅是扩展它。
网站:https://01.me/research/programmable-kv… 代码:https://github.com/19PINE-AI/programmable-kv… 论文:https://arxiv.org/abs/2606.17107
相似文章
@IntuitMachine: PEEK: 这个1K Token地图刚刚终结了长上下文税 你的LLM代理正在读取同一个50K Token的代码库……
微软推出了PEEK,一个1,024 Token的'上下文地图',为LLM代理缓存定位知识,减少冗余推理,实现了高达34%的准确率提升,减少93-145次重试,成本降低5.8倍。
@akshay_pachaar: https://x.com/akshay_pachaar/status/2074502882812952666
一份关于KV缓存管理的实践指南,介绍开源LMCache架构,该架构通过消除代理工作流中的冗余上下文处理,将输入令牌成本降低90%,并将LLM推理速度提升高达14倍。
TokenPilot:面向LLM代理的缓存高效上下文管理
TokenPilot是一个双粒度上下文管理框架,通过稳定提示前缀和保守管理上下文片段,降低长时程LLM会话中的推理成本。在基准测试中实现了61-87%的成本降低,同时保持竞争性性能。
TTKV:面向长上下文LLM推理的时间分层KV缓存
TTKV借鉴人类记忆机制,提出时间分层KV缓存,在128K上下文LLM推理中降低76%延迟、吞吐量翻倍,跨层流量减少5.94倍。
@techNmak: 你的LLM推理正在消耗50%的计算资源在已经完成的工作上。如果你正在运行RAG或多轮对话,……
LMCache是一个开源库,它使KV缓存持久化并可在请求之间共享,消除了RAG和多轮对话工作负载中的重复计算,实现了高达15倍的吞吐量提升和3-10倍的首令牌时间减少。