# PR #7081 完整报告

- 仓库：`verl-project/verl`
- 标题：[ci] chore: fix nightly ci of npu
- 合并时间：2026-07-17 14:56
- 原文链接：http://prhub.com.cn/verl-project/verl/pull/7081

---

# 执行摘要

- 一句话：修复 Ascend 夜间 CI 配置与脚本问题
- 推荐动作：该 PR 为纯 CI/ 测试运维变更，逻辑简单，无需精读。但其中 review 指出的 typo 和语法错误值得注意，提醒在批量修改脚本时要仔细检查上下文。

# 功能与动机

根据 PR body，该 PR 解决两个问题：
1) save_freq 设置导致训练异常退出；
2) Docker 环境中移除了 megatron-bridge，因此需要在 CI 中手动克隆并设置环境变量。

# 实现拆解

1. **CI 配置修改**：在 `.github/workflows/nightly_ascend.yml` 的 two_megatron_grpo 和 gspo 作业中，添加步骤克隆 Megatron-Bridge 仓库并 checkout 到指定 commit，并在运行测试前导出 `PYTHONPATH=/Megatron-Bridge/src:$PYTHONPATH`。
2. **测试脚本配置对齐**：在多个 Megatron 测试脚本（GRPO、GSPO、quick_start、DAPO）的 actor 和 ref 配置块中添加 `actor_rollout_ref.*.megatron.vanilla_mbridge=True`，以适配 Megatron-Bridge 新版默认行为。
3. **save_freq 修复**：将 FSDP2 视觉模型测试脚本 `run_qwen3_vl_8b_Instruct_fsdp2_npu.sh` 中 `SAVE_FREQ` 默认值从 20 改为 -1，避免因 save_freq 为正但训练步数不足导致的异常退出。

关键文件：
- `.github/workflows/nightly_ascend.yml`（模块 CI；类别 infra；类型 infrastructure）: 核心 CI 配置变更：添加克隆 Megatron-Bridge 步骤并设置 PYTHONPATH，替代原 Docker 内置依赖。
- `tests/special_npu/nightly_ci_ascend/run_grpo_qwen3_30b_megatron_sglang_npu.sh`（模块 测试脚本；类别 test；类型 test-coverage）: 在 ACTOR_CONFIG 和 REF_CONFIG 中添加 vanilla_mbridge=True，且 review 修正了 REF_CONFIG 中的 typo。
- `tests/special_npu/nightly_ci_ascend/run_gspo_qwen3_30b_megatron_npu.sh`（模块 测试脚本；类别 test；类型 test-coverage）: 在 ACTOR 和 REF 中添加 vanilla_mbridge=True，且 review 修复了 REF 数组末尾的多余反斜杠。
- `tests/special_npu/quick_start/run_qwen3_0_6b_megatron_vllm_ascend.sh`（模块 测试脚本；类别 test；类型 test-coverage）: 为对齐 Megatron-Bridge 新版，在 ACTOR 中显式添加 use_mbridge 和 vanilla_mbridge 配置。
- `tests/special_npu/run_qwen3_vl_8b_Instruct_fsdp2_npu.sh`（模块 测试脚本；类别 test；类型 test-coverage）: 将 SAVE_FREQ 默认值从 20 改为 -1，以防止因训练步数不足导致异常退出。
- `tests/special_npu/nightly_ci_ascend/run_dapo_moonlight-16b_megatron_npu.sh`（模块 测试脚本；类别 test；类型 test-coverage）: 为 DAPO 脚本的 actor 配置添加 vanilla_mbridge=True，保持一致性。

关键符号：未识别


# 评论区精华

gemini-code-assist[bot] 在 review 中指出了两个问题：
- 在 `run_grpo_qwen3_30b_megatron_sglang_npu.sh` 的 REF_CONFIG 数组中，错误地将 `vanilla_mbridge` 配置在了 `actor_rollout_ref.actor.megatron` 下，应改为 `actor_rollout_ref.ref.megatron`。
- 在 `run_gspo_qwen3_30b_megatron_npu.sh` 的 REF 数组末尾存在多余的尾部反斜杠，导致 bash 语法错误。这两个问题已在后续提交中修复。

- REF_CONFIG 中 vanilla_mbridge 配置的前缀错误 (correctness): 已修正为 actor_rollout_ref.ref.megatron.vanilla_mbridge=True。
- bash 数组中的多余尾部反斜杠 (correctness): 已移除尾部反斜杠。

# 风险与影响

- 风险：低风险。本次变更仅涉及 CI 配置和测试脚本参数调整，未修改核心代码。唯一潜在风险是手动克隆的 Megatron-Bridge commit 可能与 Docker 环境不兼容，但已通过指定固定 commit 降低风险。
- 影响：直接影响 Ascend NPU 上的夜间 CI 稳定性，确保 Megatron 相关测试能够正常加载 bridge 组件（无异常退出），并使视觉模型的检查点频率更合理。
- 风险标记：CI 变更

# 关联脉络

- PR #7039 [env] chore: add megatron-bridge in sglang docker env: PR#7039 在 Docker 中添加了 megatron-bridge，而本 PR 因为 Docker 中移除了该依赖，改为在 CI 中手动克隆。
- PR #7042 [ci] chore: remove vllm_ascend patch and fix ci: PR#7042 同样涉及 Ascend CI 修复，且移除了 Docker 中的 vllm Ascend 补丁，与本 PR 的 CI 配置变更属于同一维护方向。