Prhub

#7541 [ci] chore: use Ascend recipe baselines for NPU nightly CI

原始 PR 作者 lxb007981 合并时间 2026-08-24 19:46 文件变更 1 提交数 1 评论 0 代码增减 +22 / -7

执行摘要

NPU 夜间 CI 改用 Ascend recipe 基线文件

PR 描述指出,原先的 check_npu.py 和性能基线文件依赖 CI 运行器上预置的文件,导致基线更新滞后或配置不一致。改为从 verl-ascend-recipe 仓库获取,可统一基线来源,减少本地文件管理成本,并确保基线匹配当前 recipe 版本。

该 PR 为运维性变更,若关注 CI 基础设施的配置管理,可精读工作流中环境变量和 curl 下载的使用方式。值得注意的设计决策是将基线来源外置,便于统一维护,但需配套监控外部仓库的可用性。未来若扩展至更多拓扑或 A3 基线,可参考此模式。

讨论亮点

该 PR 无 review 评论和讨论线程,仅有维护者 wucong25 的 APPROVED 审核。由于缺乏讨论,无法获取决策背后的权衡细节。

实现拆解

变更集中在 GitHub Actions 工作流文件 .github/workflows/nightly_ascend.yml,具体拆解如下:

  1. 新增环境变量配置:在 workflow 顶层新增 env 块,定义 ASCEND_RECIPE_BASELINE_URL,指向 https://raw.githubusercontent.com/verl-project/verl-ascend-recipe/main/baseline,作为后续下载的基础路径。

  2. 替换本地文件引用:在四个夜间 CI 任务(ppo_qwen3-8b-fsdp-vllm、grpo_qwen3_vl_8b_Instruct_fsdp2-vllm、dapo-moonlight-16b-megatron-vllm、gspo-qwen3-30b-megatron-vllm)的检查步骤中,将原有的 python check_npu.py --base <local_path> 改为先用 curl --fail --location --retry 3 下载 check_npu.py 和对应的基线文件到当前目录,再以下载的 baseline.txt 作为基准执行检查。

  3. 统一基线文件命名:四个任务均使用 baseline.txt 作为下载后临时文件名,避免路径冲突,并简化命令。

  4. 配套调整:未新增测试,但因涉及 CI 配置变更,需在 NPU 环境实际运行夜间 CI 验证网络可达性与下载正确性。

文件 模块 状态 重要度
.github/workflows/nightly_ascend.yml CI 配置 modified 4.15

关键源码片段

.github/workflows/nightly_ascend.yml infrastructure

唯一变更文件,定义了基线下载逻辑,影响所有 NPU 夜间 CI 的检查环节。

# 在 workflow 顶层新增 env,定义基线下载基础 URL
env:
  ASCEND_RECIPE_BASELINE_URL: "https://raw.githubusercontent.com/verl-project/verl-ascend-recipe/main/baseline"jobs:
  # 以 ppo_qwen3-8b-fsdp-vllm 任务为例
  nightlyCI_ppo-qwen3-8b-fsdp-vllm_ascend:
    steps:
      - name: Running ... checking script
        run: |
          cd /root/.cache/nightly_log/
          # 下载检查脚本和基线文件,--fail 确保失败即退出,--retry 3 增强鲁棒性
          curl --fail --location --retry 3 --output check_npu.py "${ASCEND_RECIPE_BASELINE_URL}/check_npu.py"
          curl --fail --location --retry 3 --output baseline.txt "${ASCEND_RECIPE_BASELINE_URL}/a2/nightly_log/run_ppo_qwen3-8b_fsdp_npu/baseline_ppo_qwen3-8b_fsdp_npu.txt"
          # 用下载的基线文件执行性能检查
          python check_npu.py --log run_ppo_qwen3-8b_fsdp_npu/run_ppo_qwen3-8b_fsdp_npu.log --base baseline.txt

评论区精华

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

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

风险与影响

主要风险在于对外部仓库 verl-ascend-recipe 的网络依赖:

  • 若该仓库不可达或路径变更,下载失败将导致 CI 检查失败;curl --fail --retry 3 可缓解瞬时故障,但无法应对持久性问题。
  • 基线文件若与本地运行日志路径不匹配(例如模型名、拓扑变化),可能导致误判性能达标或失败。
  • 当前仅下载 A2 基线(a2/nightly_log/...),未包含 A3 基线,若未来需要支持 A3 节点需补充。
  • 下载的 check_npu.py 可能随 recipe 更新而变化,存在版本兼容性风险。

影响范围限定于 NPU 夜间 CI 的检查和验收环节,不涉及训练核心逻辑。对用户无直接影响,但提升了 CI 维护的便利性,使其能自动跟随上游基线更新。团队需确保目标环境可访问 raw.githubusercontent.com,并关注 recipe 仓库的访问权限和稳定性。

外部网络依赖 基线路径耦合 缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论