Prhub

sgl-project/sglang · 标签视图

标签列表

聚合结果

kv-cache 相关 PR

2026-09-16
缺陷修复 重要性 6.37 洞察度 6.00

修复 unified cache C128 对齐与释放区间重叠

值得精读,但重点不在代码量而在两处契约:一是 `base.py` 中 `floor_cache_len` 的"min 之后再做对齐"语义,它决定了组件体系的长度协商分两个阶段,读者应理解为什么不能放在 `prepare_for_caching_req` 里;二是 `cache_finished_req` 中把两个相接区间合并为 `(free_from, len(kv_indices_full))` 的判据,这是典型的"边界共享一页"陷阱,建议对照 `free_kv_row` 的升序/不重叠约束一起读。 建议后续动作:为该修复补注册单测(覆盖 EAGLE 与非 EAGLE 下 `floor_cache_len` 的边界值、以及 `tail_free_start == len(kv_indices)` 时命中合并分支 / 不命中分支),并为 `floor_cache_len` 增加"结果不得低于 `cache_protected_len`"的显式约束或断言,避免多组件粒度不一致时出现隐性回退。

缺陷修复 重要性 5.90 洞察度 6.00

HiCache v2 调用补齐 prefix 元数据

值得花 10 分钟精读,尤其是三处细节:一是 `None` 与 `[]` 的三态语义如何影响累积起点;二是「非原地拼接」与 `HiCacheStorageExtraInfo(prefix_keys=...)` 共享 list 引用之间的隐式耦合,读懂这一点才能理解为什么 `_page_transfer_sidecar` 还能拿到原始前缀;三是 `_page_transfer` 先读 KV、`_page_transfer_sidecar` 后读 sidecar 的顺序依赖。合入后的建议:补一个单元测试覆盖 `prefix_keys` 为 `None` / `[]` / 非空三种输入下 v2 后端实际收到的 `extra_info`,并在累积处加一句注释固化「禁止改回原地 `+=`」的约束;同时确认失败的那条 AMD ROCm 10 CI 与本改动无关。

功能 重要性 8.10 洞察度 6.00

为 DeepSeek-V4.1 补齐 Rust 侧图像预处理、KV 池名与 PD bootstrap 布局字段

值得精读,尤其适合关注多模态预处理实现和 PD 拆分启动期校验的工程师。 推荐关注的设计决策: - `dsv41/mod.rs` 中"先做全量几何校验再计算"的防御式写法,以及用 256 项 bf16 LUT 替代逐像素浮点运算的性能取舍;`par::for_chunks_mut` 按 patch 分块并行是天然无数据竞争的分工方式,值得作为同类 preprocessing 的模板。 - `bootstrap.rs` 把一致性校验放进 `rcu` 闭包并让闭包在 mismatch 时"原样返回",从而既不增加 `registered_count` 也不污染 `prefill_ranks`——这是一个值得学习的"校验失败不留副作用"写法,但要注意并发重跑闭包的语义细节。 - `PoolName` 的双向字符串映射分布在 `unified_tree_core.rs` 与 `python_bindings.rs` 两个文件,属于容易漏改的隐式契约,建议后续补充一个穷举 round trip 的 Rust 单测来锁死。 如果需要跟进,重点看后续 Python 侧 PR 是否与 `dsv41_spec_layout`、`deepseek_v4_c1/c2` 池名以及 `resize_patchify` 的签名严格对齐。

缺陷修复 重要性 7.50 洞察度 5.00

修复 NPU 混合线性 KV 在 PD + PP 下的传输出错

值得精读,尤其对从事 NPU/PD/PP 或 hybrid-linear 模型支持的同学。核心看点:`send_kvcache` 中按后端与布局切换“位置切分 vs layer-id 配对”的分发设计;`get_kv_layer_ids` 如何把稀疏层 id 与多 buffer 组对齐;`_send_mamba_state` 在传输前校验槽位大小的防御思路。合入前建议单独确认 kimi_k3.py 附带改动是否需要在 CUDA 侧补回归测试。

缺陷修复 重要性 7.24 洞察度 5.00

HiCache 指标按 rank 打标并拆分 shrunk 归因,修复多 rank 求和失真

值得精读。如果团队将 HiCache 作为生产级分层缓存使用,本 PR 的指标语义约定(per-shard vs logically replicated、attempt 级诊断 vs 最终 miss 计数)是解读后续 HiCache 面板和告警的前提。特别值得学习的设计决策:一是 rank 标签与 storage collector 键约定对齐,避免 L2/L3 两层指标无法关联;二是在重构导致某些 reason 失去代码路径后,保留 label 预置以维持 dashboard 稳定、同时明确文档口径;三是把"窗口字节 delta / duration sum"定义为活跃带宽,区分纯 rate 含空闲时间的口径。

基础设施 重要性 5.67 洞察度 7.00

为 sgl-router 监控看板新增 KV 分层存储覆盖率三面板

这个 PR 最值得精读的是 PR body 而非 diff:其中关于"跨 namespace 相除会得到一个漂亮的错误数字(0.54 vs 1.00)"、"检查查询的值而非仅仅检查返回行"、"max 会掩盖 quietest replica 失联"的监控设计论证具有普遍借鉴价值,适合负责可观测性面板与告警设计的工程师参考。建议与 #39109、#39110 按 stack 顺序一起阅读,了解指标从产生、测试到面板化呈现的完整链路。

功能 重要性 9.36 洞察度 7.00

统一混合 SWA 内存池改用共享字节预算并重构准入记账

值得精读。重点学习三处设计决策:一是 `create_prefill_budget` 工厂把准入记账下沉到分配器,消除调度器对池类型的 if/else 分支;二是 `can_reserve/reclaim_plan` 联合判定配合穷举式派生属性测试,是防御共享字节记账回归的有效范式;三是兄弟类重构解决了 Mamba 三池错误继承两池策略的抽象问题。遗留跟进项(rationale 注释、PrefillDelayer 水线、动态口径文档化)应在后续 PR 中闭环。

功能 重要性 9.00 洞察度 7.00

路由器 /metrics 暴露 KV 分层存储事件与树占用指标

值得精读。该 PR 是“为观测而设计”的样板:固定基数标签折叠、零值即结论、编译期断言钉死三表一致性、穷举 match 替代判别式转型、pull-on-scrape 与结构性零的取舍,每一处都有明确故障场景支撑。建议与 #39108(1/4)、#39110(3/4)连读以获得完整上下文;若团队后续要扩展新的存储 tier,本 PR 中 `Tiers::SLOTS` 与 `MEDIUM_LABELS` 的编译期约束是必须复用的模式。