Pull Request已成功合入, 合并人@CANN-robot
(感谢 horizon_C 的贡献)变更摘要
本次 PR 新增了基于 TorchTitan-NPU 的 Qwen3-1.7B SFT 一站式训练样例,主要包含两个环境构建脚本:build_project_platform.sh 用于搭建 TorchTitan-NPU 训练平台及其 Python 依赖,setup_prime_rl.sh 用于安装 Prime-RL Wordle 游戏环境与 vf-eval 评测工具,为后续完整的 SFT 训练→推理验证→评测流程提供基础环境支持。
主要改动
- 新增
build_project_platform.sh训练平台构建脚本:克隆torchtitan-npu仓库,加载 CANN 9.1.0 环境,安装torchtitan、triton-ascend、safetensors等核心训练依赖,并固定pyarrow==21.0.0版本,同时安装uv、openai、textarena==0.7.4等辅助工具。 - 新增
setup_prime_rl.sh评测环境安装脚本:克隆prime-rl仓库并锁定至特定 commit188192ce,以独立 commitd822f6a拉取verifiers依赖,通过uv为 Wordle verifier 创建独立虚拟环境并安装verifiers及 Wordle 环境包,最终验证vf-eval命令行工具可用。 - 采用
uv包管理器管理依赖:在两个脚本中均使用uv(uv venv、uv pip install)替代传统pip进行环境隔离与包安装,并配置清华镜像源加速下载。


