已合并
feat: for the FSDP2 backend README, always pull from the MindSpeed master branch. #2869
feat: for the FSDP2 backend README, always pull from the MindSpeed master branch. #2869
已合并
xubin创建于 7月21日
xubin成员
7月21日

What this PR does / why we need it?

使用 fsdp2 后端的模型,修改成每次都拉取最新的MindSpeed ${指定分支} 代码

详细变更

  1. scripts/install.sh 新增 --msbranch 参数
  • 新增 -b, --msbranch BRANCH 选项,与 --msid 互斥
  • 新增互斥校验:同时传入两者时报错并退出
  • 克隆阶段:指定分支时使用 git clone -b "$MINDSPEED_BRANCH" 一步完成克隆 + 切换
  • 已存在克隆:执行 git fetch origin + git checkout ,保证分支最新
  • 配置打印与成功日志按 branch / commit / latest 三种状态分别输出
  • 顺手修复 CANN 安装错误处理 bug:原写法 if ! cmd; then cann_exit_code=$? 中的 $? 已被 if 命令本身覆盖,导致退出码恒为 0;改为先执行取退出码再判断,保证失败能被正确捕获并终止流程
  1. 统一 fsdp2 后端 README 的 MindSpeed 拉取方式

通过在 examples/ 目录搜索 torchrun $DISTRIBUTED_ARGS mindspeed_mm/fsdp/train/trainer.py 定位 fsdp2 后端的 example,统一拉取方式为 ${指定分支} 分支:

  • 使用 bash scripts/install.sh 的 README:追加 --msbranch ${指定分支} (原 --msid eb10b92 因互斥改为替换)

  • 使用手动 git clone 的 README:改为 git clone -b ${指定分支} https://gitcode.com/Ascend/MindSpeed.git

  • qwen3vl 、 qwen3omni 目录下同时存在 README.md 和 README_v1.md ,按规则只修改 README_v1.md ,保持 README.md 不动
    涉及文件(共 10 个 README + 1 个脚本):

  • scripts/install.sh

  • examples/qwen3_6/README.md 、 examples/qwen3_5/README.md 、 examples/kimik2_5/README.md 、 examples/mimov2_5/README.md

  • examples/step3_vl/README.md 、 examples/qwen3tts/README.md 、 examples/moss_tts/README.md 、 examples/ltx2/README.md

  • examples/qwen3vl/README_v1.md 、 examples/qwen3omni/README_v1.md

Does this PR introduce any user-facing change?

是。带来以下用户可见变化:

  1. 新增 CLI 参数 : scripts/install.sh 新增 -b / --msbranch BRANCH ,可通过分支名拉取 MindSpeed;与 -m / --msid 互斥,同时指定会报错退出
  2. README 安装指令变更 :fsdp2 后端相关 example 的安装步骤由"固定 commit"改为"${指定分支} 分支",用户拉取到的 MindSpeed 代码将随上游 ${指定分支} 滚动更新
  3. 行为修复 :CANN 安装失败时脚本现在能正确终止(之前由于 $? 被覆盖,可能漏报失败)
    相关文档路径:
  • scripts/install.sh
  • fsdp2 后端 example 的 README(清单见上方"详细变更"第 2 节)

How was this patch tested?

验证方式

  1. 参数解析与互斥校验

    • bash scripts/install.sh --msbranch ${指定分支} —— 期望打印 MindSpeed Branch: ${指定分支} ,并执行 git clone -b ${指定分支}
    • bash scripts/install.sh --msid —— 期望行为与改动前一致
    • bash scripts/install.sh --msid --msbranch ${指定分支} —— 期望报错 Error: --msid and --msbranch are mutually exclusive 并退出
    • 不传任何参数 —— 期望打印 MindSpeed: latest
  2. 已有克隆场景

    • 在已存在 MindSpeed/ 目录的情况下重复执行 --msbranch ${指定分支},期望执行 git fetch origin ${指定分支} + git checkout ${指定分支} ,不重新克隆
  3. CANN 错误处理

    • 构造 CANN 安装脚本返回非零场景,期望主脚本捕获非零退出码并 exit 1 ,而不是继续执行后续步骤
  4. README 一致性

    • 已通过 grep 校验所有 fsdp2 后端 example 的 README 中 MindSpeed.git 拉取命令均带 -b ${指定分支} , bash scripts/install.sh 均带 --msbranch ${指定分支}
    • 已确认 qwen3vl 、 qwen3omni 的 README.md 未被修改

使用约束与限制

  • --msbranch 与 --msid 互斥,必须二选一;同时指定会直接退出
  • 使用 --msbranch 时拉取的是远端对应分支的最新代码, 不会固定 commit ,构建结果可能随上游变化;如需固定版本请改用 --msid
  • 当本地已存在 MindSpeed/ 目录且历史与目标分支无关时, git checkout 可能失败,需要用户手动处理(与改动前 --msid 行为一致)
  • fsdp2 后端 example 的 README 改为 ${指定分支} 后,依赖 MindSpeed ${指定分支} 与 MindSpeed-MM 26.1.0 分支的兼容性,若上游 ${指定分支} 出现破坏性变更需另行适配
likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 xubin 的贡献)
Xxubin成员
7月21日 创建了 pull request,commit bb6e60b5
atomgit-bot
atomgit-bot
7月21日 评论:

变更摘要

本次 PR 主要针对 FSDP2 后端模型,将 MindSpeed 依赖的拉取方式统一改为始终获取 master 分支最新代码。核心变更包括:在 scripts/install.sh 中新增 --msbranch 参数以支持按分支安装 MindSpeed,并修复了 CANN 安装环节的错误码捕获 bug;同时将 10 个 FSDP2 相关示例 README 中的 MindSpeed 安装指令统一改为拉取 master 分支。

主要改动

  • scripts/install.sh 新增 -b/--msbranch 参数:允许用户通过分支名指定 MindSpeed 版本,与原有的 --msid(指定 commit ID)互斥;同时传入时脚本报错退出,并更新了帮助信息和配置打印逻辑,按 branch / commit / latest 三种状态分别输出。
  • MindSpeed 克隆与切换逻辑适配分支模式:新克隆时若指定 --msbranch,使用 git clone -b "$MINDSPEED_BRANCH" 一步完成;当 MindSpeed 目录已存在时,执行 git fetch origin <branch> + git checkout <branch> 以确保分支代码为最新。
  • CANN 安装错误处理 bug 修复:原写法 if ! cmd; then cann_exit_code=$?$?if 命令自身的退出码覆盖,导致失败退出码恒为 0;改为先执行命令再取 $? 后判断,使 CANN 安装失败能被正确捕获并终止流程。
  • FSDP2 后端 README 统一 MindSpeed 拉取方式为 master 分支:在 examples/ 目录下 10 个 FSDP2 相关 README 中,将 MindSpeed 安装指令统一改为拉取 master 分支(使用 --msbranch mastergit clone -b master);其中 qwen3vlqwen3omni 目录按规则仅修改 README_v1.md,保留 README.md 不动。
likedislike
atomgit-bot
atomgit-bot
7月21日 评论:

代码审查

I've now thoroughly reviewed all 11 changed files. Let me provide the closing summary.


审查总结

审查结果统计

  • P0: 0
  • P1: 1 (scripts/install.sh: git fetch + git checkout 未更新本地分支到远程最新)
  • P2: 0
  • P3: 0

各文件审查结论

文件 结论
scripts/install.sh 1 个问题 — git fetch + git checkout 未真正更新分支(P1);CANN 退出码修复正确;--msbranch / --msid 互斥逻辑正确
examples/kimik2_5/README.md 无新增问题(--msbranch master 替换正确;bash pip install 为既有错误,非本 diff 引入)
examples/ltx2/README.md 无问题(git clone -b master 替换正确)
examples/mimov2_5/README.md 无问题(--msid eb10b92--msbranch master 替换正确)
examples/moss_tts/README.md 无问题(git clone -b master 替换正确)
examples/qwen3_5/README.md 无问题(--msid eb10b92--msbranch master 替换正确)
examples/qwen3_6/README.md 无问题(--msid eb10b92--msbranch master 替换正确)
examples/qwen3omni/README_v1.md 无问题(git clone -b master 替换正确;README.md 按预期未改动)
examples/qwen3tts/README.md 无问题(git clone -b master 替换正确)
examples/qwen3vl/README_v1.md 无问题(git clone -b master 替换正确;README.md 按预期未改动)
examples/step3_vl/README.md 无问题(git clone -b master 替换正确)

整体风险判断

中等风险。核心缺陷在于 scripts/install.sh 第 596-599 行的 git fetch + git checkout 组合无法将已存在的本地分支更新到远程最新提交,导致"每次都拉取最新 master 分支代码"的设计目标在第二次及之后的运行中失效——用户将安装过时的 MindSpeed 代码,而非预期的最新 master。建议在 git checkout 之后追加 git reset --hard "origin/$MINDSPEED_BRANCH"(或在 fetch 后直接使用 git checkout -B "$MINDSPEED_BRANCH" "origin/$MINDSPEED_BRANCH")。其余 README 变更均为简单直接的参数/命令替换,无安全或正确性问题。

