下载
中文
注册

迁移操作

前提条件

使用PyTorch GPU2Ascend工具执行PyTorch训练脚本迁移前须安装如下依赖。如下命令如果使用非root用户安装,需要在安装命令后加上--user,例如:pip3 install pandas --user,安装命令可在任意路径下执行。
pip3 install pandas         #pandas版本号需大于或等于1.2.4
pip3 install libcst         #Python语法树解析器,用于解析Python文件
pip3 install prettytable    #将数据可视化为图表形式
pip3 install jedi           #可选,用于跨文件解析,建议安装

启动迁移任务

  1. 进入迁移工具所在路径。
    cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/tools/ms_fmk_transplt/
  2. 启动迁移任务。
    参考表1配置信息,执行如下命令启动迁移任务。
    ./pytorch_gpu2npu.sh -i 原始脚本路径 -o 脚本迁移结果输出路径 -v 原始脚本框架版本 [-s] [-m] [distributed -t 目标模型变量名 -m 训练脚本的入口文件]

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

    参考示例:

    #单卡
    ./pytorch_gpu2npu.sh -i /home/train/ -o /home/out -v 1.11.0 [-s] [-m]
    #分布式
    ./pytorch_gpu2npu.sh -i /home/train/ -o /home/out -v 1.11.0 [-s] [-m] distributed -m /home/train/train.py [-t model]

    “[]”表示可选参数,实际使用可不用添加。

    表1 参数说明

    参数

    参数说明

    取值示例

    -i

    --input

    • 要进行迁移的原始脚本文件所在文件夹路径。
    • 必选。

    /home/username/fmktransplt

    -o

    --output

    • 脚本迁移结果文件输出路径。
    • 不开启“distributed”即迁移至单卡脚本场景下,输出目录名为xxx_msft;开启“distributed”即迁移至多卡脚本场景下,输出目录名为xxx_msft_multi,xxx为原始脚本所在文件夹名称。
    • 必选。

    /home/username/fmktransplt_output

    -s

    --specify-device

    • 可以通过环境变量DEVICE_ID指定device作为高级特性,但有可能导致原本脚本中分布式功能失效。
    • 可选。

    -

    distributed

    • 将GPU单卡脚本迁移为NPU多卡脚本,仅支持使用torch.utils.data.DataLoader方式加载数据的场景,指定此参数时,才可以指定-t/--target_model参数。
    • -m,--main:训练脚本的入口Python文件,必选。
    • -t,--target_model:待迁移脚本中的实例化模型变量名,默认为“model”,可选。

      如果变量名不为"model"时,则需要配置此参数,例如"my_model = Model()",需要配置为-t my_model

    -

    -v

    --version

    • 待迁移脚本的PyTorch版本。目前支持1.11.0、2.1.0、2.2.0。
    • 必选。
    • 1.11.0
    • 2.1.0
    • 2.2.0

    -h

    --help

    显示帮助信息。

    -

  3. 完成脚本迁移。

    脚本迁移完成后,进入脚本迁移结果输出路径查看结果文件,以GPU单卡脚本迁移为NPU多卡脚本为例。

    ├── xxx_msft/xxx_msft_multi              // 脚本迁移结果输出目录
    │   ├── 生成脚本文件                 // 与迁移前的脚本文件目录结构一致
    │   ├── transplant_result_file       //存放迁移结果文件
    │   │   ├── affinity_api_call.csv  //可替换为亲和API的原生API调用列表
    │   │   ├── msFmkTranspltlog.txt         // 脚本迁移过程日志文件,日志文件限制大小为1M,若超过限制将分多个文件进行存储,最多不会超过10个
    │   │   ├── cuda_op_list.csv            //分析出的cuda API列表
    │   │   ├── unknown_api.csv             //支持情况存疑的API列表
    │   │   ├── unsupported_api.csv         //不支持的API列表
    │   │   ├── api_precision_advice.csv    //API精度调优的专家建议
    │   │   ├── api_performance_advice.csv  //API性能调优的专家建议和指导措施
    │   │   ├── change_list.csv              // 修改记录文件
    │   ├── run_distributed_npu.sh       // 多卡启动shell脚本
  4. 请参考后续操作及原始脚本提供的训练流程,在昇腾NPU平台直接运行修改后的模型脚本。
  5. 成功保存权重,说明保存权重功能迁移成功。