2026-09-16
KV Offload 热度改为每请求结算一次,修正淘汰顺序
建议精读,尤其是负责 KV Offload、CPU 缓存策略或调度器的工程师:
- 值得学习的三个设计决策:一是「用逻辑 rank 而非物理位置表达 recency」,从而让 pin 状态与淘汰顺序解耦;二是「每请求一次访问」的语义边界(insertion / reuse / 内部级联 pin 三分类);三是通过默认实现保持 `touch` API 与外部策略兼容的渐进式改法。
- 重点关注 `policies/lru.py` 的 `_is_current()` / `_update_recency()` / `evict()` 三者构成的懒失效与原子回滚协议,这是最容易在后续修改中被破坏的部分。
- 若维护自定义 `cache_policy_module_path` 策略,需验证新的 `on_request_finished()` / `on_store_miss()` 默认路径是否符合预期;若新增 offload key 的产出路径,务必同时调用 `set_offload_key_position()`,否则顺序会静默降级。
SWA offload 覆盖补齐 MTP 保留 token
值得精读,尤其是做 KV offload、hybrid KV cache 管理或 MTP 推测解码的工程师。建议重点关注三处设计决策:(1) `get_sliding_window_size_in_chunks` 中 `max(base, cdiv(window - 1 + extra_retained_tokens, chunk))` 的写法——为什么要用 `-1` 与外层 `max`,它决定了「保留 1 个 token 不额外多要 chunk」;对应测试 `test_swa_alignment_skip` 断言 2 与 3 的分界;(2) `_reachable_store_block_mask` 用 `dataclasses.replace` 造临时 coverage spec,把「放宽 store 掩码」与「不改变模型注意力窗口」两件事解耦,这是本 PR 最值得借鉴的模式;(3) 测试从硬编码 `boundary == 3904` 改为按 `first_retained_block` 推导 `needs_left`,把失败场景从特例变成契约。阅读时应同时打开 Issue #56701 的失败表格与 `tests/v1/kv_connector/unit/offloading_connector/test_scheduler.py` 的参数化矩阵。若你负责性能,请补测 SWA store 体积上升在真实长上下文负载下对 CPU 缓存命中率的影响。
KV Offload 新增按请求的 max_load_tokens 加载上限
值得精读,尤其面向 KV offload / 调度方向的同学。建议关注三个设计决策:一是 `__post_init__` 的解析约定(`type(raw) is int` 排除 bool、非法值 warning + 忽略而非报错);二是 cap 在 `_lookup_complete_chunks` 中的两个插入点(先按 GPU 前缀偏移取 min,再按 group chunk 粒度下取整),理解为什么 `0` 会自然退化为“直接返回 0”;三是测试设计——在 hybrid KV cache helper 上同时覆盖 sync/async scheduling,并用 `expected_stored` 断言 store 路径不受影响。若要投产,建议先补齐多级部署验证,并考虑在服务入口对字符串数字等易错输入给出更显式的告警或校验。
修复 P/D 下多模块 MTP 未验证 draft 污染 KV cache
值得精读,尤其适合关注 P/D 架构、KV connector 与投机解码交叉区域的工程师。核心设计决策是“把跨模块的 lookahead 推导收敛为单一属性 + 单一 backoff 函数”,并以 max 组合语义兼容 Mamba 与 MTP 两类 drafter,这种消除重复推导、防止契约漂移的思路可直接借鉴。基准数据完整(含逐 position 接受率),可作为同类性能修复 PR 的范本。
NIXL push 连接器支持 PP+HMA 预填充按层名路由
值得精读。重点看 `base_worker.py` 中 `_set_region_layers`、`_requires_layer_name_routing`、`_align_remote_regions_by_layer` 三个方法以及 `_compute_desc_ids` 的 layer-name 分支:"按层名身份而非 region 索引路由" + "缺失即响亮失败"的设计对任何跨进程资源映射问题都有借鉴价值;完成语义与 #56104 的兼容处理也展示了如何在推进新特性时避免与并行重构冲突。若你维护 kv-connector 或分布式 KV 传输,建议同时跟进 #50499。
修复 HiSparse 跨层 KV 覆盖,逐层计算绑定偏移
值得精读。修复本身只有 15 行,但揭示了共享分配(packed allocation)场景下 byte offset 计算的经典陷阱;PR 的调试与验证方法论(恢复单个函数到旧 commit 做负对照、curl 最小复现、全量 GSM8K + nightly 精度门槛)对处理类似缓存绑定类 bug 有直接借鉴意义。重点关注 `bind_hisparse_kv_caches` 的 `tensor_configs` 推导重构,以及 nightly 作业的 `source_file_dependencies` 设计。
HiSparse 连接器自动推断 attention 配置,免重复传参
不值得精读,可快速浏览。值得关注的设计决策有两个:一是把 `HiSparseConnector` 视为 HiSparse 功能的单一事实来源(single source of truth),用 `has_connector` 的既有语义消除无信息量的空配置;二是显式配置优先级不被默认值覆盖的约定,这是配置推断类改动应遵循的通用模式。测试对 standalone / multi-connector / pd-decode 三种连接器形态的参数化覆盖也值得参考。