2026-09-16
NPU Dockerfile 默认工作目录改到仓库根目录
不建议为此 PR 投入深度精读——它就是一行 `WORKDIR` 修正加一行注释,读完 patch 即可理解全部语义;真正值得略作停留的是两个设计层面的信号:(1) 参照同文件里 `TARGETARCH` 的 fail-fast 校验,是否应为 workdir 增加一个轻量断言(例如构建期检查 clone 目录存在),避免 `WORKDIR` 静默创建空目录这一失败模式;(2) 其他 Dockerfile(`docker/Dockerfile`、各平台镜像)是否也应统一到 `/sgl-workspace/sglang`,否则不同镜像的 CWD 约定会继续分叉,给文档和 CI 脚本带来长期维护成本。另外建议关注 `Latest PR Test (Extra)` 的那次失败是否有后续 issue 跟踪。
修复 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`"的显式约束或断言,避免多组件粒度不一致时出现隐性回退。
Ascend 采样改主机侧判定,消除每 token 设备同步
建议精读,但只需要 10 分钟左右:改动量极小,却是理解 Ascend 采样热路径与「设备标量判定 → 隐式同步」这一常见性能陷阱的好样本。重点关注三处设计决策:一是 `npu_top_k_top_p_eligible` 的计算位置选在 `from_schedule_batch`(而非每次采样),依赖「top_k 在采样期间不变」这一前提;二是 `merge_batch` 用 AND、默认值取 `False` 的保守取向,使漏传与合并只带来性能退化而不带来正确性风险;三是新增测试用 `torch.all` 抛 `AssertionError` 做护栏的写法,可作为同类优化的测试模板。需要在真实 NPU 上验证收益的团队,建议补充带同步计数的 profiler 证据,而不是依赖吞吐数字。
修复 NPU 多 stage PP 启动崩溃,去掉失效属性引用
值得花几分钟精读,但不是因为改动的技术难度,而是因为它揭示了一个可复用的工程教训:删除公共属性(#38293)与新增对该属性的引用(#38249)在时间上交错,最终由 NPU 用户在启动阶段埋单。阅读时建议重点关注三点:① 作者在 PR body 中的根因回溯链路,理解「跨 PR 集成缺口」是如何形成的;② `all_gather_group` 从条件取值改为恒取 `attn_tp_group` 的语义变化,是否会影响下游 all-gather 分支;③ 该路径为何没有自动化测试,以及在 NPU CI 中加入 `pp-size > 1` 启动冒烟用例的可行性。若你是 NPU 相关代码的维护者,建议顺手排查其他平台分支(XPU/ROCm)是否存在同样指向 `require_attn_tp_allgather` 的残留引用。
修复 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 侧补回归测试。