Report
每日技术报告|2026-07-27:vLLM P2P KV 二级缓存、MLA 去重与 HiCache 容量修正
聚焦 vLLM 将节点 CPU KV 缓存扩展为通用 P2P 二级层、MLA 共享 CPU 区域去重,以及 SGLang 修正混合滑窗模型的 HiCache 内存核算。
重点进展
核心论文
本期没有收录新的核心论文。过去 24 小时窗口内未找到同时满足主题高度相关、原始来源完整、相较前几期具有明确新增价值且未被重复介绍的候选。今天的重点因此放在官方主仓库中已经合入、具有完整设计文档和测试支撑的工程进展。
今日概览
过去 24 小时内,大模型推理基础设施中最值得关注的变化集中在 KV Cache 从单实例本地状态向节点间可查询、可传输的共享状态演进。vLLM 在 2026 年 7 月 26 日合入一组相互关联的 KV Offload 改动:其一是新增通用 P2P 二级缓存层,使不同 vLLM 实例可以通过 NIXL/RDMA 查询并直接传输对方 CPU 缓存中的 KV block;其二是针对复制式 MLA KV 在共享 CPU 区域中进行去重;此外还修复了自动缓存数据类型命名空间、不同终止类型下 token 数统计以及滑窗注意力非对齐加载边界等正确性问题。
SGLang 同期修复了混合 Sliding-Window Attention 模型中 --hicache-size 可能导致约两倍主机内存分配的问题。该问题看似只是容量换算,但实际上揭示了分层 KV 系统中一个经常被忽略的工程约束:用户配置的是逻辑缓存容量,而运行时最终分配的是与模型层类型、每 token KV 大小、页大小和并行切分共同相关的物理内存。只要其中一层仍使用“所有层结构相同”的假设,容量控制就可能严重偏离用户预期。
**论文检索说明:**过去 24 小时内未发现与本报告主题高度相关、信息完整且足以支撑独立深度分析的新论文。为避免重复介绍此前已覆盖的论文,本期不强行补位,重点分析过去 24 小时内已合入主仓库的一手工程进展。
开源项目的重要新闻
1. vLLM:通用 P2P KV 二级层进入主线
vLLM 合入了 Generic P2P secondary tier: peer lookup and serving via ParentManager。该提交规模较大,共修改 11 个文件,并新增了 P2P manager、client/server session、协议定义、测试和使用文档。其目标不是简单增加一种传输后端,而是把其他 vLLM 实例的 CPU KV 缓存抽象成一个可组合的 secondary tier。
在该设计中,每个 vLLM 实例都是对称 peer。针对不同请求,一个实例可以作为 consumer,从远端 peer 的 CPU cache 拉取已有 KV;也可以作为 producer,保留并向其他实例提供本地缓存的 KV;同一实例甚至可以针对不同请求同时承担两种角色。角色由编排层通过 kv_transfer_params 指定,而不是在进程启动时永久固定为 prefiller 或 decoder。
P2P 模式与经典 Prefill/Decode 传输的关键区别在于“远端是否必然拥有完整 KV”。经典 P/D 模式中,decoder 知道指定 prefiller 刚刚计算了该请求的全部 KV,因此可直接进入 fetch。通用 P2P 模式则只假设远端可能缓存部分 block,consumer 需要先发送 block hash 列表执行 lookup;producer 在本地 CPU cache 中匹配后返回命中集合;consumer 只为命中 block 分配目标槽位并发起传输,未命中部分由推理引擎重计算。
实际数据传输通过 NIXL WRITE 完成。控制路径依次包含 lookup、resolve、fetch 和 transfer-done。提交文档还明确要求跨进程设置一致的 PYTHONHASHSEED,否则 block 内容哈希无法稳定匹配;启动和握手阶段会检查该值,不一致的 peer 会被拒绝。跨主机部署还必须显式配置可路由的 side-channel 地址,因为默认 localhost 只允许本机访问。
这项改动意味着 vLLM 的 KV Offload 开始超越“GPU 与本机 CPU/文件系统之间的层级缓存”。一旦 peer CPU cache 成为标准二级层,路由器便可以根据缓存位置选择目标实例,或者在实例确定后指定一个远端 KV source。计算节点之间因此不再只有请求转发关系,还形成了按 block 内容寻址的数据复用关系。
2. vLLM:复制式 MLA KV 在共享 CPU 区域中去重
同日合入的 Deduplicate replicated MLA KV in the shared CPU region 针对 MLA 模型的 CPU offload 内存布局进行优化。在部分张量并行配置中,MLA KV 可能在多个 rank 上保持复制,而共享 CPU region 如果仍按照每个 rank 分别预留和写入,就会保存多个内容相同的副本。
该提交的核心价值是区分“计算并行度”与“状态唯一性”。张量并行要求多个 worker 参与模型执行,并不意味着每份 KV 状态都具有独立内容。当 KV 在 rank 间复制时,CPU 共享区只需要保存一个逻辑副本,再由加载路径将其映射或分发到需要的 worker。对于长上下文和大批量 serving,重复副本会线性放大主机内存占用,也会增加写回带宽和缓存元数据数量。
这类去重优化与量化、压缩不同:它不改变数值表示,不丢弃 token,也不需要重计算,而是消除由并行实现产生的结构性冗余。因此,它通常具有更低的正确性风险和更直接的容量收益。系统在设计 KV 分层存储时,应首先识别 TP、DP、PP 或模型结构造成的重复状态,再考虑有损压缩或复杂驱逐算法。
3. vLLM:KV Offload 正确性与命名空间继续收紧
vLLM 在同一天还合入多项 KV Offload 修复。提交 Namespace auto cache dtype by effective dtype 修复自动缓存数据类型在持久化或共享缓存命名空间中的区分问题。auto 并不是实际存储格式;它最终会解析为某个 effective dtype。若缓存 key 只记录字符串 auto,不同模型配置或硬件路径可能错误复用数据类型不兼容的缓存。按最终有效 dtype 建立命名空间,可以避免格式相同名称下的静默错配。
此外,主线还出现了针对 5D KV cache 接收后布局处理、不同终止类型下 num_tokens_after_batch 统计、非对齐 Sliding-Window Attention 加载物理 block 边界,以及按 model runner 隔离 persistent cache 的修复。这些改动说明 KV Offload 已经进入从“功能可运行”向“覆盖复杂模型、混合注意力和持久化生命周期”的阶段。
当缓存跨越请求、进程甚至节点后,任何未进入 key 的隐式条件都可能造成错误复用。模型标识、实际 dtype、KV layout、注意力类型、层结构、block size、位置编码状态和并行切分方式,都可能成为缓存兼容性的一部分。跨层级缓存的 correctness contract 必须比单机 HBM allocator 更严格。
4. SGLang:修复混合滑窗模型 HiCache 近两倍内存分配
SGLang 合入 Fix –hicache-size allocating ~2x host memory on hybrid SWA。该问题发生在同时包含 full attention 与 Sliding-Window Attention 的混合模型中。用户通过 --hicache-size 指定期望的层级缓存容量,但旧换算路径在估计每 token 主机内存占用时,没有正确反映不同类型层的实际 KV 保存规模,最终可能分配接近用户设定值两倍的内存。
混合注意力模型中,不同层的有效历史窗口并不相同。Full attention 层需要保留完整历史,SWA 层只需保留窗口范围内的状态;如果容量估计统一套用全量层数或错误地重复计入组件,就会使逻辑 token 容量与物理字节数脱节。修复该问题不仅防止 OOM,也让 --hicache-size 更接近可预测、可运维的资源控制接口。
对生产部署而言,容量参数必须满足两个条件:第一,其语义应稳定,例如明确表示总字节数、逻辑 token 数还是占可用内存比例;第二,运行时应输出换算后的实际分配结果,包括各层类型、各设备和各缓存池的明细。否则用户只能通过进程 RSS 或 OOM 反推内部决策。
前沿的概念和技术
Peer CPU cache as a tier
传统层级缓存通常沿单节点设备层次展开,例如 GPU HBM、主机 DRAM 和本地磁盘。vLLM 的通用 P2P tier 把“其他推理实例的 CPU cache”加入层级,使缓存拓扑从线性结构变为图结构。一个 block 可能同时存在于本地 GPU、本地 CPU、远端 CPU 或持久化后端,调度器需要基于位置、带宽、拥塞和重计算成本选择来源。
Orchestrator-directed KV transfer
新 P2P 路径明确把“选择哪个 peer”留给编排层,KV tier 只负责 block lookup、哈希匹配和传输。这种分层有利于把缓存感知路由、负载均衡和数据移动解耦,但也要求编排器掌握更完整的缓存目录与传输状态。未来 router 的输入不会只有队列长度和 GPU 利用率,还可能包括 prefix/block 命中率、peer 距离和缓存温度。
Effective-format cache namespace
缓存兼容性不应依赖用户填写的抽象配置,而应依赖运行时解析后的实际格式。auto dtype、自动选择的 attention backend 或动态 block layout 都必须在生成缓存 key 前固化为 effective configuration。否则同名配置可能对应不同二进制布局。
Structural deduplication before compression
MLA 共享 CPU 区域去重体现了一条通用原则:在做量化、剪枝或驱逐前,先消除并行复制、跨层相同数据、共享前缀副本等结构冗余。结构去重通常保持无损,且不会引入模型质量评估负担,是更优先的容量优化手段。
对大模型推理和存储优化的启发
第一,KV Cache 的层级已经不再天然是 HBM—DRAM—磁盘的固定链条。节点间 CPU 缓存、远端内存池和共享存储可以并列成为候选来源,因此缓存管理器需要支持多源 lookup、部分命中和按成本选择,而不是只在单一父层查找。
第二,P2P KV 复用的核心难点并非 RDMA API,而是控制协议。系统必须定义 block identity、lookup 时机、传输事务 ID、部分命中语义、目标槽位分配、失败回退以及完成通知。数据面带宽足够高,并不代表端到端复用路径一定低延迟;一次额外 lookup 往返可能决定短前缀是否值得远程拉取。
第三,缓存 key 应被视为一份完整的兼容性契约。仅使用 token hash 或 prompt hash 不够,还要纳入模型权重版本、层与 head 布局、实际 dtype、位置编码处理、并行切分和 block 组织。任何遗漏都可能使“命中”变成比 miss 更危险的错误。
第四,容量优化应从消除重复副本开始。MLA KV 去重表明,模型结构与并行策略会产生可证明相同的数据。相比依赖注意力分数的有损驱逐,这类优化更容易验证,也更适合作为基础设施默认能力。
第五,用户可见的缓存容量参数必须与真实物理内存建立可解释映射。混合 full attention、SWA、MLA 或状态空间层时,简单按层数乘以统一 token 大小会失真。运行时应按组件计算,并提供 dry-run 或启动日志,展示最终分配的字节数和可容纳 token 数。
深度分析
vLLM 的通用 P2P tier 使 KV Cache 更接近分布式对象缓存,但它仍保留了推理系统特有的语义。普通对象缓存命中后只需返回字节;KV block 命中后还必须确认其与当前模型实例、注意力布局和执行位置兼容,并加载到可被后续 attention kernel 直接消费的物理槽位。未命中部分还可以重计算,因此系统需要在传输和计算之间做成本选择。
这种设计也改变了 cache-aware routing 的边界。过去常见方法是尽量把相同前缀请求路由到已经持有缓存的 worker;P2P tier 则允许请求留在负载更低的 worker,同时从另一个 peer 拉取缓存。前者减少数据移动但可能造成热点,后者改善计算负载均衡但增加网络开销。最优策略应比较排队延迟、远程传输时间、缓存命中长度和本地重计算成本,而不是单独最大化命中率。
同时,MLA 去重与 HiCache 容量修正说明,分布式缓存的扩展必须建立在准确的本地内存模型之上。如果单节点内部仍保存不必要的复制副本,或者容量换算存在近两倍误差,那么增加远端层只会放大资源不可控性。合理的演进顺序应是:先明确每个逻辑 KV 对象的唯一性和实际字节大小,再建立本地层级,最后扩展跨节点目录与传输。
今夜白的观察
今天最重要的信号是:主流推理框架正在把 KV Cache 从 attention kernel 的附属缓冲区,提升为具有独立协议、命名空间和拓扑的系统资源。vLLM 的 P2P secondary tier 已经包含 peer 角色、事务 ID、哈希查找、部分命中、NIXL 传输和失败重计算;这套结构与分布式缓存系统非常接近,只是对象语义由 LLM 执行状态决定。
值得继续观察的是编排层是否会形成统一的 KV directory。目前提交把 peer 选择交给 router/EPP,但没有在该改动中定义全局最优选择机制。随着 peer 数量增加,逐请求显式指定远端地址会面临目录陈旧、热点 peer、并发传输争用和多副本选择问题。后续系统很可能需要把缓存位置、队列状态和网络拓扑联合纳入路由。
另一个趋势是 correctness metadata 的持续膨胀。effective dtype、model runner、5D layout 和 SWA 物理 block 边界都需要被精确区分。KV Cache 越可共享,其 key 与元数据就越不能简化。高性能实现最终需要在“描述足够完整”和“lookup 元数据足够轻量”之间寻找平衡。
本期没有加入相关性不足的新论文,也没有延续前几日报告已经介绍过的 KV Offload 最终写回、混合状态传输或推测解码内容。今天的材料足以形成一条独立主线:先消除本地状态冗余并修正容量语义,再把 CPU KV 缓存扩展为可跨实例查询和传输的分布式层级。
参考资料
- vLLM, Generic P2P secondary tier: peer lookup and serving via ParentManager, 2026-07-26.
- vLLM, Deduplicate replicated MLA KV in the shared CPU region, 2026-07-26.
- vLLM, Namespace auto cache dtype by effective dtype, 2026-07-26.
- SGLang, Fix –hicache-size allocating ~2x host memory on hybrid SWA, 2026-07-26.
- vLLM commit history, Commits on July 26, 2026, accessed 2026-07-27.
- SGLang commit history, Commits on July 26, 2026, accessed 2026-07-27.