昇腾社区首页
中文
注册

模型开发&迁移

  • MindSpore训练场景暂未提供迁移工具,本文以直接在昇腾环境开发的训练脚本为例。
  • PyTorch训练场景使用PyTorch GPU2Ascend工具,将基于GPU的训练脚本迁移为支持昇腾NPU环境的脚本,大幅度提高脚本迁移速度,降低开发者的工作量。本样例可以让开发者快速体验PyTorch GPU2Ascend工具的迁移效率。原基于GPU的训练脚本迁移成功后可在昇腾NPU环境上运行。

    PyTorch GPU2Ascend工具为分析迁移工具之一,更多介绍请参见分析迁移工具用户指南

前提条件

环境准备

  1. 准备一台基于Atlas 训练系列产品的训练服务器,并安装NPU驱动固件
  2. 请参考安装CANN
  3. 安装框架。
    • MindSpore训练场景以安装2.6.0和2.7.0版本为例,具体操作请参见《MindSpore安装指南》。
    • PyTorch训练场景以安装2.6.0版本为例,具体操作请参见适配插件开发(PyTorch框架)
  4. 配置环境变量。

    安装CANN软件后,使用CANN运行用户进行编译、运行时,需要以CANN运行用户登录环境,执行source ${install_path}/set_env.sh命令设置环境变量。其中${install_path}为CANN软件的安装目录,例如:/usr/local/Ascend/ascend-toolkit。

  5. 将“mindspore_main.py”或“pytorch_main.py”文件上传至训练服务器的任意目录下(需保证该目录下文件的读写权限)。

执行训练(MindSpore训练场景)

MindSpore训练场景直接执行训练。

python mindspore_main.py

如果训练正常进行,完成后打印如下日志。

1
train finish

执行迁移(PyTorch训练场景)

PyTorch训练场景需要先将基于GPU的训练脚本迁移为支持昇腾NPU环境的脚本,再执行训练。

  1. 在训练脚本(pytorch_main.py文件)中导入自动迁移的库代码。
    PyTorch 昇腾NPU环境训练脚本样例为例。
    1
    2
    3
    4
    5
     22
     23 import torch_npu
     24 from torch_npu.contrib import transfer_to_npu
     25
    # 在23 24行插入的代码为自动迁移的库代码,可以在昇腾NPU环境下直接执行训练
    
  2. 迁移完成后的训练脚本可在昇腾NPU环境上运行,执行以下训练命令。
    python pytorch_main.py -a resnet50 -b 32 --gpu 1 --dummy

    如果训练正常进行,开始打印迭代日志,说明训练功能迁移成功,如下所示。

    1
    2
    3
    4
    5
    6
    Using device: npu
    => creating model 'resnet50'
    => Dummy data is used!
    Epoch: [0][    1/40037] Time  4.923 ( 4.923)    Data  0.502 ( 0.502)    Loss 7.0165e+00 (7.0165e+00)    Acc@1   0.00 (  0.00)   Acc@5   0.00 (  0.00)
    Epoch: [0][   11/40037] Time  0.061 ( 0.996)    Data  0.000 ( 0.541)    Loss 1.2860e+01 (1.9566e+01)    Acc@1   0.00 (  0.00)   Acc@5   0.00 (  0.85)
    Epoch: [0][   21/40037] Time  0.063 ( 0.551)    Data  0.000 ( 0.285)    Loss 9.5061e+00 (1.5033e+01)    Acc@1   0.00 (  0.00)   Acc@5   0.00 (  0.74)
    
  3. 成功保存权重,说明保存权重功能迁移成功。