(推荐)自动迁移
简介
仅PyTorch 1.8.1版本及以上使用,自动迁移方式较简单,且修改内容最少,只需在训练脚本中导入库代码。
使用方法
- 配置环境变量。
export PYTHONPATH={CANN包安装目录}/ascend-toolkit/latest/tools/ms_fmk_transplt/torch_npu_bridge:$PYTHONPATH
- 在训练脚本中导入以下库代码。
import torch import torch_npu ..... import transfer_to_npu
- 参考模型训练执行训练。查看训练后是否生成权重文件,生成了如下图文件则说明迁移训练成功。
若训练过程中提示部分cuda接口报错,可能是部分API(算子API或框架API)不支持引起,用户可参考以下方案进行解决。
- 参见PyTorch Analyse迁移分析工具对脚本进行分析,获得支持情况存疑的API列表,进入昇腾开源社区提出ISSUE求助。
- 参见以下步骤,将部分不支持的算子API移动至CPU运行。
- 参见《CANN 软件安装指南》中“常用操作 > 编译安装PyTorch > 安装PyTorch 1.8.1或1.11.0”章节获取Ascend PyTorch源码包。
- 进入获取后的源码包目录,修改“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
- 参见《CANN 软件安装指南》中“常用操作 > 编译安装PyTorch > 安装PyTorch 1.8.1或1.11.0”章节重新编译框架插件包并安装。
- 重新进行迁移训练。
- 参见《TBE&AI CPU算子开发指南》中 进行算子适配。
父主题: 模型迁移