迁移操作
- 进入迁移工具所在路径。
cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/tools/ms_fmk_transplt/
- 启动迁移任务。参考表1配置信息,执行如下命令启动迁移任务。
./pytorch_gpu2npu.sh -i 原始脚本路径 -o 脚本迁移结果输出路径 -v 原始脚本框架版本 [-r 自定义规则json文件路径] [-s] [-sim] [-a 模型名称] [-m] [distributed -t 目标模型变量名 -m 训练脚本的入口文件]
distributed及其参数-m、-t在语句最后指定。
表1 参数说明 参数
参数说明
取值示例
-i
--input
- 要进行迁移的原始脚本文件所在文件夹路径或文件路径。
- 必选。
/home/username/fmktransplt
-o
--output
- 脚本迁移结果文件输出路径。
- 不开启“distributed”即迁移至单卡脚本场景下,输出目录名为xxx_msft;开启“distributed”即迁移至多卡脚本场景下,输出目录名为xxx_msft_multi,xxx为原始脚本所在文件夹名称。
- 必选。
/home/username/fmktransplt_output
-r
--rule
- 用户自定义通用迁移规则的json文件路径,主要分为:函数参数修改、函数名称修改和模块名称修改三部分。自定义迁移规则json文件的编写请参见自定义迁移规则。
- 可选。
/home/username/fmktransplt_rule.json
-s
--specify-device
- 可以通过环境变量DEVICE_ID指定device作为高级特性,但有可能导致原本脚本中分布式功能失效。
- 可选。
-
-sim
--similar
用功能相似的API替换以下不支持的API,但有可能导致准确性和性能下降。- apex.parallel.DistributedDataParallel
- torch.cuda.get_device_properties
- torch.nn.Conv3d
- torch.nn.functional.pad
- torch.nn.ReflectionPad2d
- torch.nn.ReplicationPad2d
- torch.nn.SyncBatchNorm
- torch.nn.SyncBatchNorm.convert_sync_batchnorm
- torch.repeat_interleave
- torch.set_default_tensor_type
可选。
-
-a
--amp_model
- 将torch.cuda.amp混合精度训练脚本迁移为apex.amp混合精度训练脚本,PyTorch1.8.1原生支持混合精度模块,不建议使用该参数。
- 可选。
model
distributed
- 将GPU单卡脚本迁移为NPU多卡脚本,仅支持使用torch.utils.data.DataLoader方式加载数据的场景,指定此参数时,才可以指定-t参数。
- -m,--main:训练脚本的入口python文件,必选。
- -t,--target_model:目标模型变量名,默认为“model”,可选。
-
-v
--version
- 待迁移脚本的PyTorch版本。目前支持1.5.0和1.8.1。
- 必选。
- 1.5.0
- 1.8.1
-h
--help
显示帮助信息。
-
- 完成脚本迁移。
脚本迁移完成后,进入脚本迁移结果输出路径查看结果文件,以GPU单卡脚本迁移为NPU多卡脚本为例。
├── xxx_msft/xxx_msft_multi // 脚本迁移结果输出目录 │ ├── 生成脚本文件 // 与迁移前的脚本文件目录结构一致。 │ ├── msFmkTranspltlog.txt // 脚本迁移过程日志文件,日志文件限制大小为1M,若超过限制将分多个文件进行存储,最多不会超过10个。 │ ├── unsupported_op.csv // 不支持算子列表文件。 │ ├── change_list.csv // 修改记录文件。 │ ├── run_distributed_npu.sh // 多卡启动shell脚本。 │ ├── ascend_function // 如果启用了Replace Unsupported APIs参数,会生成该包含等价算子的目录。
父主题: msFmkTransplt