执行摘要
- 一句话:清理 sglang 补丁,为升级做准备
- 推荐动作:建议关注补丁精简策略,尤其是删除的 deepscaler 回退和 transformers 版本检查变更是否会影响其他模型。测试脚本中
--colocate 的使用方式值得理解,可能成为后续训练的标配参数。
功能与动机
PR body 指出 'Prepare for future sglang upgrade.' 因此主要动机是清理当前补丁中不再需要的旧修改,精简补丁体积,降低未来升级 sglang 时的冲突风险。
实现拆解
-
清理并精简 sglang 补丁:大幅删除 docker/patch/latest/sglang.patch 中的旧内容(-1536 行),仅保留与新版本 sglang 兼容的修改,例如新增 DeepseekV32ForCausalLM 架构识别、KVArgs 增加 aux_buffer_names 字段、修复 disaggregation 模式下的路由逻辑等。此举将补丁从 1536 行精简到 71 行,显著降低维护成本。
-
同步更新测试脚本:修改 tests/test_qwen2.5_0.5B_ppo_critic_only_short.py 和 tests/test_qwen3_4B_ppo_train_critic_only.py,将 critic 配置文件改为多行字符串便于维护,并在训练参数中增加 --colocate 标志,确保与新补丁中相关特性兼容。
-
修复 GB10 补丁工具:为 docker/patch/gb10/patch_sgl_kernel.py 添加缺失的 import sys,避免运行时报错。
-
更新 Docker 版本号:docker/version.txt 从 nightly-dev-20260329a 升级到 nightly-dev-20260425a,标识当前构建的版本。
关键代码段(来自 CommonKVBootstrapServer 中获取 prefill parallel info 的修改):
关键文件:
docker/patch/latest/sglang.patch(模块 部署补丁;类别 infra;类型 core-logic;符号 _get_image_grid_dim, get_tensor_model_parallel_rank, cal_padded_tokens, cp_split_and_rebuild_data): 核心变更文件,补丁内容从 1536 行精简至 71 行,删除了大量旧修改,仅保留与新版本兼容的关键补丁。
tests/test_qwen2.5_0.5B_ppo_critic_only_short.py(模块 PPO测试;类别 test;类型 test-coverage): 更新 critic 配置写法并加入 --colocate 参数,适配新补丁行为。
tests/test_qwen3_4B_ppo_train_critic_only.py(模块 PPO测试;类别 test;类型 test-coverage): 更新 critic 配置写法并加入 --colocate 参数,适配新补丁行为。
docker/patch/gb10/patch_sgl_kernel.py(模块 GB10补丁;类别 infra;类型 infrastructure): 修复 GB10 补丁脚本缺少 import sys 的问题。
docker/version.txt(模块 版本配置;类别 docs;类型 documentation): 更新 Docker 版本号以匹配新构建。
关键符号:_get_image_grid_dim, get_tensor_model_parallel_rank, cal_padded_tokens, cp_split_and_rebuild_data, cp_split_and_rebuild_position, set_metadata, forward, forward_npu
评论区精华
该 PR 未触发公开 review 讨论,由作者 Zhuzilin 自行合并。
风险与影响
- 风险:核心风险在于
docker/patch/latest/sglang.patch 删除了 1536 行旧补丁,若某些删除的修改对当前 sglang 版本仍是必要的,可能导致推理或训练异常。另外测试脚本新增的 --colocate 参数改变了模型放置行为,可能影响多 GPU 场景下的性能或稳定性。Docker 版本号更新也可能导致镜像不一致。但由于作者熟悉该模块且改动均经过 CI 验证(标签 run-ci-megatron),风险可控。
- 影响:对用户:当前用户通常不直接使用内部补丁,影响很小。对系统:Docker 构建时补丁更简洁,预计升级 sglang 时冲突减少。对团队:降低了补丁维护负担,但需要验证删除的补丁是否彻底不需要。测试脚本的变更确保 CI 覆盖新补丁路径。
- 风险标记:补丁大量删除, 测试参数新增, 版本号更新
关联脉络
- PR #1835 Add support for NVIDIA DGX Spark (GB10 / sm_121a, arm64): 修改了同一文件 docker/patch/gb10/patch_sgl_kernel.py,并更新了 docker/version.txt。
参与讨论