执行摘要
本 PR 为 verl 项目添加了针对 dapo-moonlight-16b-megatron 模型的 NPU 夜间 CI 测试,并优化了多个测试脚本的日志输出路径。通过扩展 CI 覆盖和引入带时间戳的日志目录,提升了测试稳定性和调试效率,属于中等重要性的基础设施改进。
功能与动机
主要动机是扩展 NPU CI 的测试范围,覆盖新的 dapo-moonlight-16b-megatron 模型,并改进日志管理以增强可追溯性。PR 正文简要说明了“add npu nightly ci for dapo-moonlight-16b-megatron and modify log path”,旨在确保训练过程在 CI 环境中的验证和日志记录的规范性,没有 explicit issue 引用,但从变更推断是团队内部的 CI 优化需求。
实现拆解
- CI 工作流扩展:在
.github/workflows/nightly_ascend.yml 中添加了新的 job nightlyCI_dapo-moonlight-16b-megatron-vllm_ascend,配置了运行环境、数据预处理步骤和脚本执行,关键代码如下:
```yaml
nightlyCI_dapo-moonlight-16b-megatron-vllm_ascend:
if: github.repository_owner == 'verl-project'
runs-on: linux-aarch64-a2-8
steps:
- name: Running nightlyCI_dapo-moonlight-16b-megatron-vllm_ascend
run: |
ray stop --force
bash tests/special_npu/nightly_ci_ascend/run_dapo_moonlight-16b_megatron_npu.sh
```
- 新增训练脚本:创建
tests/special_npu/nightly_ci_ascend/run_dapo_moonlight-16b_megatron_npu.sh,定义了 Dapo 训练的超参数和命令,例如设置 max_prompt_length、optimizer 参数等,并调用 recipe.dapo.main_dapo。
- 日志路径优化:修改了三个现有脚本(如
run_grpo_qwen25-7b-instruct_fsdp_npu.sh),将日志文件输出到 /root/.cache/nightly_log/ 目录下,并添加时间戳,例如:
bash
trainer.total_training_steps=15 2>&1 | tee /root/.cache/nightly_log/qwen25-7b/grpo_qwen25-7b-instruct_fsdp_npu-$(date +%Y%m%d_%H%M).log
评论区精华
在 review 中,gemini-code-assist[bot] 提出了关键建议:
“To ensure robust logging, the log directory must exist before tee writes to it, and stderr should be redirected to stdout (2>&1) before piping to tee.”
此外,指出了变量名 first_layer 和 last_layer 可能误导,以及 Hydra 覆盖语法 ++ 的不一致问题。这些讨论聚焦于脚本的正确性和可读性,但 PR 已合并,未显示采纳状态,建议后续检查是否修复。
风险与影响
- 技术风险:如果日志目录未提前创建,CI job 可能失败,影响测试连续性;变量名误导可能导致配置错误,影响训练结果;Hydra 语法问题可能引发配置解析错误。具体到文件,新增脚本中的变量定义和日志命令是风险点。
- 影响范围:主要影响内部开发团队,通过扩展 CI 覆盖确保新模型测试,并优化日志管理,对最终用户无直接影响。影响程度为中等,因为变更限于 CI 和测试脚本,不涉及核心业务逻辑。
关联脉络
本 PR 与近期其他 CI 相关 PR 如 #5758(删除 NPU CI 镜像)和 #5748(删除安装步骤)类似,都涉及 NPU CI 的配置调整,反映了项目在优化 CI 流程上的持续努力。同时,与 Megatron 模块的 PR #5575(检查点保存为 HF PEFT 格式)相关,因为本 PR 新增的脚本使用 Megatron 进行训练,显示项目在扩展 NPU 支持和 Megatron 集成上的演进趋势。
参与讨论