# PR #7456 完整报告

- 仓库：`verl-project/verl`
- 标题：[ci] chore: Update ascend ci image
- 合并时间：2026-08-20 21:30
- 原文链接：http://prhub.com.cn/verl-project/verl/pull/7456

---

# 执行摘要

- 一句话：将 Ascend CI 脚本默认 GPU 数从 16 改为 8
- 推荐动作：作为常规 CI 配置修正，值得快速整合。可借鉴其按硬件规格调整默认参数的做法，建议后续检查其他类似脚本是否存在类似硬编码。

# 功能与动机

根据 PR 描述，A2 机器每节点只有 8 个 NPU，而原脚本默认 NGPUS_PER_NODE=16，与实际硬件不匹配，可能导致 CI 运行时资源申请错误。本 PR 为纯 CI 配置修正。

# 实现拆解

1. 修改 `tests/special_npu/nightly_ci_ascend/run_gspo_qwen3_8b_fsdp2_npu.sh` 中的默认 `NGPUS_PER_NODE` 值，从 16 改为 8，对齐 A2 硬件规格。
2. 在脚本末尾补充换行符，修复文件无尾随换行的问题。
3. 该脚本为 Ascend NPU 夜间 CI 测试脚本，改动仅影响 CI 资源申请，不涉及核心训练逻辑。

关键文件：
- `tests/special_npu/nightly_ci_ascend/run_gspo_qwen3_8b_fsdp2_npu.sh`（模块 NPU CI；类别 test；类型 test-coverage）: 唯一变更文件，调整默认 NGPUS_PER_NODE 从 16 到 8，并补充末尾换行。

关键符号：未识别

## 关键源码片段

### `tests/special_npu/nightly_ci_ascend/run_gspo_qwen3_8b_fsdp2_npu.sh`

唯一变更文件，调整默认 NGPUS_PER_NODE 从 16 到 8，并补充末尾换行。

```bash
# 关键参数：调整默认 NGPUS_PER_NODE 以匹配 A2 硬件规格
NGPUS_PER_NODE=${NGPUS_PER_NODE:-8} # 从 16 改为 8（A2 每节点 8 个 NPU）

# 其余脚本内容保持不变
# 后续 launch 部分：
PYTHONUNBUFFERED=1 python3 -m verl.trainer.main_ppo \
    "${DATA[@]}" \
    "${MODEL[@]}" \
    "${ACTOR[@]}" \
    "${REF[@]}" \
    "${ROLLOUT[@]}" \
    "${TRAINER[@]}" \
    "$@" 2>&1 | tee "$LOG_DIR/$SCRIPT_NAME.log"

```

# 评论区精华

无 review 评论，只有 `wucong25` 的 APPROVED 状态，审核通过。

- 暂无高价值评论线程

# 风险与影响

- 风险：风险极低。改动仅涉及 CI 脚本默认参数，不影响训练代码。唯一潜在风险是若其他硬件（如非 A2 机器）仍使用 16 NPU，则默认值被改变可能影响其 CI 运行，但该脚本专为 A2 设备准备，且可通过环境变量覆盖。
- 影响：影响范围限于 Ascend NPU 夜间 CI 的运行，使其默认参数与实际硬件匹配，避免资源申请错误。对用户无直接影响，对团队降低了 CI 配置维护成本。
- 风险标记：CI 配置变更 , 脚本默认参数调整

# 关联脉络

- PR #7558 [ci] fix: drop stale enable_chunked_prefill=False from Ascend NPU scripts: 同为 Ascend NPU CI 脚本调整，涉及相同目录下的脚本文件，本 PR 与其共同维护 Ascend CI 配置。
- PR #7541 [ci] chore: use Ascend recipe baselines for NPU nightly CI: 同为 NPU 夜间 CI 配置调整，关注硬件规格相关参数。