工具迁移

工具迁移推荐使用命令行方式。

若用户想使用图形开发界面、或已安装MindStudio,可以参考MindStudio 用户指南中的“分析迁移>PyTorch GPU2Ascend”章节使用MindStudio中集成的PyTorch GPU2Ascend功能进行工具迁移。

当前工具迁移不支持使用distributed parallel(DP)模式的模型迁移。若用户训练脚本中包含昇腾NPU平台不支持的torch.nn.parallel.DataParallel接口,需要手动修改成torch.nn.parallel.DistributedDataParallel接口执行多卡训练。

使用命令行方式进行工具迁移的核心步骤如下:

  1. 环境准备。

    1. 安装开发套件包。具体操作请参考CANN 软件安装指南的“安装开发环境”章节。
    2. 须安装如下依赖(以root用户安装为例,非root用户需加--user参数)。
      pip3 install pandas         #pandas版本号需大于或等于1.2.4
      pip3 install libcst 
      pip3 install jedi           #可选,用于跨文件解析,建议安装

  2. 配置环境变量。

    1. 以运行用户登录,在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后添加以下内容(以非root用户的默认安装路径为例):
      # Ascend-cann-toolkit环境变量(请根据实际路径修改)
      source $HOME/Ascend/ascend-toolkit/set_env.sh
    2. 执行:wq!命令保存文件并退出。
    3. 执行source ~/.bashrc命令使其立即生效。

  3. 进入分析迁移工具所在路径,执行脚本迁移任务。

    cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/tools/ms_fmk_transplt/
    ./pytorch_gpu2npu.sh -i 原始脚本路径 -o 脚本迁移结果输出路径 -v 原始脚本框架版本 [-r 自定义规则json文件路径] [-s] [-sim] [-a 模型名称] [-m] [distributed -t 目标模型变量名 -m 训练脚本的入口文件]

    distributed及其参数-m、-t在语句最后指定。

  4. 查看结果文件。

    脚本迁移完成后,进入脚本迁移结果输出路径查看结果文件,以GPU单卡脚本迁移为NPU多卡脚本为例:
    ├── xxx_msft/xxx_msft_multi              // 脚本迁移结果输出目录。
    │   ├── 生成脚本文件                 // 与迁移前的脚本文件目录结构一致。
    │   ├── msFmkTranspltlog.txt         // 脚本迁移过程日志文件,日志文件限制大小为1M,若超过限制将分多个文件进行存储,最多不会超过10个。
    │   ├── unsupported_op.xlsx          // 不支持算子列表文件。
    │   ├── 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参数,会生成该路径映射配置文件。

更多命令行方式工具迁移内容以及迁移命令参数说明,请参见分析迁移工具中的msFmkTransplt章节。