操作指南

参数说明

表1 参数说明

参数

参数说明

取值示例

-i

--input

  • 要进行转换的原始脚本文件所在文件夹路径或文件路径。
  • 必选。
  • /home/username/fmktransplt
  • /home/username/fmktransplt.py

-o

--output

  • 脚本转换结果文件输出路径。会在该路径下输出带有msft后缀的文件夹。
  • 必选。

/home/username/fmktransplt_output

-r

--rule

  • 用户自定义通用转换规则的json文件路径,主要分为:函数参数修改、函数名称修改和模块名称修改三部分。
  • 可选。

/home/username/fmktransplt_rule.json

-s

--specify-device

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

-

-sim

--similar

  • 用功能相似的API替换某些不支持的API,但有可能导致准确性和性能下降。
  • 可选。

-

-a

--amp_model

将torch.cuda.amp混合精度训练脚本转换为apex.amp混合精度训练脚本。可选。

model

distributed

将GPU单卡脚本转换为NPU多卡脚本,仅支持使用torch.utils.data.DataLoader方式加载数据的场景,指定此参数时,才可以指定以下两个参数。

  • -m,--main:训练脚本的入口python文件,必选。
  • -t,--target model:目标模型变量名,默认为'model',可选。

-

-h

--help

显示帮助信息。

-

自定义规则文件

自定义转换规则样例如下:

{
    "rules": {
        "ArgsModifyRule": [
            {
                "func_name": "name1",
                "arg_idx": 0,
                "arg_new": "agrs0"
            },
            {
                "func_name": "name2",
                "arg_idx": 0,
                "arg_new": "agrs0"
            }
        ],
        "FuncNameModifyRule": [
            {
                "old_name": "func",
                "new_name": "new_func"
            }
        ],
        "ModuleNameModifyRule": [
            {
                "old_name": "module",
                "new_name": "new_module",
                "parent_module":"parent_module"
            }
        ]
    }
}
表2 参数说明

参数

说明

ArgsModifyRule

函数参数修改

func_name

函数名称

arg_idx

参数的位置

arg_new

新的参数

FuncNameModifyRule

函数名称修改

ModuleNameModifyRule

模块名称修改

old_name

旧名称

new_name

新名称

parent_module

父级模块全名

例如torch.cuda.amp,amp的父级模块全名为torch.cuda。

执行转换

  1. 进入脚本转换工具所在路径。

    cd Ascend-cann-toolkit安装目录/ascend-toolkit/{version}/{arch}-linux/toolkit/tools/ms_fmk_transplt/

  2. 执行脚本转换工具。

    python3 ms_fmk_transplt.py -i 原始脚本路径 -o 脚本转换结果输出路径 [-r 自定义规则json文件路径] [-s] [-sim] [-a 模型名称] [distributed -m 训练脚本的入口文件 -t 目标模型变量名] 

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

  3. 完成脚本转换。