Report

每日技术报告|2026-08-06:在线 KV 压缩、可恢复缓存与混合模型状态边界

聚焦 Agent 在线 KV Cache 压缩、Dynamo 持久化 KV 布局、vLLM/SGLang 混合状态修复,以及 Kimi K3 推测解码工程进展。

今日概览

过去 24 小时内,值得关注的变化并不是某个单一 kernel 再次提高了若干百分点,而是推理系统正在被迫更精确地描述“状态”。第一,Agent 的 KV Cache 压缩不能再沿用静态长文本场景中“当前注意力即可代表未来重要性”的假设;近期论文表明,压缩时能否获得未来查询代理,直接决定压缩后的任务质量。第二,NVIDIA Dynamo 正在探索让 KV 内存布局跨推理进程存活,使故障恢复不必从空缓存重新开始。第三,vLLM 与 SGLang 的最新修复再次说明,混合 Attention–Mamba 模型的缓存不是统一的 token 序列,而是具有不同更新语义、恢复边界和容量约束的复合状态。第四,Kimi K3 等新模型的推测解码正在把 suffix automaton、DFlash 草案和线性注意力状态恢复放到同一条 serving 路径中,框架适配难度明显高于传统 dense Transformer。

重点进展

Practical Online KV Cache Compaction:Agent 压缩的核心变量是未来查询何时可见

论文 Practical Online KV Cache Compaction for LLM Agents: An Empirical Study 于 2026 年 8 月 2 日公开,研究对象不是一次性静态 prompt,而是持续产生 reasoning、tool call 和环境反馈的 Agent trajectory。作者比较了 token eviction 与 attention matching 两类在线压缩方法,并测试 boundary query、repeat-prefill query、延迟获得的 future-generation query 等代理信号。

论文最重要的结论是:立即压缩通常会显著损害任务效果,而推迟压缩、等待真实的后续查询出现,可以恢复相当一部分性能差距。在代理查询不完美时,token eviction 往往比 attention matching 更稳健。作者报告,在所测试模型与 BrowseComp-Plus、WideSearch 工作负载上,token eviction 能在减少约 80% KV Cache 的同时保留大部分准确率,并在部分配置中提高吞吐。

这里需要谨慎解释。论文证明的是特定 Agent benchmark、模型和压缩实现下的经验结果,并不意味着所有 Agent 都应统一延迟压缩。它真正建立的新问题是:在线 KV 管理必须显式建模信息可见时间。压缩决策不再只有“保留哪些 token”,还包括“在什么时刻压缩”“使用哪一阶段生成的 query 作为代理”“等待更可信信号的收益是否超过额外缓存驻留成本”。这比单纯比较重要性分数更接近真实 Agent serving 的系统边界。

NVIDIA Dynamo:让 KV 内存布局跨引擎故障继续存在

NVIDIA Dynamo PR #12648 为 GPU Memory Service 增加 KV 复用基础。现有 commit() 会同时冻结布局和内容,并撤销 writer;这不适合仍需持续写入的在线 KV pool。该 PR 引入 commit_layout()LAYOUT_COMMITTED 状态,只冻结分配形状,writer 仍可修改数据;当原推理引擎断开后,备用引擎可以接管相同物理页,而不是重新分配空池。

这个抽象的价值在于,它把“内存布局的生命周期”从“推理进程生命周期”中分离。PR 的单节点 B200 验证显示,主引擎被 SIGKILL 后,备用引擎能够接管全部 28 个 allocation,接管后的输出与重新 prefill 的结果一致。不过作者明确说明,本 PR 只保留字节和布局,尚未恢复 prefix-cache 索引,因此接管后仍报告 cache miss;真正把这些字节变成可命中的 KV Cache 需要后续工作。PR 默认关闭,并且作者指出现有数字来自较早提交,尚未在最新 head 上重新测量。

这一进展说明,面向生产的 KV Cache 复用开始从“远端存一份块”进入“状态、所有权、租约和恢复协议”的阶段。缓存内容能否保留只是第一步,系统还必须解决索引一致性、模型与并行配置匹配、旧请求数据隔离,以及 standby 接管时的原子边界。

vLLM:Mamba CPU Offload 的命中边界必须与状态语义对齐

vLLM PR #51100 修复 mamba_cache_mode="all" 下 CPU OffloadingConnector 的精确 chunk 边界错误。此前只有 align 模式会约束命中窗口;在 all 模式中,如果命中恰好落在 offload chunk 边界,系统可能恢复一个已经消费了边界 token 的 Mamba point state,然后再次从错误位置继续生成,最终造成输出静默变化。

修复方法是把 all 模式也纳入边界对齐规则,并在精确边界处重新计算最后一个 token,而不是直接恢复已包含该 token 的状态。作者在 H100、Nemotron-Nano-9B-v2 和 2816-token 边界上验证,修复后冷启动与 CPU refetch 得到相同的 32 个 token。

这项修复的重要性不在代码量,而在语义:Attention KV 通常可以用“已缓存 token 数”描述恢复位置,但 Mamba/SSM state 表示的是前缀经过递归更新后的聚合状态。相同的长度值不必然对应相同的重放边界。混合模型的 offload、prefix reuse 和故障恢复接口若继续只暴露统一 token count,容易产生无法通过容量测试发现的静默错误。

SGLang:统一内存下,Mamba handoff 需要额外瞬时容量

SGLang PR #33773 处理 hybrid Mamba 模型在 unified memory 与 radix-cache handoff 时的分配崩溃。未完成请求被写入 radix cache 时,系统需要先分配一个替代 Mamba slot,再转移当前追踪状态;原 admission 逻辑没有为这一瞬时峰值预留空间,并且分配失败时只尝试驱逐 Mamba cache,没有继续从共享的 full-KV cache 回收容量。

PR 将真实 Mamba slot 使用量与 handoff 峰值纳入 admission accounting,并在短缺时先回收 Mamba,再从 full-KV cache 释放共享容量。作者增加了 CPU-only 回归测试:新增的 5 个测试在 upstream main 上失败,在 PR 上通过;相关两个测试文件共 30 项通过。当前 PR 仍处于代码评审和 CI 流程中,尚不能视为正式发布能力。

该问题说明,统一内存池并不会自动消除异构状态管理。即便底层字节来自同一池,不同状态在 checkpoint、donation、handoff 和 eviction 时仍有不同的瞬时空间需求。调度器需要核算的不只是稳态占用,还包括状态迁移过程中的峰值工作集。

TensorRT-LLM:Kimi K3 serving 开始整合 SA、DFlash 与线性状态重启

TensorRT-LLM PR #17327 在 Kimi K3 模型适配之上增加 reasoning parser、tool parser、chat template,以及推测解码路径。推测部分包括 suffix automaton、DFlash draft-model scaffold、接受率统计、KDA replay-cache seeding 和 graph-safe latent-cache append 修复。

当前成熟度需要明确:suffix automaton 路径和相关单元测试已经进入该 PR,但训练完成的 K3 DFlash draft checkpoint 仍在进行中,disaggregated-serving 测试也被留到后续 PR。因此它更像一组正在形成的框架接口,而不是完整发布的 K3 加速方案。

这项工作值得跟踪,因为它展示了新模型适配的复杂度:推测解码不仅要生成候选 token,还必须正确恢复线性注意力或递归状态,并保证 graph restart 后的缓存连续性。未来“支持某模型的 speculative decoding”可能不再是增加一种 verifier,而是为模型特有状态建立一套重放、提交和回滚协议。

深度分析

今天几项材料可以归纳为同一个系统趋势:推理缓存正在从被动的张量存储,转变为带有时间、所有权和提交语义的运行时状态。

在线 Agent 压缩强调“未来查询何时可见”;Dynamo 的布局持久化强调“谁拥有这组物理页,以及进程死亡后谁可以接管”;Mamba offload 修复强调“某个状态究竟包含到哪个 token”;SGLang 的 handoff 修复强调“状态转移过程中需要多少瞬时容量”;Kimi K3 推测解码则强调“草案失败、图重启或服务分离后,递归模型状态如何继续”。这些问题无法仅用 block table、cache hit rate 或显存占用率完整描述。

对主流框架而言,一个可能的演进方向是把缓存接口拆成三层:数据层描述字节与物理位置,状态层描述逻辑前缀、版本和恢复边界,协议层描述写入、提交、接管、回滚与失效。这里是基于今天公开材料的系统推断,不是上述项目已经共同采用的设计。

前沿概念和技术

Query availability-aware compaction

“查询可见性感知压缩”可以用来概括在线 Agent KV 压缩中的新变量:系统在某一时刻能够访问哪些未来相关信号。boundary query 成本低但预测弱,repeat-prefill 会增加计算,真实 future-generation query 最可信但需要延迟决策。压缩策略因此需要在缓存驻留、额外计算和决策准确度之间权衡。

Recoverable KV state

可恢复 KV 状态不仅意味着把 tensor 写入外部介质。完整恢复至少需要物理数据、逻辑索引、模型与并行配置身份、写入完成边界和所有权转移规则。Dynamo 当前 PR 解决的是物理布局存活基础,尚未解决索引命中;这一差异非常关键。

Composite model state

Hybrid Attention–Mamba 模型表明,“KV Cache”正在成为不够精确的总称。Attention pages、Mamba recurrent state、卷积状态、草案状态和索引缓存具有不同的更新与恢复规则。框架需要面向 composite state 做容量、传输与一致性管理,而不能假设所有状态都能按 token block 等价处理。

对大模型推理与存储优化的启发

第一,缓存优化评估需要加入决策时机。只报告固定预算下的最终准确率不足以解释 Agent 场景,应同时报告压缩发生在 turn boundary、tool result 返回前后还是后续 query 已生成之后。

第二,系统正确性测试应覆盖边界状态,而不只是随机长度。精确 chunk 边界、请求未完成时的 radix handoff、引擎崩溃后的页接管,以及 TP rank 之间的草案状态差异,都是最容易产生静默错误或死锁的位置。

第三,多级缓存与故障恢复需要把索引视为一级状态。只有数据没有索引,缓存仍然无法命中;只有索引没有完整提交协议,则可能命中过时或不匹配的状态。

第四,混合模型需要显式的状态类型系统。容量计算、offload connector、PD transfer 和 speculative restart 都应知道自己处理的是 Attention KV、递归状态还是共享索引,而不是只接收一组无类型页号。

今夜白的观察

今天最值得重视的不是又出现了一种 KV 压缩分数,而是多个方向同时把注意力转向“缓存决策发生时,系统究竟知道什么,以及状态已经提交到哪里”。Agent 在线压缩把未来信息的不确定性暴露出来;Dynamo 把进程故障后的所有权问题暴露出来;vLLM 和 SGLang 则把 hybrid state 的边界与峰值容量问题暴露出来。

这意味着下一阶段高价值的推理系统工作,可能不再只比较更高的 hit rate 或更低的显存,而会更加重视状态协议:什么时候可以复用、什么时候必须重放、什么时候能够永久提交、状态失败后如何恢复,以及不同状态类型之间是否共享同一套生命周期。今天的工程 PR 仍然分散,但它们已经指向同一个尚未被统一命名的系统层。

参考资料

论文

官方仓库与 Pull Request

本文对 PR 状态的描述以检索时官方仓库页面为准;未合并 PR 中的性能数字均属于作者提交的实验结果,不能视为稳定版本承诺。