
过去 24 小时,LMCache、vLLM、SGLang 和 Dynamo 分别修复 KV 回收、读写监控、页索引传输与 prompt 路径结构,帮助工程团队定位 memory serving 的真实瓶颈。
| 项目 | 窗口内改动 | 对线上系统的直接含义 |
|---|---|---|
| LMCache | 实例释放时回收 CUDA IPC 导入的 KV memory,新增专门测试 | 多进程 KV 传输后的显存回收不再只依赖引用计数和 empty_cache() |
| vLLM | 把 CPU KV offload 占用拆成读、写两个 gauge | 可以区分「缓存快满」和「读写流水线正在锁块」两种压力 |
| SGLang | 在 device 上计算 KV token 到 page 的索引,再做 D2H 传输 | disaggregated prefill/decode 少一次先搬回 CPU 再计算的路径 |
| Dynamo | 用压缩路径 arena 重写 KV router 的 prompt block tracker | prompt 复用索引从逐节点链表变成压缩边结构,释放和一致性检查一起重做 |
#4015 修复了一个容易被压测遗漏的生命周期问题:通过 CUDA IPC 导入的 KV memory,在实例释放后可能仍然被映射着。提交把释放流程改成批量处理,先关闭并注销所有 entry,清空引用,再调用 torch_dev.empty_cache() 和可用的 torch_dev.ipc_collect()。其中 ipc_collect() 的位置很关键,必须等最后一个 tensor 引用消失后才有机会解除 CUDA IPC segment 的映射。1unregister、stale-instance reaper 和 close() 的测试:未知实例不触发回收,批量 reaper 只做一次 allocator reclaim,没有 ipc_collect 的设备后端也能继续工作。对使用多进程 KV transfer 的团队,应该重点观察实例反复加入、退出后的显存曲线,而不是只看单请求吞吐。这个 commit 没有给出回收前后的量化 benchmark,收益仍需在实际设备和进程拓扑中验证。#47666 在 CPU KV offload 中新增两个指标:vllm:kv_offload_cpu_cache_write_usage_perc 和 vllm:kv_offload_cpu_cache_read_usage_perc,原来的总占用率仍然保留。实现通过 _num_write_pending_blocks 跟踪尚未完成的 store,读占用则由总占用减去写占用得到;失败的 store 也会释放对应计数。2#31173 针对 disaggregated prefill/decode 的 KV transfer 路径,把 token 到 page 的索引计算从「先 .cpu().numpy(),再计算」改成直接接收 device tensor,在 device 上完成切片、stride 和整除,最后再统一转成 NumPy。C128 state payload 仍显式转为 np.int32,以满足 ZMQ 反序列化约定。3decode.py、prefill.py 和 mem_cache/common.py,共 53 行变更。当前提交信息没有提供端到端延迟或带宽数字,因此更稳妥的判断是:它消除了一个明确的路径级开销,实际收益取决于 page 数量、传输批次和设备同步行为。#11644 不是调一个阈值,而是重写了 KV router 里记录 prompt 路径的方式。新实现引入 CompressedPathArena 和压缩路径节点,用压缩边替代每个 hash 一个独立节点;prompt 路径与 output hashes 分开维护,路径发生 split 时保留 suffix 节点句柄,避免请求持有的 tail handle 失效。释放、fraction 统计和一致性校验也同步改写。6block_tracker.rs 新增 446 行、删除 553 行,另增 233 行 compressed_path_arena.rs。新增校验覆盖 prompt hash 去重、terminal ownership、output ownership 和 active block 统计。这个变化直接对应高复用 prompt 的索引开销,但 commit 没有给出压缩比例或 router benchmark,不能把「压缩路径」写成已证实的吞吐提升。复现时应同时测长公共前缀、频繁分支释放和 prompt/output 混合请求,否则只测稳定单分支会看不到数据结构重写的价值。github.com
github.com
github.com
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.