工具迁移推荐使用命令行方式。
若用户想使用图形开发界面、或已安装MindStudio,可以参考《MindStudio 用户指南》中的“分析迁移>PyTorch GPU2Ascend”章节使用MindStudio中集成的PyTorch GPU2Ascend功能进行工具迁移。
使用命令行方式进行工具迁移的核心步骤如下:
pip3 install pandas #pandas版本号需大于或等于1.2.4 pip3 install libcst #Python语法树解析器,用于解析Python文件 pip3 install jedi #可选,用于跨文件解析,建议安装
cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/tools/ms_fmk_transplt/
./pytorch_gpu2npu.sh -i 原始脚本路径 -o 脚本迁移结果输出路径 -v 原始脚本框架版本 [-r 自定义规则json文件路径] [-s] [-sim] [-m] [distributed -t 目标模型变量名 -m 训练脚本的入口文件]
参数 |
参数说明 |
取值示例 |
---|---|---|
-i --input |
|
/home/username/fmktransplt |
-o --output |
|
/home/username/fmktransplt_output |
-v --version |
|
|
-r --rule |
|
/home/username/fmktransplt_rule.json |
-s --specify-device |
|
- |
-sim --similar |
用功能相似的API替换以下工具暂不支持的API,但有可能导致准确性和性能下降。
可选。 |
- |
distributed |
|
- |
-m --modelarts |
|
- |
-h --help |
显示帮助信息。 |
- |
export MASTER_ADDR=127.0.0.1 export MASTER_PORT=63350 export HCCL_WHITELIST_DISABLE=1 NPUS=($(seq 0 7)) export RANK_SIZE=${#NPUS[@]} rank=0 for i in ${NPUS[@]} do export DEVICE_ID=${i} export RANK_ID=${rank} echo run process ${rank} please input your shell script here > output_npu_${i}.log 2>&1 & let rank++ done
参数 |
说明 |
---|---|
MASTER_ADDR |
指定训练服务器的ip |
MASTER_PORT |
指定训练服务器的端口 |
HCCL_WHITELIST_DISABLE |
hccl后端环境 |
NPUS |
指定在特定NPU上运行 |
RANK_SIZE |
指定调用卡的数量 |
DEVICE_ID |
指定调用的device_id |
RANK_ID |
指定调用卡的逻辑ID |
├── xxx_msft/xxx_msft_multi // 脚本迁移结果输出目录 │ ├── 生成脚本文件 // 与迁移前的脚本文件目录结构一致 │ ├── msFmkTranspltlog.txt // 脚本迁移过程日志文件,日志文件限制大小为1M,若超过限制将分多个文件进行存储,最多不会超过10个 │ ├── cuda_op_list.csv //分析出的cuda算子列表 │ ├── unknown_api.csv //支持情况存疑的API列表 │ ├── unsupported_api.csv //不支持的API列表 │ ├── change_list.csv // 修改记录文件 │ ├── run_distributed_npu.sh // 多卡启动shell脚本 │ ├── ascend_function // 如果启用了Replace Unsupported APIs参数,会生成该包含等价算子的目录 │ ├── ascend_modelarts_function │ │ ├── modelarts_path_manager.py // 启用ModelArts参数,会生成该路径映射适配层代码文件 │ │ ├── path_mapping_config.py // 启用ModelArts参数,会生成该路径映射配置文件
更多命令行方式工具迁移内容,请参见《分析迁移工具》中的 章节。