执行摘要
- 一句话:新增 NPU SGLang 夜间 CI 测试
- 推荐动作:该 PR 主要涉及 CI 配置和测试脚本,核心逻辑在 verll 框架内未变化。建议 nightly CI 维护者关注 review 中提出的两个高优先级问题并考虑后续修复。对于其他开发者,可以了解 nightly 测试的编写模式,但不必精读。
功能与动机
为了保障 Megatron + SGLang 在 Ascend NPU 上的功能稳定性,需要在 nightly CI 中增加自动化测试覆盖。此前 NPU 上只有 vLLM 相关的 nightly 测试,缺少 SGLang 的 nightly 验证。
实现拆解
-
新增测试脚本(tests/special_npu/nightly_ci_ascend/run_grpo_qwen3_30b_megatron_sglang_npu.sh):这是一个 244 行的 bash 脚本,用于配置和运行 GRPO 训练。它包含了环境变量设置、模型和路径配置、并行度参数、训练超参等,最后调用 verl 训练命令。脚本开头还包含对 SGLang 临时修复(注释掉某些行,transpose 权重)以规避上游问题。
-
更新 CI 工作流(.github/workflows/nightly_ascend.yml):在已有的 nightly 工作流中新增一个 job nightlyCI_grpo-qwen3-30b-megatron-sglang_ascend。该 job 在 linux-aarch64-a3-16 runner 上运行,使用特定容器镜像(verl-sglang-8.5.0-a3-...),设置环境变量,执行 checkout、准备权重,最后运行测试脚本。超时设为 180 分钟。
关键文件:
tests/special_npu/nightly_ci_ascend/run_grpo_qwen3_30b_megatron_sglang_npu.sh(模块 测试脚本;类别 test;类型 test-coverage): 核心测试脚本,定义了 GRPO 训练的完整配置和执行流程
.github/workflows/nightly_ascend.yml(模块 CI 配置;类别 infra;类型 infrastructure): CI 工作流定义,新增 job 来触发测试脚本
关键符号:未识别
关键源码片段
tests/special_npu/nightly_ci_ascend/run_grpo_qwen3_30b_megatron_sglang_npu.sh
核心测试脚本,定义了 GRPO 训练的完整配置和执行流程
#!/bin/bash
set -x
# 并行度配置
train_tp=4
train_ep=4
train_etp=4
train_pp=1
train_cp=1
gen_tp=4
gen_dp=1
gen_ep=1
# 数据配置数组
DATA_CONFIG=(
data.train_files="${TRAIN_FILE}"
data.val_files="${TEST_FILE}"
data.prompt_key=prompt
data.train_batch_size=${train_prompt_bsz}
data.max_prompt_length=${max_prompt_length}
data.max_response_length=${max_response_length}
data.filter_overlong_prompts=False
data.truncation='left'
)
# 模型配置数组
MODEL_CONFIG=(
actor_rollout_ref.model.path="${MODEL_PATH}"
actor_rollout_ref.model.use_remove_padding=True
)
# 算法配置数组
ALGORITHM_CONFIG=(
algorithm.adv_estimator=${adv_estimator}
algorithm.use_kl_in_reward=${use_kl_in_reward}
algorithm.kl_ctrl.kl_coef=${kl_coef}
)
# 最终将配置数组传递给训练命令
评论区精华
Review 中 gemini-code-assist[bot] 指出了两个高优先级问题:
- 脚本使用
set -x 而非 set -xeuo pipefail,可能导致训练命令通过管道 tee 后退出码被吞没,CI 误报成功。
-
配置项 actor_rollout_ref.actor.profiler.tool_config.npu.contents="['npu','cpu']" 中的方括号未加引号,可能被 bash glob 展开,导致参数错误。
最终 reviewer wucong25 批准了 PR,上述问题未在合并前修复,可能存在风险。
-
使用 set -xeuo pipefail 确保 CI 正确检测失败 (correctness): 未在 PR 中直接修正,但 reviewer 仍批准合并。
- 方括号未加引号可能导致 glob 扩展 (correctness): 未修正即合并。
风险与影响
关联脉络
- PR #6374 [megatron] feat: ascend bump into megatron 016: 该 PR 升级了 Megatron 以支持 Ascend,为本 PR 的 nightly 测试提供了基础版本依赖。
- PR #6435 [docker] chore: upgrade sglang to 0.5.12: 该 PR 升级了 SGLang 版本,并且本夜测使用 SGLang,版本兼容依赖该升级。
参与讨论