缓存命中却仍要重算?UCSD提出HiState,让智能体服务的p99首词元延迟最高快5.73倍

机智流 2026-11-10 20:12

缓存命中却仍要重算?UCSD提出HiState,让智能体服务的p99首词元延迟最高快5.73倍图1

写代码的智能体有个改不掉的习惯:跑着跑着回头改一句需求,或者把一段过长的工具输出截断压缩。这一改,模型之前算过的上下文有一半对不上了,前面攒下的缓存大半作废。

最近,加州大学圣迭戈分校团队公开 HiState,针对的正是这个具体场景——在混合式大语言模型的推理服务里,让“被改写过”的前缀依然能被复用。

作者在真实编码智能体轨迹上重放测试,报告相对 vLLM-Marconi 的 p99 首词元延迟(TTFT)最高加速 5.73 倍,相对 SGLang-HiCache 最高 5.44 倍。

缓存命中却仍要重算?UCSD提出HiState,让智能体服务的p99首词元延迟最高快5.73倍图2
论文图1:全注意力模型、混合模型与前缀缓存复用示意

论文:HiState: Hierarchical Prefix Cache Management for Hybrid LLM Serving in Agentic Workloads

作者:Zaifeng Pan、Lucas Wang、Xinwei Qiang、Yanbo Zhou、Chang Chen、Zhengding Hu、Yue Guan、Yufei Ding

单位:加州大学圣迭戈分校(University of California, San Diego)

论文链接:https://arxiv.org/abs/2610.41508

背景:混合模型的前缀缓存,为什么“命中了还得重算”

现在的混合式大语言模型把两类层叠在一起:

  • 全注意力层照常为每个历史 token 保存键值(KV)缓存
  • 循环层——线性注意力或状态空间模型——则把历史上下文压缩成一个固定大小的状态,原地更新、不随长度增长。

对纯全注意力模型来说,前缀缓存已经相当成熟:SGLang 之类的系统用基数树把 KV 条目按 token 组织起来,新请求匹配到缓存前缀后,只对剩余的 token 做预填充。KV 条目是按 token 存的,所以命中可以停在任意位置。

混合模型则多了一个约束:循环层的状态概括的是整个前缀,它无法被截断回退成更短前缀的状态。于是复用一次前缀需要两样东西:匹配位置之前的全部 KV 条目,以及该位置或其之前的一个状态检查点(checkpoint)。若系统只保存了较晚位置的检查点,哪怕 KV 缓存一条不缺,也必须从那个检查点重算中间的 token;若没有更早的检查点,整段前缀都要重算。

智能体负载恰好频繁制造这种“内部命中”。论文给出两类典型操作。

一是上下文截断:智能体框架为控制上下文长度,把过长的历史消息压成“保留头尾 + 省略标记”,Codex 在压缩预算不足时就是这样处理用户消息。

二是回退改写:用户或框架把执行退回到更早一轮,改掉当时的输入再提交,比如保留源码、只改末尾某条需求。两种操作都把复用边界推进到某条消息内部,而现有系统(包括 Marconi)只在观察到的分支点和最后一次解码位置保存检查点,覆盖不到这些位置。

第二类问题是延迟复用遇上 LRU 淘汰。智能体常常在几十轮之后才回到早期的某个位置分支,而按最近最少使用(LRU)淘汰时,那份历史检查点很可能早已被后续请求挤掉。另一种情形是某个会话正在等待工具结果,其最新检查点虽然“在自己的会话里是最新的”,在全局 LRU 看来却很旧,会被其他活跃会话的新检查点挤掉——续接时同样要重算。简单地把所有历史检查点时间戳一起刷新,可以缓解前者,却会加剧跨会话的容量竞争,反复淘汰与重算。

创新点:一次命中只读一个检查点

HiState 的出发点是一个关于访问模式的不对称:一次前缀复用要访问全部匹配的 KV 条目,但只需要一个循环检查点。检查点的大小与上下文长度无关,也不随保留了多少个检查点而增长。

论文用“访问量 / 存储量”这一比值刻画这件事。KV 侧的比值恒为 100%,检查点侧则是 I/L(I 为检查点间隔,L 为上下文长度)。在 32K token 的上下文上,间隔取 1024 时该比值约 3.1%,取 4096 时约 12.5%。保留更多检查点等于增加可用的“恢复位置”,却不增加每次恢复要搬运的数据量。

缓存命中却仍要重算?UCSD提出HiState,让智能体服务的p99首词元延迟最高快5.73倍图3
论文图5:缓存访问与恢复代价对比

恢复代价的不对称同样明显。在单张 H100 上按 BF16 KV、FP32 循环矩阵、PCIe 5.0 x16 的 64 GB/s 内存带宽和 5 GB/s 的 SSD 带宽估算:加载一个检查点从 CPU 内存约需 0.8 ms,从 SSD 约需 10.9 ms,只多出约 10.1 ms;而把 32K token 的 KV 前缀从内存挪到 SSD,加载代价会从 16.8 ms 涨到 231.5 ms,128K token 时更从 67.1 ms 涨到 926.1 ms。

结论因此清晰:把快存储留给 KV,把历史检查点挪到 SSD。这是全文最核心的一句设计判断。

方法:非对称分层、自适应间隔与统一淘汰

缓存命中却仍要重算?UCSD提出HiState,让智能体服务的p99首词元延迟最高快5.73倍图4
论文图4:HiState 系统总览

非对称分层

GPU 显存放活跃会话的 KV 与当前状态,CPU 内存放可复用的 KV 前缀,SSD 放历史检查点,冷 KV 前缀在快存耗尽时也可下沉到 SSD。一次命中需要恢复的是 KV 序列加上一个检查点。

自适应间隔控制

每新增一段上下文,系统按长度和资源压力选择一个检查点间隔 I,在“内部命中时的预期重算”与“检查点占用的存储和写入开销”之间取平衡:目标是最小化存储代价与重算代价之和。

其连续解显示,间隔 I 随上下文长度 L 的平方根、以及 KV 与检查点在 SSD 上的驻留时间之比 TKV/Tstate 增长——上下文越长、SSD 上的检查点越“待不长”,间隔就该越大、检查点越稀疏。驻留时间由指数滑动平均在线估计。需要注意,每段的末尾状态总是会被保存,以支持最常见的“追加下一轮”复用。

统一淘汰

借鉴 GreedyDual-Size 的思路,系统按“最近访问时间 + 重算代价 / 可回收存储”给 KV 条目与检查点统一打分,得分最低者先被淘汰。淘汰单元有两个:中间检查点可以单独淘汰;最后一段 KV 与终端检查点捆绑淘汰,因为在该边界恢复时两者都需要。

命中时会刷新匹配前缀上所有检查点的时间戳,把会话的近期活跃度传递给历史检查点;但打分中的重算代价项让价值低的中间检查点仍能被稀疏化。

论文用一个例子说明这一取舍:只能释放一个检查点槽位时,LRU 会删掉会话 B 的历史检查点 S1,导致 B 之后从 S1 分叉时只能重算长前缀;“刷新全部”策略则会删掉会话 C 的终端检查点 S6,让 C 续接失败。HiState 选择淘汰 B 的中间检查点 S2——它可以从邻近的 S1 低成本重建,于是 S1 和 S6 都被保住。

实验:真实智能体轨迹上的尾延迟

实现基于 vLLM,评测模型为 Qwen3.5-9B,硬件是单张 80 GB H100 加 20 个 Intel Xeon 8468 vCPU;GPU 缓存池为 2,560 个 576 token 的块,约 45 GiB,另有 96 GiB pinned CPU 内存与 150 GiB 磁盘。

对比对象有四个:

  • vLLM-Marconi(vLLM v0.27.1 的 align 模式 + Marconi 的回合边界检查点策略)
  • 作者自己扩展的 vLLM-CPU* 与 vLLM-Disk* (星号表示这是作者的扩展实现,沿用 vLLM 既有卸载框架、写透缓存与 LRU 淘汰)
  • 以及 SGLang-HiCache(SGLang v0.5.22,默认把 GPU 缓存容量对半分给 KV 与状态)。

工作负载是两个公开的真实编码智能体轨迹集:SemiAnalysis 的 Weka(3,784 个请求、125 个会话)与 TraceLab 的 Codex 子集(4,791 个请求、68 个会话)。系统最多维持 24 个活跃会话,每条工作负载重放约 3 小时。指标为 TTFT(从请求到达算到首个生成 token,含排队、缓存恢复与重算)的 p95/p99,以及 token 级缓存命中率。

缓存命中却仍要重算?UCSD提出HiState,让智能体服务的p99首词元延迟最高快5.73倍图5
论文图3:LRU 淘汰导致的检查点失效

结果上,HiState 在两个工作负载上都取得了最低的 p95 与 p99 TTFT,相对 vLLM-Marconi 分别最高加速 7.40 倍与 5.73 倍,相对 SGLang-HiCache 的 p99 最高加速 5.44 倍。

值得注意的是,p50 TTFT 与 vLLM-Disk* 大致相当,在 Weka 上还有小幅回退——尾部收益没有以中位延迟的大幅恶化为代价。论文还指出,SGLang-HiCache 虽然同样用了磁盘,其 p95/p99 TTFT 反而高于 vLLM-CPU*:静态划分把容量预留给无法缓解 KV 压力的状态,KV 条目反而在复用前被淘汰,这正是“两类缓存共享容量”这一动机的来源。

在复用敏感的请求子集上,HiState 把平均 TTFT 从 2.66 秒降到 1.29 秒(Weka)、从 1.77 秒降到 0.96 秒(TraceLab),并恢复了“无限缓存”参考下 87.0% 与 84.9% 的可复用 token。也有少数请求因淘汰策略而失去复用——这是回收冷会话尾部 KV 段所付出的代价,但绝对延迟的损失远小于别处避免掉的秒级未命中。

消融实验在 TraceLab 的 46 个复用敏感请求上进行:把磁盘淘汰换成 vLLM-Disk* 的文件级 LRU,平均缓存命中率下降最多、平均 TTFT 上升 37%;把检查点准入换成 vLLM 的 align 策略或固定 32 块间隔,平均 TTFT 上升约 9%–10%。两个机制互补——准入决定“能从哪里恢复”,淘汰决定“这些机会能否跨过会话空隙留存下来”。

微基准进一步隔离了上下文改写的影响:变异率取 0%、2%、5%、10%,24 个并发会话重放 90 分钟,每会话 16 轮,每轮 8K 新输入 token 与 256 输出 token,轮间隔 3 分钟,每次变异在前一轮提示的内部 256-token 边界处截断。结果是变异请求的平均 TTFT 降低 18%–21%,命中率提升 7.6–7.7 个百分点,整体 p99 TTFT 在所有设置下都有改善,最高变异率下降低 7.2%。

总结

HiState 传递出的判断对混合模型时代的缓存管理有着直接参考价值:缓存的存储层次不该按“总字节数”分配,而该按“每次恢复要读多少数据”来分配——KV 与循环检查点在这件事上的访问代价结构完全不同。


> 本文由 AI 生成,机智流编辑部校对


关于科技区角:国内科技展会垂直内容策划服务商,提供从论坛内容全案策划、会展市场化IP打造到精准专业观众一站式邀约服务,以产业内容吸引高质量B端人群,打通展会从议题设计、演讲嘉宾邀约、宣传预热、精准邀观到供需对接全链路。
声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。
more
早报 | 余承东疑似辟谣不再管汽车业务传闻;胖东来回应卡蓓诺洗发水产地造假;段永平回应是否还持有腾讯股票;英伟达发生大劫案
英伟达,盯上特氟龙?
刚刚!英伟达要求云客户:卖给中国公司的算力不能超过一半
英伟达又出大瓜!黄仁勋被曝婚外情,网友:这还是我认识的老黄?
炸裂:英伟达用一条口头红线,把中企挡在先进GPU门外
突发!英伟达给中企划下51%红线!
黄仁勋,没有继任者,英伟达最大风险
英伟达团队下场!国产视频模型开源,硅谷公司上门谈授权
英伟达逆势大跌,一夜蒸发1.29万亿元/苹果国行AI备案新增iPad和Mac/千问办公2.0发布
Apple智能国行上线,苹果大涨超6%重返美股市值第一;英伟达显卡订单排长队,中国客户预计拿到1%;字节限制员工使用个人AI|极客早知道
Copyright © 2025-成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号