(推荐)自动迁移
简介
自动迁移操作简单,且修改内容少,只需在训练脚本中导入库代码即可完成脚本迁移。
使用约束

- 仅支持PyTorch 1.11.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功能,请使用工具迁移进行迁移。
使用方法
注意事项
- 如果模型包含评估、在线推理功能,也可在对应脚本中导入自动迁移库代码,并通过对比评估推理结果和日志打印情况,判断与GPU、CPU是否一致决定是否迁移成功。
- 若训练过程中提示部分cuda接口报错,可能是部分API(算子API或框架API)不支持引起,用户可参考以下方案进行解决。
- 使用迁移分析工具对模型脚本进行分析,获得支持情况存疑的API列表,进入昇腾开源社区提出ISSUE求助;Ascend C算子请参考《CANN Ascend C 算子开发指南》中“算子开发(进阶篇) > 网络中算子调用 > PyTorch框架”章节;或参考《CANN TBE&AI CPU算子开发指南》中 进行算子适配。
- PyTorch 1.11.0版本用户需将部分不支持的API移动至CPU运行,方法如下:
此操作仅涉及PyTorch 1.11.0版本,PyTorch 2.1.0及以上版本已经接入原生to_cpu逻辑,无需执行此操作。
- 参见《配置与安装》“安装torch_npu插件”章节获取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
- 参见《配置与安装》“安装torch_npu插件”章节重新编译框架插件包并安装。
- 重新执行迁移后的训练脚本,确认模型是否能正常训练。
父主题: 模型脚本迁移