# PR #7335 完整报告

- 仓库：`verl-project/verl`
- 标题：[megatron] feat: add MindSpeed-Bridge and Megatron backend support for Qwen3.5 GRPO training script
- 合并时间：2026-08-22 17:24
- 原文链接：http://prhub.com.cn/verl-project/verl/pull/7335

---

# 执行摘要

- 一句话：新增 MindSpeed-Bridge 后端，支持 Ascend GDN 优化
- 推荐动作：该 PR 值得快速浏览：它展示了如何在 verl 示例脚本中通过环境变量开关引入新后端，以及 Hydra `+` 前缀键的用法。若团队正在规划 Ascend 后端支持，可将其作为脚本层参考；但无需精读，也没有核心源码逻辑值得深入分析。

# 功能与动机

PR body 明确说明目的是 `Introduce MindSpeed-Bridge as the training backend for NPU-optimized GRPO`，并需要 `megatron_adaptor` 作为 MindSpeed-Bridge repatch 逻辑的依赖。脚本注释进一步解释了背景：Qwen3.5 使用 GDN 线性注意力，在 Megatron-LM 中不支持 packed sequences（THD 格式），因此需要在 Ascend 上通过 `use_ascend_gdn=True` 走专用优化路径。本 PR 以最小入侵方式把该能力接入现有 GRPO 示例脚本。

# 实现拆解

1. **依赖与安装说明**：三个脚本头部新增 “Requirements on Ascend (Mindspeed-Bridge)” 注释块，列举 Megatron-LM core_v0.18.0、Megatron-Bridge v0.5.0、MindSpeed core_r0.18.0、MegatronAdaptor core_r0.18.0、TransformerEngineNPU main、MindSpeed-Ops master、Mindspeed-Bridge master、flash-linear-attention-npu v26.1.0 以及 `decorator`、`pybind11`、`diffusers` 等安装项，并给出安装参考链接，确保用户按版本组合复现。

2. **新增开关变量**：在用户可调参数区加入 `USE_MINDSPEED_BRIDGE=${USE_MINDSPEED_BRIDGE:-False}`，默认不启用，保证对现有用户透明。

3. **条件配置注入**：在 `case "${DEVICE}"` 构造 `ACTOR` 数组的代码段中，当 `USE_MINDSPEED_BRIDGE=True` 时向数组追加两组带 `+` 前缀的 Hydra override 键：`+actor_rollout_ref.actor.megatron.override_transformer_config.use_triton_gdn=False` 与 `...use_ascend_gdn=True`。`+` 前缀是 Hydra 向 config 注入新键的语法。

4. **35b 脚本行为调整**：原脚本中这两行配置是无条件写入的，本次被移入条件分支，避免非 MindSpeed-Bridge 环境被强制启用 Ascend GDN。

5. **测试与 CI**：本 PR 未新增任何单元测试、集成测试或 CI workflow，属于纯示例脚本配置变更，正确性依赖 Ascend 实机验证；作者在 PR 评论中附带了一张截图（内容未在材料中提供）。

关键文件：
- `examples/grpo_trainer/run_qwen3_5_35b_megatron.sh`（模块 示例脚本；类别 config；类型 configuration；符号 USE_MINDSPEED_BRIDGE, ACTOR）: 三个脚本中改动最关键的一个：不仅补充 MindSpeed-Bridge 依赖说明和开关变量，还将原本无条件写入的 `use_triton_gdn=False` / `use_ascend_gdn=True` 调整为条件写入，存在默认行为变化。
- `examples/grpo_trainer/run_qwen3_5_122b_a10b_megatron.sh`（模块 示例脚本；类别 config；类型 configuration；符号 USE_MINDSPEED_BRIDGE, ACTOR）: 与主文件同步新增 MindSpeed-Bridge 依赖注释、`USE_MINDSPEED_BRIDGE` 开关及条件性 GDN 配置，为 122B MoE 模型提供同样的 Ascend 路径。
- `examples/grpo_trainer/run_qwen3_5_397b_megatron.sh`（模块 示例脚本；类别 config；类型 configuration；符号 USE_MINDSPEED_BRIDGE, ACTOR）: 与另两个脚本保持一致，为 397B 模型脚本引入 MindSpeed-Bridge 开关和依赖说明，体现该支持在 Qwen3.5 系列脚本中的统一推广。

关键符号：未识别


# 评论区精华

该 PR 没有任何实质性的 review 讨论：wucong25 直接批准，仅 CLAassistant 机器人提醒签署 CLA，作者补充了一条附带图片的评论（图片内容未在材料中提供）。因此不存在设计争议、权衡交锋或未解决疑虑。

- 暂无高价值评论线程

# 风险与影响

- 风险：
 - **轻微行为变化**：`run_qwen3_5_35b_megatron.sh` 原先无条件设置 `use_ascend_gdn=True`，改动后必须显式设置 `USE_MINDSPEED_BRIDGE=True` 才能保持原行为，对已有 Ascend 用户是轻微不兼容。
 - **版本硬编码风险**：脚本注释锁定了 MindSpeed-Bridge、Megatron-LM、MindSpeed 等组件的具体版本组合，用户环境若版本漂移，可能导致 repatch 逻辑不生效或运行时报错。
 - **测试缺失**：三个 shell 脚本没有 CI 覆盖，Hydra override 键名或条件分支一旦写错，只能在运行时暴露，缺少静态检查或轻量 CI 用例。
 - **影响范围有限**：不涉及任何 Python 源码，对 GPU、其他后端以及默认参数路径的用户完全无影响。
- 影响：
 - **用户侧**：Ascend NPU 用户获得官方推荐的 MindSpeed-Bridge 训练路径与版本组合；默认用户（未设置环境变量）不受影响。
 - **系统侧**：无运行时改动和性能回退；开启开关后可通过 Ascend GDN 获得 Qwen3.5 线性注意力的性能优化。
 - **团队侧**：与近期 NPU 后端演进方向（移除 MindSpeed-LLM、新增 fsdp_turbo）一致，为后续把 MindSpeed-Bridge 集成进正式 worker/engine 提供了脚本级参考。
 - 风险标记：示例脚本变更 , 35b 默认行为变化 , 无测试覆盖 , 依赖版本硬编码

# 关联脉络

- PR #7374 [ci, trainer] feat: remove mindspeedllm backend engine support.: 同一 MindSpeed 生态的演进：本 PR 引入 MindSpeed-Bridge 作为新的 NPU 训练路径，而 7374 随后移除旧的 MindSpeed-LLM 后端，显示 Ascend 后端方向正在收敛。
- PR #7362 [ci, trainer] feat: add fsdpturbo backend engine support.: 同样是面向 Ascend/NPU 的场景化后端支持，并在 examples 与 CI 中配套落地，可看作 verl 在 NPU 硬件支持上的系列工作。