Prhub

sgl-project/sglang · 标签视图

标签列表

聚合结果

npu 相关 PR

2026-09-16

#39732 [NPU] fix npu docker workspace directory

原始 PR · 作者 xiedeyantu · 合并时间 2026-09-16 16:51

基础设施 重要性 2.52 洞察度 2.00

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 跟踪。

缺陷修复 重要性 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`"的显式约束或断言,避免多组件粒度不一致时出现隐性回退。

性能优化 重要性 6.57 洞察度 6.00

Ascend 采样改主机侧判定,消除每 token 设备同步

建议精读,但只需要 10 分钟左右:改动量极小,却是理解 Ascend 采样热路径与「设备标量判定 → 隐式同步」这一常见性能陷阱的好样本。重点关注三处设计决策:一是 `npu_top_k_top_p_eligible` 的计算位置选在 `from_schedule_batch`(而非每次采样),依赖「top_k 在采样期间不变」这一前提;二是 `merge_batch` 用 AND、默认值取 `False` 的保守取向,使漏传与合并只带来性能退化而不带来正确性风险;三是新增测试用 `torch.all` 抛 `AssertionError` 做护栏的写法,可作为同类优化的测试模板。需要在真实 NPU 上验证收益的团队,建议补充带同步计数的 profiler 证据,而不是依赖吞吐数字。

缺陷修复 重要性 5.48 洞察度 3.00

修复 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` 的残留引用。

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

2026-09-15
基础设施 重要性 3.65 洞察度 3.00

NPU nightly 持久化目录按镜像隔离并修复 glm5_2 过期用例

该 PR 值得快速浏览,无需精读。值得关注的设计决策是:在保持既有路径段数量契约的前提下,用后缀方式把镜像身份注入持久化目录前缀,避免了连锁改动;同时用临时裁剪 job 的方式做定向验证后再回退,是 CI 配置变更的一种稳妥实践。对后续维护者来说,需要注意的是 `sed` 提取 tag 的假设条件,以及在新增 NPU 镜像时保持该命名约定。

基础设施 重要性 4.08 洞察度 5.00

修复 NPU CI 过滤泄漏并新增每日定时全量跑

值得精读程度中等:改动只有 14 行,但里面有两个容易踩坑的 CI 语义点,建议 CI/发布相关同学花几分钟读完。 重点关注两处设计决策:一是用「正向通配 + 显式负向排除」替代 extglob 的取反写法,这是修掉作业归属泄漏的关键,也说明在 paths-filter 里写复杂 extglob 是高风险行为;二是把 schedule 与 workflow_call 统一到 run_all_tests=true 这条兜底路径上,与 pr-test.yml 的既有约定保持一致,属于可复用的模式。 建议的后续动作:(a)在 filters 块加一行注释,明确负向规则必须排在正向规则之后,防止回归;(b)给 multimodal_gen 的 diffusion 规则补上 !(*.md|*.ipynb) 的排除写法,避免文档改动触发 NPU 测试;(c)评估每日全量的机时占用,必要时改成 nightly 或加失败通知;(d)第一次定时触发后回看一次 Actions 结果,确认 schedule 分支确实走了全量而不是空跑。

缺陷修复 重要性 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`。