执行摘要
- 一句话:更新Ascend CI Docker镜像标签并移除旧Qwen3.5构建工作流
- 推荐动作:### 建议
1. 立即修复shell脚本:将 enforce_eager 改回 True,并移除 cudagraph_mode 配置,以保持与Ascend NPU的兼容性。
2. 验证CI新镜像:检查所有更新标签后的CI工作流是否正常运行,尤其是nightly和e2e测试。
3. 关注讨论中的未解决意见:虽然PR已合并,但留下了一个已知问题,建议在后续PR中解决。
功能与动机
根据PR标题和描述,目的是更新Ascend CI的Docker镜像标签,确保CI使用最新构建的镜像。这可能是因为之前的镜像标签格式不够规范或需要统一命名,以及Qwen3.5的专用构建工作流已被新的通用工作流取代。
实现拆解
实现拆解
- 删除旧Qwen3.5专用构建工作流:删除
.github/workflows/docker-build-ascend-a2-qwen3_5.yml 和 .github/workflows/docker-build-ascend-a3-qwen3_5.yml,共移除约246行。这两个工作流用于构建Qwen3.5专用Docker镜像,可能已被合并到通用工作流中。
- 更新CI工作流的镜像标签:修改
nightly_ascend.yml, model_ascend.yml, e2e_ascend.yml 等8个CI工作流文件,将容器镜像标签从类似 verl-9.0.0-910b-ubuntu22.04-py3.11-latest 的格式统一替换为 latest-cann9.0.0-torch_npu2.9.0post2-910b-ubuntu22.04-py3.11-vllm 的格式,明确包含CANN和Torch版本等详细信息。
- 修改GRPO训练示例配置:修改
verl/experimental/one_step_off_policy/shell/grpo_qwen3_8b_gsm8k_fsdp2_8_8_npu.sh,将 actor_rollout_ref.rollout.enforce_eager 从 True 改为 False,并添加了 cudagraph_mode 配置。但此修改在Ascend NPU上可能不兼容,因为CUDA graphs不受支持。
关键文件:
.github/workflows/docker-build-ascend-a2-qwen3_5.yml(模块 CI工作流;类别 infra;类型 deletion): 删除此文件,移除了Qwen3.5专用Docker构建工作流,是本次变更中最大的结构调整。
.github/workflows/docker-build-ascend-a3-qwen3_5.yml(模块 CI工作流;类别 infra;类型 deletion): 与上一个文件对称,删除A3版本的Qwen3.5专用构建工作流。
.github/workflows/nightly_ascend.yml(模块 CI工作流;类别 infra;类型 infrastructure): 包含最全面的镜像标签更新,覆盖多个job,是理解变更核心的入口。
verl/experimental/one_step_off_policy/shell/grpo_qwen3_8b_gsm8k_fsdp2_8_8_npu.sh(模块 实验脚本;类别 other;类型 configuration): 该脚本的配置修改可能引入Ascend NPU兼容性问题,是讨论焦点。
.github/workflows/model_ascend.yml(模块 CI工作流;类别 infra;类型 infrastructure): 同样更新了镜像标签,且是模型测试CI的一部分。
关键符号:未识别
关键源码片段
.github/workflows/nightly_ascend.yml
包含最全面的镜像标签更新,覆盖多个job,是理解变更核心的入口。
# 更新 CI 容器镜像标签(部分示例)
# 旧标签格式:verl-9.0.0-910b-ubuntu22.04-py3.11-latest
# 新标签格式:latest-cann9.0.0-torch_npu2.9.0post2-910b-ubuntu22.04-py3.11-vllm
jobs:
build:
container:
# 变更前
# image: swr.cn-southwest-2.myhuaweicloud.com/modelfoundry/ascend-ci/verl/verl:verl-9.0.0-910b-ubuntu22.04-py3.11-latest
# 变更后
image: swr.cn-southwest-2.myhuaweicloud.com/modelfoundry/ascend-ci/verl/verl:latest-cann9.0.0-torch_npu2.9.0post2-910b-ubuntu22.04-py3.11-vllm
# 更多类似更新见实际文件
评论区精华
讨论焦点
-
gemini-code-assist[bot] 指出在Ascend NPU上CUDA graphs不受支持,设置 enforce_eager=False 并启用 cudagraph_mode 会导致vLLM初始化失败。建议改回 enforce_eager=True 并移除 cudagraph_mode。然而,该评论未被采纳,PR在无进一步讨论的情况下被批准合并。这可能导致NPU训练环境出现运行时错误。
-
Shell脚本enforce_eager设置与NPU不兼容 (correctness): 该问题未解决,PR仍被批准合并。
风险与影响
- 风险:### 风险分析
- shell脚本配置不兼容:
grpo_qwen3_8b_gsm8k_fsdp2_8_8_npu.sh 中 enforce_eager=False 和 cudagraph_mode 的设置与Ascend NPU不兼容,直接使用将导致vLLM崩溃。这是未解决的高风险问题。
- 镜像标签变更:新的Docker镜像标签指向新构建的镜像,可能包含不同的依赖版本,存在回归风险。需要CI验证通过。
- 删除旧工作流:如果还有外部依赖引用旧工作流,可能会受影响。但考虑到是CI内部文件,影响可控。
- 影响:### 影响分析
- CI系统:所有Ascend NPU相关的CI工作流都将使用新的Docker镜像,可能带来依赖或行为变化。
- 开发者:使用
grpo_qwen3_8b_gsm8k_fsdp2_8_8_npu.sh 脚本运行GRPO训练的开发者将遇到NPU兼容性问题。
- 团队:需要尽快修复shell脚本配置,并确保新镜像在CI中通过测试。
- 风险标记:shell脚本NPU配置不兼容, CI镜像更新依赖验证
关联脉络
- PR #7028 [env] fix: Sync Qwen3.5 Dockerfile from 0.8.0 Branch to Main and Pin PyArrow Version: 同样涉及Qwen3.5 Docker镜像的同步和修复,与本文删除Qwen3.5专用构建工作流有间接关联。
- PR #7008 [doc] refactor: update ascend docker name: 更新了Ascend Docker镜像命名规范,本PR进一步应用了新的命名格式。
- PR #7039 [env] chore: add megatron-bridge in sglang docker env: 同为Ascend Docker环境变更,但侧重不同镜像。
参与讨论