已合并
[fix] 文档版本描述修改及ci脚本修改 #521
刘原辰创建于 18 天前
[fix] 文档版本描述修改及ci脚本修改 #521
已合并
共 3 个文件变更+37-8
| @@ -19,6 +19,7 @@ TORCHTITAN_BRANCH="main" | |||
| 19 | TORCHTITAN_COMMIT="ac13e536c84e7f6647b14fa9375c3c8a8a2b8578" | 19 | TORCHTITAN_COMMIT="ac13e536c84e7f6647b14fa9375c3c8a8a2b8578" |
| 20 | TITAN_DIR="${PROJECT_ROOT}/third_party/torchtitan" | 20 | TITAN_DIR="${PROJECT_ROOT}/third_party/torchtitan" |
| 21 | TIMEOUT_SECONDS=${TIMEOUT_SECONDS:-300} | 21 | TIMEOUT_SECONDS=${TIMEOUT_SECONDS:-300} |
| 22 | +upstream_exit_code=0 | ||
| 22 | 23 | ||
| 23 | 24 | ||
| 24 | # Run torchtitan upstream unit tests (with NPU patches applied) | 25 | # Run torchtitan upstream unit tests (with NPU patches applied) |
| @@ -98,10 +99,24 @@ EOF | |||
| 98 | echo "No torchtitan tests found to run." | 99 | echo "No torchtitan tests found to run." |
| 99 | else | 100 | else |
| 100 | echo "Torchtitan upstream tests failed (exit_code=$exit_code)" | 101 | echo "Torchtitan upstream tests failed (exit_code=$exit_code)" |
| 101 | - exit $exit_code | 102 | + upstream_exit_code=$exit_code |
| 102 | fi | 103 | fi |
| 104 | + | ||
| 105 | + return 0 | ||
| 103 | } | 106 | } |
| 104 | 107 | ||
| 105 | run_upstream_ut | 108 | run_upstream_ut |
| 106 | cd "$PROJECT_ROOT" | 109 | cd "$PROJECT_ROOT" |
| 107 | -PYTHONPATH="${TITAN_DIR}:${PROJECT_ROOT}:${PYTHONPATH}" python3 -m pytest -v --tb=short tests/unit_tests | 110 | +if PYTHONPATH="${TITAN_DIR}:${PROJECT_ROOT}:${PYTHONPATH}" \ |
| 111 | + python3 -m pytest -v --tb=short tests/unit_tests; then | ||
| 112 | + local_exit_code=0 | ||
| 113 | +else | ||
| 114 | + local_exit_code=$? | ||
| 115 | +fi | ||
| 116 | + | ||
| 117 | +echo "Unit test summary: upstream=${upstream_exit_code}, torchtitan-npu=${local_exit_code}" | ||
| 118 | + | ||
| 119 | +if [[ $upstream_exit_code -ne 0 ]]; then | ||
| 120 | + exit "$upstream_exit_code" | ||
| 121 | +fi | ||
| 122 | +exit "$local_exit_code" | ||
| @@ -10,6 +10,8 @@ bash .ci/unit_test.sh | |||
| 10 | python3 -m pytest -v --tb=short tests/unit_tests | 10 | python3 -m pytest -v --tb=short tests/unit_tests |
| 11 | ``` | 11 | ``` |
| 12 | 12 | ||
| 13 | +`.ci/unit_test.sh` 会依次执行两组单元测试。即使上游 UT 失败,本仓 UT 仍会继续执行;两组测试结束后脚本会输出退出码汇总,任意一组失败时最终返回非零退出码。 | ||
| 14 | + | ||
| 13 | ### 冒烟测试 | 15 | ### 冒烟测试 |
| 14 | ```bash | 16 | ```bash |
| 15 | # 运行 smoke 套件(torchtitan-npu 集成 smoke + tests/smoke_tests) | 17 | # 运行 smoke 套件(torchtitan-npu 集成 smoke + tests/smoke_tests) |
| @@ -1,9 +1,9 @@ | |||
| 1 | # 快速上手 | 1 | # 快速上手 |
| 2 | 2 | ||
| 3 | -参考 [软件安装](./installation.md) 准备环境后,以DeepSeek-V3.2模型为例,按照如下步骤在 NPU 平台上运行 | 3 | +参考 [软件安装](./installation.md) 准备环境后,即可在 NPU 平台上运行 torchtitan-npu。 |
| 4 | -torchtitan-npu。 | 4 | +`scripts/run_train.sh` 默认使用 Qwen3-0.6B debug 配置;下文同时提供 DeepSeek-V3.2 示例。 |
| 5 | 5 | ||
| 6 | -## 数据准备 | 6 | +## 数据准备(DeepSeek-V3.2 示例) |
| 7 | 7 | ||
| 8 | 1. 准备 Tokenizer [(以 DeepSeek-V3.2 网络为例)](https://huggingface.co/deepseek-ai/DeepSeek-V3.2/tree/main)。 | 8 | 1. 准备 Tokenizer [(以 DeepSeek-V3.2 网络为例)](https://huggingface.co/deepseek-ai/DeepSeek-V3.2/tree/main)。 |
| 9 | 9 | ||
| @@ -27,6 +27,8 @@ hf_assets_path="./deepseekv3.2-tokenizer", | |||
| 27 | 测试场景可直接使用项目预置在 `tests/assets/tokenizer/deepseekv3_tokenizer/` 的 tokenizer,无需重复下载: | 27 | 测试场景可直接使用项目预置在 `tests/assets/tokenizer/deepseekv3_tokenizer/` 的 tokenizer,无需重复下载: |
| 28 | 28 | ||
| 29 | ```bash | 29 | ```bash |
| 30 | +MODULE=torchtitan_npu.models.deepseek_v32 \ | ||
| 31 | +CONFIG=deepseek_v32_671b_4layers_debug \ | ||
| 30 | bash scripts/run_train.sh --hf_assets_path ./tests/assets/tokenizer/deepseekv3_tokenizer | 32 | bash scripts/run_train.sh --hf_assets_path ./tests/assets/tokenizer/deepseekv3_tokenizer |
| 31 | ``` | 33 | ``` |
| 32 | 34 | ||
| @@ -62,10 +64,20 @@ source /usr/local/Ascend/cann/opp/vendors/custom_transformer/bin/set_env.bash | |||
| 62 | 64 | ||
| 63 | ### 单机训练任务 | 65 | ### 单机训练任务 |
| 64 | 66 | ||
| 65 | -默认配置,以 16 NPU 启动 DeepSeek-V3.2 4层debug模型训练任务: | 67 | +脚本默认配置以 16 NPU 启动 Qwen3-0.6B debug 模型训练任务: |
| 66 | ```bash | 68 | ```bash |
| 67 | bash scripts/run_train.sh | 69 | bash scripts/run_train.sh |
| 68 | ``` | 70 | ``` |
| 71 | +该默认配置使用项目预置的 `tests/assets/tokenizer/qwen3-tokenizer/` 和 `tests/assets/c4_test/`,不依赖上方的 DeepSeek tokenizer。 | ||
| 72 | + | ||
| 73 | +本页前面的数据准备以 DeepSeek-V3.2 为例。如需启动 DeepSeek-V3.2 4 层 debug | ||
| 74 | +模型,请显式指定对应的模块和配置: | ||
| 75 | + | ||
| 76 | +```bash | ||
| 77 | +MODULE=torchtitan_npu.models.deepseek_v32 \ | ||
| 78 | +CONFIG=deepseek_v32_671b_4layers_debug \ | ||
| 79 | +bash scripts/run_train.sh | ||
| 80 | +``` | ||
| 69 | 81 | ||
| 70 | 自定义配置,调整训练步数和全局 batch size: | 82 | 自定义配置,调整训练步数和全局 batch size: |
| 71 | 83 | ||
| @@ -76,8 +88,8 @@ bash scripts/run_train.sh \ | |||
| 76 | ``` | 88 | ``` |
| 77 | 89 | ||
| 78 | > [!NOTE] | 90 | > [!NOTE] |
| 79 | -> * `MODULE`: 指定模型 Python 模块,默认 `torchtitan_npu.models.deepseek_v32`。切换模型时改为对应模块,例如 DeepSeek-V4 改为 `torchtitan_npu.models.deepseek_v4`。 | 91 | +> * `MODULE`: 指定模型 Python 模块,默认 `torchtitan_npu.models.qwen3`。切换模型时改为对应模块,例如 DeepSeek-V3.2 改为 `torchtitan_npu.models.deepseek_v32`,DeepSeek-V4 改为 `torchtitan_npu.models.deepseek_v4`。 |
| 80 | -> * `CONFIG`: 指定 `config_registry.py` 中的配置函数,默认 `deepseek_v32_671b_4layers_debug`。需与 `MODULE` 对应同一模型,例如 DeepSeek-V4 改为 `debug_deepseek_v4_flash_single_node`。 | 92 | +> * `CONFIG`: 指定 `config_registry.py` 中的配置函数,默认 `debug_qwen3_06b_single_node`。需与 `MODULE` 对应同一模型,例如 DeepSeek-V3.2 4 层 debug 配置为 `deepseek_v32_671b_4layers_debug`,DeepSeek-V4 改为 `debug_deepseek_v4_flash_single_node`。 |
| 81 | > * `NGPU`: 指定单机或多机每节点参与训练的 NPU 数量;`scripts/run_train.sh` 默认值为 16,`scripts/run_train_multinodes.sh` 默认值为 8。 | 93 | > * `NGPU`: 指定单机或多机每节点参与训练的 NPU 数量;`scripts/run_train.sh` 默认值为 16,`scripts/run_train_multinodes.sh` 默认值为 8。 |
| 82 | > * `training.allow_hf32`:控制 NPU MatMul、Conv、aclnn 算子是否启用 HF32,默认启用,无需传参;关闭时添加 `--training.no-allow_hf32`,这是 Tyro 为该布尔字段自动生成的反向选项。 | 94 | > * `training.allow_hf32`:控制 NPU MatMul、Conv、aclnn 算子是否启用 HF32,默认启用,无需传参;关闭时添加 `--training.no-allow_hf32`,这是 Tyro 为该布尔字段自动生成的反向选项。 |
| 83 | > * `--training.steps` 与 `--training.global_batch_size`: 动态覆盖 registry 配置中的字段。 | 95 | > * `--training.steps` 与 `--training.global_batch_size`: 动态覆盖 registry 配置中的字段。 |