代码审查
审查总结
按文件逐一审查结果:
| 文件 | 审查结果 |
|---|---|
README.md |
1 个 P1 问题:第 42 行 torchtitan 样例链接路径多了一层 qwen3_1.7B_torchtitan/ 目录,导致 404 |
llm_sft/qwen3_1.7B_torchtitan/README.md |
无问题 |
llm_sft/qwen3_1.7B_torchtitan/README_EN.md |
无问题 |
llm_sft/qwen3_1.7B_torchtitan/build_project_platform.sh |
2 个 P3 问题:依赖版本 pin 不一致(第 19 行)、冗余 cd 硬编码路径未复用 $repo 变量(第 11 行) |
llm_sft/qwen3_1.7B_torchtitan/setup_prime_rl.sh |
1 个 P2 问题:文件末尾缺少换行符(第 35 行) |
统计:P1 × 1,P2 × 1,P3 × 2,合计 4 个问题。
整体风险评估:该 PR 引入的变更整体风险中低。最需要关注的是主 README 中的断链(P1),会导致用户无法从首页导航到新增的 torchtitan 训练文档,建议合并前修复。Shell 脚本方面代码质量尚可(均启用了 set -euo pipefail),无安全硬编码密钥、无命令注入等高风险问题;存在的 P2/P3 问题属于健壮性和可复现性改进范畴,不影响基本功能运行。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 4 |
⛔ 需要修改


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-cann/cann-recipes-train | ✅ xuyujun, 张德鹏 (2/2) | ✅ xuyujun (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
horizon_C, thanks for your pull request. All authors of the commits have signed the CLA. 👍


🟡 Medium Priority
在 vf-eval wordle 命令块的最后一行,--save-results \ 包含一个尾部反斜杠 \,它是 shell 的续行符。当用户复制整个代码块并粘贴到终端时,shell 会将反斜杠解释为"下一行还有命令",从而显示 > 提示符等待更多输入,导致命令无法正常执行。用户必须手动删除反斜杠或按 Ctrl-C 中断。该问题同时存在于中英文两个 README 文件中。
建议:将 --save-results \ 末尾的反斜杠去除,改为 --save-results。同时修复 README_EN.md 中相同的问题(第 251 行)。


🟡 Medium Priority
在 vf-eval wordle 命令块的最后一行,--save-results \ 包含一个尾部反斜杠 \,它是 shell 的续行符。当用户复制整个代码块并粘贴到终端时,shell 会将反斜杠解释为"下一行还有命令",从而显示 > 提示符等待更多输入,导致命令无法正常执行。该问题与 README.md 中的问题相同,在两个文件中同时存在。
建议:将 --save-results \ 末尾的反斜杠去除,改为 --save-results。
| 251
| - --save-results |
|
251 | + --save-results |


🟡 Medium Priority
build_project_platform.sh 第 5 行直接执行 git clone … "$repo",但脚本顶部设置了 set -euo pipefail。如果目标目录 $repo 已经存在(例如上一次运行中途失败、用户重新运行),git clone 会因目录已存在而报错退出,导致整个脚本无法继续执行。用户需要手动删除目录后才能重试,降低了"一站式快速启动"的易用性。
触发条件:用户在执行此脚本中途遇到错误(如 pip 安装网络超时),再次运行脚本时触发。
建议:在 git clone 前增加目录状态检查,若目录已是有效的 git 仓库则跳过 clone。


🟠 High Priority
变更行(README.md 第 42 行)新增的链接路径为 llm_sft/qwen3_1.7B_torchtitan/qwen3_1.7B_torchtitan/README.md,但实际 README 文件位于 llm_sft/qwen3_1.7B_torchtitan/README.md(无重复的 qwen3_1.7B_torchtitan/ 子目录)。用户从主 README 点击该链接会得到 404,无法访问新增的 torchtitan SFT 训练样例文档。
证据:list_directory 确认 llm_sft/qwen3_1.7B_torchtitan/ 目录下直接包含 README.md,不存在名为 qwen3_1.7B_torchtitan 的子目录。
建议:将链接路径中的重复目录段移除,改为 llm_sft/qwen3_1.7B_torchtitan/README.md。
| 42
| - |[Qwen3-1.7B 基于torchtitan SFT训练样例](llm_sft/qwen3_1.7B_torchtitan/ |
|
42 | + |[Qwen3-1.7B 基于torchtitan SFT训练样例](llm_sft/qwen3_1.7B_torchtitan/README.md) |在一站式平台Atlas A2/A3环境中完成Qwen3-1.7B 单卡SFT训练。| |


🟡 Medium Priority
setup_prime_rl.sh 第 35 行(文件最后一行)echo "verifiers revision: $(git -C deps/verifiers rev-parse HEAD)" 之后没有换行符。POSIX 标准要求文本文件的每一行(包括最后一行)以换行符结尾。缺少末尾换行符可能导致:某些 shell 解析器忽略最后一行、wc -l 计数偏少、git diff 等工具产生警告,以及拼接脚本时出现语法错误。
建议:在文件末尾添加一个换行符。


流水线任务触发成功
任务链接 [e7a2a28650cb4c86a6191dcb694bda56][流水线指导]
| 任务名称 | 状态 | 日志 | 下载链接 |
|---|---|---|---|
| codecheck | ✅ SUCCESS | >>>>> | |
| SCA | ✅ SUCCESS | >>>>> | |
| antipoison | ✅ SUCCESS | >>>>> | |
| Check_Pr | ✅ SUCCESS | >>>>> | |
| Check_Patches | ✅ SUCCESS | >>>>> | |
| codecheck_codestyle | ✅ SUCCESS | >>>>> | |
| precommit | ⚠️ WARNING | >>>>> | >>>>> |
| pre_comment | ✅ SUCCESS | >>>>> |
[2026-07-23 11:04:55] CI执行结束


UV_CACHE_DIR 是 uv 包管理工具的缓存目录
在后续执行setup_prime_rl.sh:
uv venv .venv-wordle-legacy --clear
uv pip install -e deps/verifiers
uv pip install -e deps/verifiers/environments/wordle
时,uv 会自动读取该环境变量,并将下载的 Python 包(如 wheel、源码包、构建缓存等)缓存保存到该目录
changed this line on 3483423f view diff detail
流水线任务触发成功
任务链接 [7ad57217905b4c25a56f4ab9281e3af7][流水线指导]
| 任务名称 | 状态 | 日志 | 下载链接 |
|---|---|---|---|
| codecheck | ✅ SUCCESS | >>>>> | |
| SCA | ✅ SUCCESS | >>>>> | |
| antipoison | ✅ SUCCESS | >>>>> | |
| Check_Pr | ✅ SUCCESS | >>>>> | |
| Check_Patches | ✅ SUCCESS | >>>>> | |
| codecheck_codestyle | ✅ SUCCESS | >>>>> | |
| precommit | ⚠️ WARNING | >>>>> | >>>>> |
| pre_comment | ✅ SUCCESS | >>>>> |
[2026-07-24 12:19:31] CI执行结束


/check-pr


The following label is not ready.
lgtm: Please wait for reviewers to review the code.


主要变更包括:
类型
Checklist: