| fix: 修复 HCCL 离线编译配置校验不充分的问题
Co-authored-by: Chang-an-HW<machangan@huawei.com>
# message auto-generated for no-merge-commit merge:
!3055 merge fix_atc_cluster_config_check into develop
fix: 修复 HCCL 离线编译配置校验不充分的问题
Created-by: Chang-an-HW
Commit-by: Chang-an-HW
Merged-by: cann-robot
Description: # Pull Request
## 描述
本次 PR 修复 HCCL 离线编译配置校验不充分的问题:
1. 当用户通过 ATC 配置 --hccl_sub_comm_config 但未配置 --cluster_config 时,提前返回失败并提示缺少 cluster config,避免后续使用不完整 HCCL 离线配置继续编译。
2. 当用户仅配置 --cluster_config 时,仍解析 RankTable 和 HcclCommConfig,允许不配置子通信域信息。
3. 当子通信域配置为空时,不向图选项写入空的 OPTION_EXEC_HCOM_GROUPLIST_V2,避免空 group list 影响 HCCL group list 解析。
4. 更新 HcclOfflineOptionBuilder 相关 UT,覆盖仅配置 cluster config 和缺失 cluster config 两类场景。
## 变更类型
请选择本次引入的变更类型:
<!-- [x] 表示选中 -->
- [x] 🐛 Bug 修复
- [ ] ✨ 新功能
- [ ] 💄 代码风格更新(格式化,局部变量)
- [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动)
- [ ] 📦 构建过程或辅助工具的变动
- [ ] 📝 文档内容更新
## 关联的Issue
无。
## 如何测试
使用 ATC 验证本次修改涉及的 HCCL 离线配置组合。
1. --cluster_config 和 --hccl_sub_comm_config 都不设置:
```bash
atc --model=<normal_model_without_hcom> \
--framework=<framework_type> \
--output=<output_no_hccl_config> \
--soc_version=<soc_version>
```
预期:ATC 编译成功,未配置 HCCL 离线选项时不阻塞普通离线模型编译。
2. 完整配置 --cluster_config 和 --hccl_sub_comm_config:
```bash
atc --model=<hcom_model> \
--framework=<framework_type> \
--output=<output_ok> \
--soc_version=<soc_version> \
--cluster_config=<cluster_config.json> \
--hccl_sub_comm_config=<hccl_sub_comm_config.json>
```
预期:ATC 编译成功,日志中 HCCL 离线配置解析成功,OM 正常生成。
3. 仅设置 --cluster_config:
```bash
atc --model=<hcom_model> \
--framework=<framework_type> \
--output=<output_cluster_only> \
--soc_version=<soc_version> \
--cluster_config=<cluster_config.json>
```
预期:ATC 编译成功,RankTable 和 HcclCommConfig 正常解析,不写入空的 OPTION_EXEC_HCOM_GROUPLIST_V2。
4. 仅设置 --hccl_sub_comm_config,缺失 --cluster_config:
```bash
atc --model=<hcom_model> \
--framework=<framework_type> \
--output=<output_missing_cluster> \
--soc_version=<soc_version> \
--hccl_sub_comm_config=<hccl_sub_comm_config.json>
```
预期:ATC 编译失败,并提示当前 HCCL 离线模型缺少 cluster config。
## 核对清单
<!-- [x] 表示选中 -->
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [ ] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签(如:feat:, fix:)
- [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等
## 其他信息
本地未执行完整 ATC 验证;已触发 PR CI,等待流水线结果。
See merge request: cann/ge!3055 | 11 天前 |