缓存命中,token还在重算:FlashState把vLLM的agent吞吐拉开3倍
混合模型的prefix cache有个坑:KV还在,恢复点没了,prefill就得重来。FlashState在请求结束处存recurrent checkpoint,按省下的prefill成本淘汰,GLM-5.3-Flash上48并发把p90 TTFT压到2.36秒。
FlashState 开源了。一个推理系统,管 hybrid LLM 的 prefix cache,目标很明确:agentic workloads。作者来自 UIUC、UT Austin、Together AI,代码、论文、项目页都放了出来。
先看它解决什么问题。coding agent 每一轮都会把不断变长的上下文重新发一遍。普通 attention 模型,缓存 KV 就能复用前面算过的内容。hybrid 模型混了 attention 层和 linear attention 或 state-space 层,恢复一个前缀需要两样东西:每个 token 的 attention KV,以及在精确恢复位置上的 recurrent checkpoint。两样凑齐才叫 hybrid state。
vLLM 只在 KV-cache block 边界存 recurrent checkpoint,KV block 又按最近使用来淘汰。上一轮结束点常常落在 block 中间,下一轮只能从上一个边界恢复,尾部 token 重算。负载高时,整段上下文也可能被淘汰。结果就是缓存看起来命中了,恢复点却不在,prefill 白做。

FlashState 的做法分三层:
- Arbitrary State Checkpointing,ASC。recurrent checkpoint 不再绑死 KV block 边界,可以存在任意 token 位置。请求结束时捕获完整 hybrid state;如果目标位置在长 prefill chunk 内部,kernel 把 checkpoint 作为 side output 导出,chunk 继续算。
- cost-aware hybrid state management。checkpoint 和它依赖的 KV 当成一个单位,按每块内存能省下多少 prefill 时间定价,准入和淘汰共用一套优先级。不需要按 workload 调参。
- 可选 Mooncake store。每个完成请求的 hybrid state 写到 host memory 的 Mooncake store,master 按同一优先级整状态淘汰。

数字挺直接。GitHub 图注里,48 个 coding agent 在同一批 GPU 上回放,30 分钟后 FlashState 完成 20 个 agent,61.7K output tokens/min,cache hit rate 87%;vLLM 完成 7 个,22.0K,30%;SGLang 完成 8 个,15.4K,6%。
GLM-5.3-Flash、NVFP4、1M context、每 engine 两张 B200、48 并发下,prefill 吞吐 4.66M tokens/min/GPU,对比 vLLM 的 1.48M,约 3.14 倍。median uncached tokens 从 24.7K 降到 1.03K,p90 TTFT 从 20.4 秒降到 2.36 秒,降 88%。decode 吞吐是 3.02 倍。

Kimi-K3.1-Pro 在 GB300 上也有结果:一个 engine 两张 GB300 tray、8 张 GPU、decode context parallelism 8、DSpark speculative decoding、640 GiB Mooncake store。output throughput per GPU 峰值 8,683 tokens/min,对比 vLLM 6,377,高 36%;p90 TTFT 2.0 秒,对比 9.1 秒。
Mooncake 那组,512 GiB host memory 做 cache,FlashState 把 input throughput 峰值抬高 26%,同并发下 p90 TTFT 最多降 73%。作者在回复里说,这套方法和 disk offload 正交。磁盘或 S3 能扩大 cache 容量,但精确恢复点还得靠 ASC,长时间等工具调用或子 agent 的场景还得靠 dependency-aware eviction。

推文口径更简洁:GLM 5.3 Flash 上,FlashState 把 vLLM 的吞吐和 provider profit 都拉开两倍以上,延迟降低 3.7 倍,用户成本降低 2.5 倍。项目页给的 demo 数字是 output tokens/min 从 22.0K 到 61.7K,P50 端到端延迟从 46.1 秒到 12.4 秒,P50 TTFT 从 3.30 秒到 0.20 秒。
需要克制的地方也有。3.14 倍是 prefill throughput,针对一个模型、一个负载、一套硬件,不等于端到端普遍加速,也不等于生成 token 变少。论文里 in-chunk export 只在 GLM 的 KDA kernel 上做了实验,Qwen 和 Nemotron 用的是请求结束捕获。FlashState 还是研究代码,选项会变。
这类工作不改变模型能力,但会改变 agent 产品的单位经济。模型榜单每天在换,后台的缓存恢复点、淘汰策略、host offload,最后都落在账单和首 token 延迟上。做 agent infra 的人值得复现一遍;只看模型榜的人,至少可以记住一件事:缓存命中,不代表恢复点还在。
发布时间: 2026-11-10 08:46