跳到主内容

推理与部署

同一段长提示再次到来,服务可以省去重算,却未必能马上开始生成。缓存还在不在?请求该发给哪台机器?如果 KV 只在 SSD 上,首个 token 还得等它读回 GPU。

KVTether:闲置的上下文先别删

一次工具调用尚未返回,旧消息暂时用不到;任务一旦删除这段消息,对应的 KV 就可以回收。普通的最近最少使用策略看不出这两种状态的区别。

KVTether 让 Agent 显式报告消息状态。只有这些信号及时、准确,服务才知道该给谁留出缓存。

阅读日报:从 KV 生命周期到科研工件,验收覆盖完整任务,推理与缓存|复用、压缩和确定性各有自己的契约KVTether 原论文(新窗口)

KVCompass:把请求发给持有缓存的节点

各节点上报缓存的新增和淘汰。入口先查谁持有匹配前缀,再把排队、网络和剩余计算的成本算进路由选择。

跨区转发的是请求,不是整块 KV。索引过时或持有者队列太长时,命中最多的节点未必最快。

阅读日报:KV 发现、原生 TPU 与科研调度,KVCompass|查找缓存持有者,再转发请求KVCompass 原论文(新窗口)

FlatCake:把同一会话要读的 KV 放在一起

FlatCake 在创建 KV 时就选择内存或 SSD,把同一会话的缓存按层连续放置;读回时合并小请求,直接送入 GPU。

看首个 token 的等待时间时,要同时看缓存命中率和实际读盘开销。论文的对比使用 B200 和高复用负载。

阅读日报:平级 KV、按需镜像与随数据保存的来历,FlatCake|DRAM 和 SSD 平级放置 KVFlatCake 原论文(新窗口)

KVStream:先读完的存储层接着领下一块

同一缓存块在本地 NVMe 和并行文件系统各有一份。两个读取端共享待办队列,谁先读完,谁就领取下一个未读块。

这里用额外写入换取并行读回;如果前缀很少复用,或内存本来就装得下,复制成本可能反而拖慢推理。

阅读日报:多层 KV 读取、轨迹准入与长程机器人任务,KVStream|让存储层按完成速度共同读取前缀KVStream 原论文(新窗口)

延伸阅读