文档
注册

(推荐)自动迁移

简介

支持PyTorch 1.8.1、1.11.0、2.0.1、2.1.0版本。自动迁移方式较简单,且修改内容最少,只需在训练脚本中导入库代码。

  • 当前自动迁移暂不支持channel_last特性,建议用户使用contiguous代替。
  • 若原脚本中使用的backend为nccl,在init_process_group初始化进程组后,backend已被自动迁移工具替换为hccl。如果后续代码逻辑包含backend是否为nccl的判断,例如assert backend in ['gloo', 'nccl']、if backend == 'nccl',请手动将字符串nccl改写为hccl。
  • 由于自动迁移工具使用了Python的动态特性,但torch.jit.script不支持Python的动态语法,因此用户原训练脚本中包含torch.jit.script时使用自动迁移功能会产生冲突,目前自动迁移时会屏蔽torch.jit.script功能,若用户脚本中必须使用torch.jit.script功能,请使用工具迁移进行迁移。

使用方法

  1. 配置环境变量。
    export PYTHONPATH={CANN包安装目录}/ascend-toolkit/latest/tools/ms_fmk_transplt/torch_npu_bridge:$PYTHONPATH
  2. 在训练脚本中导入以下库代码。
    import torch
    import torch_npu
    .....
    import transfer_to_npu
  3. 参考模型训练执行训练。查看训练后是否生成权重文件,生成了如下图文件则说明迁移训练成功。

    若训练过程中提示部分cuda接口报错,可能是部分API(算子API或框架API)不支持引起,用户可参考以下方案进行解决。

    • 参见PyTorch Analyse迁移分析工具对脚本进行分析,获得支持情况存疑的API列表,进入昇腾开源社区提出ISSUE求助。
    • 参见以下步骤,将部分不支持的算子API移动至CPU运行。
      1. 参见CANN 软件安装指南中安装PyTorch > 编译安装PyTorch ”章节获取Ascend PyTorch源码包。
      2. 进入获取后的源码包目录,修改“npu_native_functions.yaml”
        cd pytorch/torch_npu/csrc/aten
        vi npu_native_functions.yaml

        “tocpu”配置下添加算子API名称。

        tocpu:
          - angle
          - mode
          - nanmedian.dim_values
          - nansum
          - native_dropout
          - native_dropout_backward
          - poisson
          - vdot
          - view_as_complex
          - view_as_real
      3. 参见CANN 软件安装指南中安装PyTorch > 编译安装PyTorch ”章节获取Ascend PyTorch源码包。
      4. 重新进行迁移训练。
    • 参见TBE&AI CPU算子开发指南算子开发过程>算子适配>适配插件开发(PyTorch框架)进行算子适配。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词