Prhub

#1945 [docker] upgrade to sglang v0.5.12.post1

原始 PR 作者 zhuzilin 合并时间 2026-05-26 19:04 文件变更 8 提交数 12 评论 0 代码增减 +459 / -589

执行摘要

升级 sglang 至 v0.5.12.post1,更新 Docker 与 CI 配置。

升级 sglang 版本以获取新功能(如 DeepseekV32ForCausalLM 支持、disaggregation 改进等),同时保持与 slime 框架的兼容性。现有的 patch 基于旧版本开发,需要针对 v0.5.12.post1 进行适配,因此同步更新补丁。此外,修复了测试过程中发现的 checkpoint 保存/加载路径硬编码问题,并增强 GPU 锁脚本的健壮性。

建议关注 sglang patch 中关于 bootstrap 超时和内存占用释放的实现,这是提升分布式推理稳定性的关键改动。gpu_lock_exec 的重写模式可在其他类似工具中复用。

讨论亮点

本 PR 为单作者自主合入,无公开讨论记录。

实现拆解

  1. 版本升级与补丁同步:修改 docker/Dockerfiledocker/version.txt 将 sglang 版本指向 v0.5.12.post1。重新生成 docker/patch/latest/sglang.patchdocker/patch/latest/megatron.patch,主要变更包括新增 KVArgs.aux_buffer_names 字段以支持辅助缓冲区名称传递,为 DecodePreallocQueue 添加 release_memory_occupation/resume_memory_occupation 方法以支持内存占用释放与恢复,以及添加 bootstrap 超时机制(SGLANG_DISAGGREGATION_TRANSFER_TIMEOUT 环境变量控制)。
  2. Checkpoint 测试参数化:修改 tests/test_qwen3_4B_ckpt.py,将原先硬编码的 checkpoint 目录改为根据 --save-optimizer--load-optimizer 参数动态生成,新增 default_checkpoint_diroptimizer_args 函数。execute 函数新增 optimizercheckpoint_dir 参数,支持四种优化器放置组合(save cpu/load cpu 等)。
  3. GPU 锁执行器重写:重写 tests/ci/gpu_lock_exec.py,将原有的 os.execvp 调用替换为 subprocess.Popen 管理的子进程。新增信号处理器 terminate_child,在收到 SIGINT/SIGTERM/SIGHUP 时先尝试优雅终止子进程,超时后发送 SIGKILL,确保锁文件被 finally 块释放。新增 _normalize_returncode 正确转换被信号终止的返回码。同时移除了 FdLock.open 中对 os.set_inheritable 的调用。
  4. CI 工作流调整:在 .github/workflows/pr-test.yml 及模板 .github/workflows/pr-test.yml.j2 中,为 e2e-test-ckpte2e-test-train 工作流增加了针对四种优化器组合的测试条目,并移除了原有的单一 test_args 空测试。所有 docker run 指令添加 --pull=always 参数。
文件 模块 状态 重要度
docker/patch/latest/sglang.patch SGLang 补丁 modified 7.82
tests/test_qwen3_4B_ckpt.py 检查点测试 modified 7.12
tests/ci/gpu_lock_exec.py GPU 锁 modified 7.1
docker/patch/latest/megatron.patch Megatron 补丁 modified 6.18
.github/workflows/pr-test.yml CI 配置 modified 3.99
.github/workflows/pr-test.yml.j2 CI 模板 modified 3.57
docker/Dockerfile Docker 构建 modified 2.64
docker/version.txt 版本记录 modified 1.54

关键符号

_get_logits_head_gate _sync_fwd_experts_buffer_DtoH capture get_routed_experts SenderWrapper __init__ init_weights_send_group_for_remote_instance _unload_lora_adapter_locked prepare default_checkpoint_dir execute optimizer_args _os_execvp _run_command terminate_child _normalize_returncode

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. sglang 版本升级可能引入与现有模型(如 DeepseekV3、GlmMoe)的兼容性问题,需通过 CI 验证。
  2. patch 中新增的 bootstrap 超时机制依赖于环境变量,若未设置默认 600 秒,可能过长或过短,需要用户自行调优。
  3. gpu_lock_exec 从 execvp 改为 subprocess 后,进程组管理变化,若存在遗留的锁文件可能干扰。
  4. checkpoint 测试矩阵扩展增加了 CI 执行时间,但降低了遗漏风险。

对用户:Docker 镜像将基于新版 sglang,所有依赖 sglang 的 rollout 将受影响;但补丁向后兼容性良好。对系统:GPU 锁脚本更健壮,不再因子进程被杀死而泄漏锁。对团队:CI 覆盖更全面的 checkpoint 场景,便于早期发现优化器放置相关 bug。

底层版本升级 补丁兼容性 测试覆盖扩展 子进程管理模式变化

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论