执行摘要
- 一句话:统一 NPU 夜间 CI 脚本日志路径为动态目录
- 推荐动作:该 PR 属于 CI 基础设施的微小改进,逻辑简单,不值得深入精读。但其中“基于脚本名自动生成路径”的模式可作为团队 CI 脚本编写的规范,值得在其他 CI 场景中推广。
功能与动机
原有的日志路径在各脚本中硬编码,不便于维护和扩展。当新增或修改测试脚本时需要手动调整日志路径,容易出错。通过脚本名自动生成日志目录和文件名,减少人工干预,提高 CI 的健壮性。
实现拆解
- 在 5 个 shell 测试脚本头部添加
SCRIPT_NAME="$(basename -- "${BASH_SOURCE[0]}" .sh)"、LOG_DIR=/root/.cache/nightly_log/$SCRIPT_NAME 和 mkdir -p $LOG_DIR 三行,获取脚本名并创建对应日志目录。
- 将各脚本末尾的
tee 重定向改为 tee $LOG_DIR/$SCRIPT_NAME.log,替代原来的硬编码路径(如 /root/.cache/nightly_log/moonlight/dapo_moonlight16b_megatron_npu-$(date +%Y%m%d_%H%M).log)或直接输出。
- 在
nightly_ascend.yml 中,修改 PPO 检查步骤的 cd 目录和 --log 参数,与新生成的日志路径匹配。
- 对于
run_grpo_qwen3_30b_megatron_sglang_npu.sh,原已使用动态目录但带时间戳,统一去掉时间戳,保持命名一致。
- 所有脚本均为测试脚本,不涉及源码逻辑变更;工作流文件为 CI 配置变更。
关键文件:
tests/special_npu/nightly_ci_ascend/run_dapo_moonlight-16b_megatron_npu.sh(模块 测试脚本;类别 test;类型 test-coverage): 添加动态日志目录逻辑,替换硬编码路径,是典型变更之一
tests/special_npu/nightly_ci_ascend/run_grpo_qwen3_8b_mindspeedllm_npu.sh(模块 测试脚本;类别 test;类型 test-coverage): 同样添加动态日志目录逻辑,统一日志文件名
tests/special_npu/nightly_ci_ascend/run_gspo_qwen3_30b_megatron_npu.sh(模块 测试脚本;类别 test;类型 test-coverage): 添加动态日志目录逻辑,末尾添加 tee 重定向
tests/special_npu/nightly_ci_ascend/run_ppo_qwen3-8b_fsdp_npu.sh(模块 测试脚本;类别 test;类型 test-coverage): 添加动态日志目录逻辑,替换硬编码路径
tests/special_npu/nightly_ci_ascend/run_grpo_qwen3_30b_megatron_sglang_npu.sh(模块 测试脚本;类别 test;类型 test-coverage): 统一日志文件名,去掉时间戳,保持与脚本名一致
.github/workflows/nightly_ascend.yml(模块 CI 工作流;类别 infra;类型 infrastructure): 同步更新日志检查步骤的目录和文件名,匹配新的路径
关键符号:未识别
评论区精华
- gemini-code-assist 自动 review:建议将
python 改为 python3 并在 cd 后添加 || exit 错误处理。但该建议可能针对另一个文件,未见人工确认。
- ChibiQuest 提问:在
.github/workflows/e2e_ascend.yml 的 diff 中询问“这些为什么要注释掉呢?”,指向部分 job 名称被注释或修改。但此问题未得到回复,可能属于调研性质。
- gemini-code-assist 自动 review 建议 (other): 未被采纳或确认,可能属于自动评论的误判。
- ChibiQuest 询问注释原因 (question): 无回复,可能为调研性质,后续有相应调整。
风险与影响
- 风险:风险极低。变更仅涉及测试脚本的日志路径和 CI 工作流的检查步骤,不改变任何训练逻辑或算法。主要风险为日志路径与检查脚本不匹配导致 CI 误报,但 PR 已同步更新工作流中的路径,测试后应可正常工作。如果某些脚本的
$LOG_DIR 目录创建失败(如权限问题),可能会丢失日志,但脚本中已有 mkdir -p 且以 root 运行概率低。
- 影响:对用户无直接影响。对团队的影响为:夜间 CI 的日志将按脚本名称集中存放于
/root/.cache/nightly_log/ 下,便于检索和对比;新添加测试脚本时只需遵循同样的模式,无需手动指定日志路径。影响范围限定在 NPU 夜间 CI 流程。
- 风险标记:日志路径变更可能导致检查失败
关联脉络
- PR #6649 [ci] fix: several CI syntax errors: 同为 CI 基础设施修复,涉及工作流语法调整,与本次变更有一定关联。
- PR #6668 [ci, hardware] feat: add AMD ROCm (MI300) e2e_ppo_trainer workflow: 新增 CI 工作流,与 NPU 夜间 CI 同属 CI 扩展和维护。
参与讨论