Prhub

sgl-project/sglang · 标签视图

标签列表

聚合结果

memory-pool 相关 PR

2026-09-16
缺陷修复 重要性 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 与本改动无关。

缺陷修复 重要性 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 侧补回归测试。

功能 重要性 9.36 洞察度 7.00

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

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

2026-09-15
缺陷修复 重要性 5.35 洞察度 5.00

NPU 禁用 pinned memory,修复 DP 挂死

值得精读(约 5 分钟)。NPU 平台维护者必读:这是一个典型的「平台新类覆盖基类安全默认值导致死锁」案例,7 行改动换来稳定性。关注三个设计决策:(1)为什么选择无条件 `return False` 而不是保留 device 分支或加环境变量开关——答案是把默认值收敛到与 `SRTPlatform` 一致,避免参数组合分叉;(2)如何用两处独立复现(#36472 作者观察 + Ascend 910C TestDPRetract 压测)为「未验证的异步语义」背书;(3)重开路径的条件是否应该固化成代码注释或跟踪 issue,避免 `remove comments` 之后只剩一行无解释的 `return False`。

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

修复 DCP 下 MLA 重删 CPU 备份/恢复的 KV 索引越界崩溃

值得精读,尤其对维护 DCP / PD 分离 / HiCache / KV 内存池的同学。重点关注三处设计决策:① 把索引换算从 host pool 方法提升为 `layers/dcp/layout.py` 纯函数的动机与收益;② `_write_loc_dcp_span` + `write_loc_is_dcp_resolved` 这对契约如何避免统一池上的双重换算;③ 为什么可以安全删除「整加宽页」断言——理解 `seqlen - 1` 的 ragged 前缀与「起始页对齐」这个更弱前提的差别。若只关心结论,可记住两点:崩溃触发条件是 DCP>1 时用加宽 id 直接索引 rank 局部 KV buffer;修复方式是 `indices[dcp_rank::dcp_size] // dcp_size`。合并后建议跟进两件事:为 `maybe_dcp_kernel_indices` 补一个起始对齐的显式校验或更强的测试守护,以及排查作者提到的「恢复请求重复 token」独立缺陷。

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

修复 HiCache 启动时 ImportError 崩溃

值得精读,但属于中等篇幅即可读完的 PR(3 文件、+83/-5)。重点看三处:(1) `_resolve_device_accessible_ptr_fn` 的双重存在性检查(import + `torch.ops`)与 `lru_cache(maxsize=1)` 的收敛设计,这是跨仓库发布顺序错配时的通用处置模式;(2) HIP 上 fail-fast、CUDA 上 fail-soft 的平台分工,背后的依据是 UVA 下 host/device 地址别名关系;(3) 测试如何用 `alloc_with_host_register` + monkeypatch resolver 直接验证回退等价性,以及为什么在缺 op 时选择 skip 而不是 fail。阅读时请额外确认夹带的 `unified_radix_cache.py` 选择器改动(`req_id` → `request.rid`)在本仓库当前签名下确实必要,这行改动没有配套测试。若你是部署/CI 维护者,可作为「AOT op 与调用方必须分两个 PR 落地」的案例收藏。

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

修复 HiCache registered 内存 CPU/GPU 指针域错配的 GPU 崩溃

值得精读。核心看点是“registered host 内存双地址域”的认知与统一抽象:Python 侧 `make_kernel_ptr_table` 收敛了指针表构建,JIT 侧 `DeviceGuard` 用 RAII 保证多设备正确性,测试覆盖 CUDA Graph 捕获/重放下的指针处理。对涉及 host 内存与自定义内核绑定的开发者有直接参考价值;建议后续将“CPU VA 与 device alias 不得混用”的约束写入内存池模块文档。

2026-09-14
缺陷修复 重要性 7.42 洞察度 6.00

合并相邻 KV 行释放区间,修 DCP 下页内接缝双重释放崩溃

值得精读,尤其推荐给维护 KV cache / radix cache / DCP 的工程师:这是一个“小而准”的生产崩溃修复,11 行源码解决整机级故障,且修复点的选择有讲究。阅读时重点看三处设计决策:一是为什么在 `free_kv_row` 这一层合并,而不是让 allocator 放宽断言(后者会掩盖真实 double free);二是 `coalesce_ranges` 只合并严格相邻区间的边界处理,以及它隐含的升序前置条件是否需要显式断言;三是测试如何把 512/576 的线上几何按 64 倍缩放到 page 8 / 位置 9,并用第二个用例锁住“有空隙的共享页仍然报错”这条安全线。建议顺手确认其他 `free_kv_row_segments` 调用点是否都已覆盖,并评估为“保留前缀结束在页内”的接缝情形补一个用例。