类型 数量
🔴 阻塞 1
🟡 建议 0

⛔ 需要修改

likedislike
ascend-robotascend-robot成员
7月21日 添加了label:stat/needs-squash
ascend-robotascend-robot成员
7月21日 添加了label:ascend-cla/yes
ascend-robot
ascend-robot成员
7月21日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-Ascend/MindSpeed-MM 王海涛, wanglikai1019, gaojie_ (3/2) 王海涛 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

MoCuishle-M, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
ascend-robot
ascend-robot成员
7月21日 评论:

ascend docs pipeline is running...

likedislike
ascend-robotascend-robot成员
7月21日 添加了label:docs-ci-pipeline-running
Xxubin成员
7月21日 update merge request[project id: 7404510, iid: 2869, commit_id: ae6096fbb4d4ff04b1549cc5e587faebcffab4c7] virtual merging success
Xxubin成员
7月21日 推送  1 个提交:eaf0fd09-docs(fsdp2): switch MindSpeed branch to 26.1.0_core_r0.12.1
Xxubin成员
7月21日 update merge request[project id: 7404510, iid: 2869, commit_id: 67c2dde0bebcc63fa716a2a702d8af8d8626b942] virtual merging success
ascend-robot
ascend-robot成员
7月21日 评论:

✅ 文档门禁通过!

检查项 检查结果 详情
markdownlint ✅ 已通过 查看详情
link-validity-check ✅ 已通过 查看详情
resource-existence-check ✅ 已通过 查看详情
tag-closed-check ✅ 已通过 查看详情
likedislike
ascend-robotascend-robot成员
7月21日 删除了label:docs-ci-pipeline-running
ascend-robotascend-robot成员
7月21日 添加了label:docs-ci-pipeline-success
ascend-robot
ascend-robot成员
7月21日 评论:

ascend docs pipeline is running...

likedislike
ascend-robotascend-robot成员
7月21日 删除了label:docs-ci-pipeline-success
ascend-robotascend-robot成员
7月21日 添加了label:docs-ci-pipeline-running
Xxubin成员
7月21日 修改了pull request 的描述
ascend-robot
ascend-robot成员
7月21日 评论:

✅ 文档门禁通过!

检查项 检查结果 详情
markdownlint ✅ 已通过 查看详情
link-validity-check ✅ 已通过 查看详情
resource-existence-check ✅ 已通过 查看详情
tag-closed-check ✅ 已通过 查看详情
likedislike
ascend-robotascend-robot成员
7月21日 删除了label:docs-ci-pipeline-running
ascend-robotascend-robot成员
7月21日 添加了label:docs-ci-pipeline-success
atomgit-bot
atomgit-bot7月21日进行代码检视2
scripts/install.sh
@@ -581,0 +596,4 @@
596+if [ -n "$MINDSPEED_BRANCH" ]; then
597+ # For existing clone, fetch and checkout the branch to keep it up to date
598+ git fetch origin "$MINDSPEED_BRANCH"
599+ git checkout "$MINDSPEED_BRANCH"
atomgit-bot
atomgit-bot7月21日评论:

🟠 High Priority

PR 目标为"每次都拉取最新的 MindSpeed master 分支代码",但现有实现中,当 MindSpeed 目录已存在时:

  1. git fetch origin "$MINDSPEED_BRANCH" — 从远程拉取最新提交,更新 origin/<branch> 引用
  2. git checkout "$MINDSPEED_BRANCH" — 切换到本地同名分支,但不会合并 origin/<branch> 的更新

结果:本地分支仍停留在上次运行时的提交,不会更新到远程最新。后续 pip3 install -e . 安装的仍是旧代码。首次运行(无现有目录)时 git clone -b 可以拿到最新;但第二次及之后的运行就会安装过时版本,违背了"每次都拉取最新"的意图。

触发条件:用户第二次执行 bash scripts/install.sh --msbranch master 且 MindSpeed 目录已存在。

建议:在 git checkout 后将本地分支重置到远程最新,或使用 git checkout -B 强制重建分支到 origin 的最新位置。

改动建议
599
+ if [ -n "$MINDSPEED_BRANCH" ]; then
600
+ # For existing clone, fetch and checkout the branch to keep it up to date
601
+ git fetch origin "$MINDSPEED_BRANCH"
599
- git checkout "$MINDSPEED_BRANCH"
602
+ git checkout "$MINDSPEED_BRANCH"
603
+ git reset --hard "origin/$MINDSPEED_BRANCH"
应用建议
likedislike
xubin成员
7月21日 评论:

