迁移操作

操作步骤

  1. 启动脚本迁移。

    通过以下方式发起脚本迁移任务:
    • 在工具栏选择Ascend > Migration Tools > PyTorch GPU2Ascend
    • 单击工具栏中图标。
    • 右键单击训练工程,然后选择“PyTorch GPU2Ascend”

  2. 参数配置。

    PyTorch GPU2Ascend界面如图1所示,用户自行根据实际情况配置参数。
    图1 PyTorch GPU2Ascend参数配置
    表1 PyTorch GPU2Ascend参数说明

    参数

    参数说明

    PyTorch Version

    待迁移脚本的PyTorch版本。目前支持1.5.0和1.8.1。必选。默认为1.5.0。

    Input Path

    待迁移的原始脚本文件所在目录。单击文件夹图标选择目录。必选。

    Output Path

    脚本迁移结果文件输出路径。单击文件夹图标选择目录。必选。

    不开启迁移至多卡脚本功能场景下,输出目录名为xxx_msft;开启迁移至多卡脚本功能场景下,输出目录名为xxx_msft_multi,xxx为原始脚本所在文件夹名称。

    Custom Rule

    打开自定义迁移规则。开启该参数,将展示“Rule File”参数。可选。

    Rule File

    “Custom Rule”开启后此参数才会体现。单击文件夹图标选择用户自定义通用迁移规则的json文件路径。该json文件主要包括函数参数修改、函数名称修改和模块名称修改三部分。自定义迁移规则json文件的编写请参见自定义迁移规则样例。必选。

    Distributed Rule

    将GPU单卡脚本迁移为NPU多卡脚本,此参数仅支持使用torch.utils.data.DataLoader方式加载数据的场景。可选。

    Main File

    "Distributed Rule"开启后此参数才会体现。单击文件夹图标选择训练脚本的入口Python文件。必选。

    Target Model

    "Distributed Rule"开启后此参数才会体现。目标模型变量名,默认为“model”,可选。

    当同时使用"Amp Transplant"时,两个Target Model需保持一致。

    Replace Unsupported APIs

    开启此参数,将用功能相似的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

    Amp Transplant

    "PyTorch Version"选择1.5.0时此参数才会体现。开启此参数,可将torch.cuda.amp混合精度训练脚本迁移为apex.amp混合精度训练脚本。可选。

    说明:
    • 使用该功能可能导致网络性能下降,局限性较大。
    • 只有原始网络使用了torch.cuda.amp进行混合精度训练,才会进行混合精度的迁移。

    Target Model

    "Amp Transplant"开启后此参数才会体现。输入模型名称。默认为“model”。可选。

    当同时使用“Distributed Rule”时,两个Target Model需保持一致。

  3. 单击“Transplant”,执行迁移任务。

    完成后,Output Path输出目录下查看结果文件。

    ├── 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参数,会生成该包含等价算子的目录。

迁移完成后