执行摘要
- 一句话:修复DAPO错误并为NPU nightly CI新增三个基线
- 推荐动作:值得合并以提升NPU CI的自动化检测能力。可关注后续夜间CI日志确认基线文件路径正确性,以及检查合并后的测试是否覆盖了原独立步骤的所有用例。
功能与动机
在NPU nightly CI中,现有基线检查脚本不够通用,且DAPO相关的配置存在错误需要修复。本次变更旨在统一基线检查脚本,新增三个实验配置的自动基线比对,并清理冗余的单元测试步骤以加速CI。
实现拆解
- 重构main_ppo_v0.py:将原有@ray.remote装饰的TaskRunner类拆分为BaseTaskRunner(无装饰器,仅定义初始化逻辑)和TaskRunner(继承BaseTaskRunner且带@ray.remote),run方法在基类中置为pass,由子类实现。这解耦了远程执行与非远程逻辑,便于在非Ray环境中复用。
- 修改nightly_ascend.yml:为三个新增的NPU实验配置添加了检查脚本步骤,统一使用check_npu.py和基线文件,并将日志目录结构改为子目录方式。
- 简化npu_unit_tests.yml:将原本分散的activation offload和normalize peft param name测试合并到主pytest命令中,通过调整--ignore-glob参数排除这些测试的独立执行步骤。
- 增强vllm_ascend.yml:添加了对vLLM server abort功能的测试步骤,原本缺失该测试的执行。
关键文件:
verl/trainer/main_ppo_v0.py(模块 训练主流程;类别 source;类型 core-logic;符号 TaskRunner, BaseTaskRunner, run, init): 重构TaskRunner,提取BaseTaskRunner基类,分离远程执行逻辑,是变更的核心源码文件。
.github/workflows/nightly_ascend.yml(模块 CI工作流;类别 infra;类型 infrastructure): 添加三个NPU实验配置的基线检查步骤,统一日志路径和检查脚本,是CI自动化的主要变更文件。
.github/workflows/npu_unit_tests.yml(模块 CI工作流;类别 infra;类型 infrastructure): 简化单元测试步骤,将独立的 activation offload 和 normalize peft param name 测试合并到主 pytest 命令。
.github/workflows/vllm_ascend.yml(模块 CI工作流;类别 infra;类型 infrastructure): 添加 vLLM server abort 功能测试步骤,填补原有缺失的测试覆盖。
关键符号:TaskRunner, BaseTaskRunner, run, init
评论区精华
审核者wucong25直接批准了PR,没有留下评论。Gemini代码审查助手因文件类型不支持而跳过。因此本PR没有实质性的设计讨论。
风险与影响
- 风险:
- 基线文件路径变更风险:nightly_ascend.yml中将检查脚本的工作目录从指定子目录改为统一的/root/.cache/nightly_log/,可能影响已有基线的路径引用,需确保基线文件部署正确。
- 配置键调整风险:main_ppo_v0.py中TaskRunner的元类提取,虽然保留了原有接口,但其他继承TaskRunner的第三方代码可能依赖@ray.remote装饰器,需注意兼容性。
- 测试合并风险:npu_unit_tests.yml中将独立的activation offload测试移除,若该测试在统一pytest命令行中无法正常匹配,可能被遗漏执行。
- 影响:影响范围:主要影响NPU CI流程的稳定性和可维护性。新增三个基线检查使NPU nightly CI能够自动检测回归,提升验证效率。合并测试步骤减少了CI中的独立步骤数量,加快执行速度。对用户无直接功能影响,但改进了代码可扩展性。
- 风险标记:基线文件路径强依赖, 工作流目录结构调整, 测试覆盖合并风险
关联脉络
- PR #6672 [ci] chore: add two-node Ascend RayJob E2E workflow: 同样涉及NPU CI基础设施,扩展了多节点测试能力,与本PR的CI基线增强是同一方向。
参与讨论