Prhub

#6554 [ci] chore: continue to replace the qwen25 model with the qwen3 model

原始 PR 作者 daikang6 合并时间 2026-06-02 10:05 文件变更 6 提交数 47 评论 3 代码增减 +184 / -126

执行摘要

替换 Qwen2.5 CI 测试为 Qwen3 并添加基线验证

根据 PR body,目的是继续将 Qwen2.5 模型替换为 Qwen3 模型,并为 NPU 夜间 CI 测试添加基线验证脚本。从 commit 历史看,还涉及适配 transformers 5.3.0 的兼容性修复。替换过时模型可确保 CI 测试覆盖最新模型,基线验证有助于检测训练回归。

如果关注 NPU CI 的演进和模型升级策略,可以快速浏览该 PR。但在 shell 脚本质量方面参考价值有限(未采纳自动化建议)。建议后续修复硬编码路径问题。

讨论亮点

仅有的 review 来自 gemini-code-assist[bot],未收到人工回复或采纳。主要建议包括:

  • 将硬编码的 /root/.cache 替换为 ${HOME}/.cache,避免非 root 用户权限问题。
  • 使用 mkdir -p 确保日志目录存在,并双引号引用变量防止 word splitting。
  • 在管道前重定向 stderr (2>&1) 以捕获错误输出。这些建议均未在最终合并版本中体现。

实现拆解

  1. 删除旧测试脚本:移除 tests/special_npu/run_qwen2_5_05b_sft_peft_sp2.shtests/special_npu/run_qwen2_5_vl_3b_npu.sh,这两个脚本分别对应 Qwen2.5-0.5B SFT/PEFT 和 Qwen2.5-VL-3B GRPO 测试。
  2. 新增 Qwen3-VL 测试脚本:创建 tests/special_npu/run_qwen3_vl_8b_Instruct_fsdp2_npu.sh,用于在 NPU 上运行 Qwen3-VL-8B GRPO 训练(vLLM rollout + FSDP2),支持参数化配置。
  3. 更新 nightly CI 配置:在 .github/workflows/nightly_ascend.yml 中添加新的 job nightlyCI_grpo_qwen3_vl_8b_Instruct_fsdp2_vllm_ascend,包含执行新脚本的步骤,并在已有的 PPO 测试后添加基线校验步骤(通过 check_ppo_qwen3-8b_fsdp_npu.py 对比日志与基线文件)。
  4. 更新 E2E CI 配置:在 .github/workflows/e2e_ascend.yml 中将 VLM RL 测试的 runner 从 linux-aarch64-a3-8 改为 linux-aarch64-a2b3-8,镜像从 verl-9.0.0-a3 换为 verl-9.0.0-910b,并将执行脚本从 run_qwen2_5_vl_3b_npu.sh 替换为 run_qwen3_vl_8b_Instruct_fsdp2_npu.sh
  5. 微调 PPO 测试脚本:修改 run_ppo_qwen3-8b_fsdp_npu.sh 的日志输出路径,从带时间戳的文件名改为固定目录下的固定文件名。
文件 模块 状态 重要度
tests/special_npu/run_qwen3_vl_8b_Instruct_fsdp2_npu.sh NPU 测试 added 6.19
.github/workflows/nightly_ascend.yml CI 配置 modified 4.87
tests/special_npu/run_qwen2_5_05b_sft_peft_sp2.sh NPU 旧测试 removed 5.3
tests/special_npu/run_qwen2_5_vl_3b_npu.sh NPU 旧测试 removed 5.26
.github/workflows/e2e_ascend.yml CI 配置 modified 3.25
tests/special_npu/nightly_ci_ascend/run_ppo_qwen3-8b_fsdp_npu.sh NPU 测试 modified 3.02

关键源码片段

tests/special_npu/run_qwen3_vl_8b_Instruct_fsdp2_npu.sh test-coverage

新增的主要测试脚本,定义了 Qwen3-VL-8B 在 NPU 上的 GRPO 训练参数和流程,是替换后的核心检验用例。

#!/usr/bin/env bash
# GRPO | vision | vLLM rollout | FSDP training | NPU
# Canonical Qwen3-VL baseline on Geo3K.set -xeuo pipefail
​
# 模型和路径配置,允许通过环境变量覆盖
MODEL_ID=${MODEL_ID:-Qwen/Qwen3-VL-8B-Instruct}
MODEL_PATH=${MODEL_PATH:-${HOME}/.cache/models/${MODEL_ID}}
# ... 其他参数定义 ...# 参数数组定义,每个数组对应一组配置
DATA=(
    algorithm.adv_estimator=grpo
    algorithm.use_kl_in_reward=False
    data.train_files=${TRAIN_FILE}
    data.val_files=${TEST_FILE}
    data.image_key=images
    # ...
)MODEL=(
    actor_rollout_ref.model.path="$MODEL_PATH"
    actor_rollout_ref.model.use_remove_padding=True
    actor_rollout_ref.model.enable_gradient_checkpointing=True
)ACTOR=(
    actor_rollout_ref.actor.strategy=fsdp2
    # ...
)ROLLOUT=(
    actor_rollout_ref.rollout.name=vllm
    actor_rollout_ref.rollout.tensor_model_parallel_size=${ROLLOUT_TP}
    # ...
)# ... REF, TRAINER, EXTRA 等数组 ...# 启动命令
python3 -m verl.trainer.main_ppo \
    "${DATA[@]}" \
    "${MODEL[@]}" \
    "${ACTOR[@]}" \
    "${ROLLOUT[@]}" \
    "${REF[@]}" \
    "${TRAINER[@]}" \
    "${EXTRA[@]}" \
    "$@" | tee $LOG_DIR/$SCRIPT_NAME.log

评论区精华

Shell 脚本最佳实践 style

gemini-code-assist[bot] 指出硬编码 /root/.cache 路径、未创建日志目录、未双引号引用变量、未重定向 stderr 等问题,并给出改进建议。

结论:建议未在最终 commit 中被采纳,但 PR 依然合并。 · unaddressed

风险与影响

  1. 测试脚本健壮性风险:新增脚本中仍使用硬编码路径 /root/.cache 且未创建日志目录,可能导致非 root 环境下运行失败或日志丢失。
  2. 回归覆盖风险:删除 Qwen2.5 测试脚本后,若 Qwen2.5 模型有特定回归问题将不再被 CI 捕获。
  3. CI 配置兼容性:e2e_ascend.yml 中更换 runner 和镜像版本,可能引入新环境的不稳定因素(如依赖版本变化)。

主要影响 NPU 相关的 CI 测试套件。对用户无直接影响,对团队维护者而言,夜间 CI 和 E2E CI 的测试范围从 Qwen2.5 全面迁移至 Qwen3,需确保新基线验证逻辑正确。影响程度中等。

测试脚本中含硬编码路径 缺少 stderr 重定向 覆盖可能不完整

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论