🟠 High Priority

PR 目标为"每次都拉取最新的 MindSpeed master 分支代码",但现有实现中,当 MindSpeed 目录已存在时:

  1. git fetch origin "$MINDSPEED_BRANCH" — 从远程拉取最新提交,更新 origin/<branch> 引用
  2. git checkout "$MINDSPEED_BRANCH" — 切换到本地同名分支,但不会合并 origin/<branch> 的更新

结果:本地分支仍停留在上次运行时的提交,不会更新到远程最新。后续 pip3 install -e . 安装的仍是旧代码。首次运行(无现有目录)时 git clone -b 可以拿到最新;但第二次及之后的运行就会安装过时版本,违背了"每次都拉取最新"的意图。

触发条件:用户第二次执行 bash scripts/install.sh --msbranch master 且 MindSpeed 目录已存在。

建议:在 git checkout 后将本地分支重置到远程最新,或使用 git checkout -B 强制重建分支到 origin 的最新位置。

if [ -n "$MINDSPEED_BRANCH" ]; then
   # For existing clone, fetch and checkout the branch to keep it up to date
   git fetch origin "$MINDSPEED_BRANCH"
   git checkout "$MINDSPEED_BRANCH"
   git reset --hard "origin/$MINDSPEED_BRANCH"

@gitcode-bot

不符合实际场景。在实际开发场景中,很可能会修改MindSpeed 的代码,如果强制合并代码,这样不好。

Xxubin成员
7月21日 修改了pull request 的描述
Xxubin成员
7月21日 修改了pull request 的描述
Xxubin成员
7月21日 修改了pull request 的描述
Xxubin成员
7月21日 修改了pull request 的描述
Xxubin成员
7月21日 解决了最后一个问题
xubin成员
7月21日 评论:

compile

likedislike
ascend-robotascend-robot成员
7月21日 添加了label:ci-pipeline-running
ascend-robot
ascend-robot成员
7月21日 评论:

ascend docs pipeline is running...

likedislike
ascend-robotascend-robot成员
7月21日 删除了label:docs-ci-pipeline-success
ascend-robotascend-robot成员
7月21日 添加了label:docs-ci-pipeline-running
ascend-robot
ascend-robot成员
7月21日 评论:

✅ 文档门禁通过!

检查项 检查结果 详情
markdownlint ✅ 已通过 查看详情
link-validity-check ✅ 已通过 查看详情
resource-existence-check ✅ 已通过 查看详情
tag-closed-check ✅ 已通过 查看详情
likedislike
ascend-robotascend-robot成员
7月21日 删除了label:docs-ci-pipeline-running
ascend-robotascend-robot成员
7月21日 添加了label:docs-ci-pipeline-success
Xxubin成员
7月21日 关联了issue:[Roadmap] MindSpeed MM Roadmap 2026 Q2
ascend-robotascend-robot成员
7月21日 删除了label:ci-pipeline-running
ascend-robotascend-robot成员
7月21日 添加了label:ci-pipeline-passed
ascend-robot
ascend-robot成员
7月21日 评论:
流水线 PR-pipeline_MindSpeed-MM#4271 [ commitID:eaf0fd09 ] 已完成
>>>代码风格自动修复执行成功(无修复内容)
阶段 任务名 状态 详情
编译构建 Build >>>
恶意代码检查 Antipoison >>>
编码安全与规范检查 Only_doc_commit >>>
codeCheck_pre-commit >>>
pre-commit >>>
开源片段检查 SCA >>>
开发者测试 UT >>>
ST >>>
流水线 PR-pipeline_MindSpeed-MM >>>
此流水线已支持下列评论快捷指令,仅PR创建者和白名单成员[wujinyuan1, htwang, hhhzhuyizhi, cxiaolong, bigdog1206, ghoshaw, yaoyaoxu]评论有效
  • compile : 运行流水线
  • retry : 重试流水线所有失败子任务
  • retry <任务名> : 仅重试指定失败子任务
  • stop : 停止流水线
likedislike
LKONE
LKONE成员
7月21日 评论:

/lgtm

likedislike
gaojie
gaojie
7月21日 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
7月21日 添加了label:lgtm
htwang成员
7月23日 评论:

/approve

likedislike
ascend-robotascend-robot成员
7月23日 添加了label:approved
ascend-robotascend-robot成员
7月23日 合入了pull request
ascend-robot
ascend-robot成员
7月23日 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
ascend-robot
ascend-robot成员
7月23日 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike