执行摘要
- 一句话:添加 Ascend 多节点 nightly CI
- 推荐动作:值得关注的是 RayJob 提交模式的设计,可复用类似场景。但脚本和配置细节较贴合内部 CI 环境,外部参考价值有限。
功能与动机
PR body 指出:"Add an Ascend A3 multinode nightly CI workflow for Qwen3-30B GSPO Megatron coverage. This PR replaces the older Ascend multinode E2E workflow/script with a nightly RayJob-based workflow"。目的是通过 nightly 调度持续验证 Ascend 多节点训练路径,提升 CI 覆盖稳定性。
实现拆解
- 新增 nightly 工作流:在
.github/workflows/nightly_ascend_multinode.yml 中定义按日调度(cron 0 17 * * *)的 RayJob 提交任务,包含代码打包、worker 环境准备(setup_worker)和脚本执行(run_cmd)。
- 新增多节点训练脚本:在
tests/special_npu/nightly_ci_ascend/run_gspo_qwen3_30b_megatron_npu_multinode.sh 中配置 Qwen3-30B MoE 模型的 GSPO 训练参数,包括数据路径、Megatron 并行策略(TP/PP/EP)、vLLM rollout 参数等。
- 删除旧工作流:移除
.github/workflows/e2e_ascend_multinode.yml,该工作流基于旧镜像和触发条件。
- 删除旧训练脚本:移除
tests/special_npu/run_qwen3_06b_ppo_multinode.sh,该脚本使用 FSDP 和 PPO,已不再维护。
配套变更:无核心代码修改,仅 CI 配置和测试脚本变更。
关键文件:
.github/workflows/nightly_ascend_multinode.yml(模块 CI工作流;类别 infra;类型 infrastructure;符号 setup_worker, run_cmd): 核心工作流,定义 nightly 调度、RayJob 提交和 worker 初始化逻辑
tests/special_npu/nightly_ci_ascend/run_gspo_qwen3_30b_megatron_npu_multinode.sh(模块 多节点测试;类别 test;类型 test-coverage): 新增的多节点训练脚本,配置 GSPO 算法和 Megatron 并行参数
.github/workflows/e2e_ascend_multinode.yml(模块 CI工作流;类别 infra;类型 deletion): 被替换的旧工作流,已不再需要
tests/special_npu/run_qwen3_06b_ppo_multinode.sh(模块 多节点测试;类别 test;类型 deletion): 被替换的旧多节点脚本,使用小模型和 PPO 算法
关键符号:setup_worker, run_cmd
评论区精华
gemini-code-assist[bot] 建议在新 shell 脚本中添加 set -xeuo pipefail 以确保管道错误被捕获。该建议未被采纳,PR 已由维护者直接合并,视为非阻塞意见。
- Shell 脚本健壮性建议 (correctness): 建议未被采纳,PR 由维护者直接合并,视为非阻塞意见。
风险与影响
- 风险:工作流依赖内部 RayJob 提交器(SUBMITTER_URL),若服务不可用则 nightly 失败。新脚本仅在 CI 环境中验证,未经本地测试。无代码逻辑变更,不影响训练正确性。
- 影响:影响范围限于 Ascend 多节点测试:旧工作流被移除,新的 nightly 工作流将每日运行一次。团队需要通过 nightly 报告监控执行状态。对用户无影响。
- 风险标记:依赖外部RayJob提交器, 未经本地测试
关联脉络
- PR #6711 [ci] chore: solve dapo error and add three baselines for npu nightly ci: 添加了单节点 Ascend nightly CI,本 PR 扩展至多节点覆盖。
- PR #6820 [env] chore: add verl release 0.8.0 docker for ascend: 为本 PR 所需的 Ascend A3 镜像提供基础 Docker 配置。
参与讨论