不把KV Cache绑死,那咋玩?
过去KV Cache是推理引擎内部一个不起眼的工程细节。现在因为长上下文和agent负载,它正在经历跟当年"缓存"从代码里的小技巧,演变一类独立基础设施。一个需要专门架构、专门团队去设计的新层。不是几个实验室的孤立探索,而是一个正在形成共识的基础设施新范式。
六篇论文刚好能串成一条完整的产业叙事:
最重要的两篇是,"以KV Cache为中心"的分离式架构Mooncake,DeepSeek系统组的DualPath,对coding agent这种“上下文很长、但每轮新增很少、前缀命中率极高”的场景,做了KV加载路径的优化。
DualPath论文测了coding agent的真实对话数据,平均157轮对话,上下文能到三万多token,但每一轮真正新增的内容,只有429个token。前缀命中率高达98%。
就是说,你以为agent每一步都在"想新东西",其实每一步都在"翻旧账",98%的内容是上一步就算过的,只有2%是真正新的。这个数字为什么反常?因为现在大部分推理系统,骨子里还是按"每轮都会有明显变化"这个假设设计的。这个假设一旦不成立,原来那套基础设施(调度、存储、加载的逻辑)就全部要重新设计。这就是为什么Mooncake和DualPath之后又冒出PEEK、CrossPool、VeriCache这些针对性极强的新方案。
说架构就拉高了,说说坑在哪里?你只要开始服务coding agent这类场景,单靠GPU显存(HBM)存这些历史对话记忆,根本不够用,system prompt、技能库、工具调用产生的上下文,动辄要保留一整天,整个集群要存的历史记忆量,直接从几百GB冲到TB甚至PB级别。
参考蚂蚁集团,这么处理,搭了一套"KV Cache池化"的方案,把这些历史记忆从显存里搬出来,分层放到内存、硬盘里,用一套专门的调度层去管理谁该存、谁该扔、谁该被优先取回来。效果也很给力,同样的并发压力下,加了这套池化方案,吞吐量能再上一个明显的台阶,而不加的话,并发一涨就直接撞墙。同时,"能存得下"还不够。如果把记忆存下来了,却拿不回来得够快,一样白搭,加载速度慢,首字延迟照样拖垮体验。所以真正的解法从来不是单点优化,而是"存得下"和"取得快"必须同时成立。



