昇腾社区首页
中文
注册

快速入门

简介

PyTorch GPU2Ascend工具可将基于GPU的训练脚本迁移为支持NPU的脚本,大幅度提高脚本迁移速度,降低开发者的工作量。本样例可以让开发者快速体验PyTorch GPU2Ascend工具的迁移效率。

本样例选用ResNet50模型,数据集为ImageNet。

前提条件

  • 准备一台基于Atlas 训练系列产品的训练服务器,并安装对应的驱动和固件。驱动和固件的安装请参考安装NPU驱动固件
  • 安装开发套件包Ascend-cann-toolkit,具体请参考安装CANN
  • 以安装PyTorch 2.1.0版本为例,具体操作请参考安装PyTorch章节,完成PyTorch框架和torch_npu插件的安装。
  • 使用PyTorch GPU2Ascend迁移前须执行如下命令安装依赖,如下命令如果使用非root用户安装,需要在安装命令后加上--user
    pip3 install pandas         #必选,pandas版本号需大于或等于1.2.4
    pip3 install libcst         #必选,语义分析库,用于解析Python文件
    pip3 install prettytable    #必选,将数据可视化为图表形式
    pip3 install jedi           #必选,用于跨文件解析
  • 下载main.py文件,将获得ResNet50模型放到用户自定义路径下(如/home/user)。

自动迁移

修改内容少,只需在训练脚本中导入库代码,迁移后直接在昇腾NPU平台上运行(推荐)。

  1. 在训练脚本main.py文件中导入自动迁移的库代码。
    from torch.utils.data import Subset
    import torch_npu 
    from torch_npu.contrib import transfer_to_npu   
    .....
  2. 切换目录至迁移完成后的训练脚本所在路径(以/home/user为例),执行以下命令使用虚拟数据集进行训练,迁移完成后的训练脚本可在NPU上正常运行
    开始打印迭代日志,说明训练功能迁移成功。
    cd /home/user
    python main.py -a resnet50 --gpu 1 --epochs 1 --dummy  # --gpu 1表示使用卡1,--epochs 1是指迭代次数为1
  3. 成功保存权重,说明保存权重功能迁移成功。

使用PyTorch GPU2Ascend工具迁移

  1. 进入迁移工具所在路径。
    cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/tools/ms_fmk_transplt/
  2. 执行脚本迁移任务,参考表1配置信息。
    ./pytorch_gpu2npu.sh -i 原始脚本路径 -o 脚本迁移结果输出路径 -v 原始脚本的PyTorch框架版本

    命令示例:

    ./pytorch_gpu2npu.sh -i /home/user -o /home/out -v 2.1.0
  3. 切换目录至迁移完成后的训练脚本所在路径(以/home/user为例),执行以下命令使用虚拟数据集进行训练,迁移完成后的训练脚本可在NPU上正常运行
    开始打印迭代日志,说明训练功能迁移成功。
    cd /home/user
    python main.py -a resnet50 --gpu 1 --epochs 1 --dummy  # --gpu 1表示使用卡1,--epochs 1是指迭代次数为1
  4. 完成脚本迁移,进入脚本迁移结果的输出路径查看结果件。

    脚本迁移过程中会启动迁移分析,默认使用torch_apis和affinity_apis的分析模式,可参见分析报告简介查看对应的结果件。

  5. 成功保存权重,说明保存权重功能迁移成功。