目标
- 了解PyTorch是如何适配到晟腾平台上的
- 了解Davinci硬件架构以及生么样的模型在晟腾上更亲和
- 了解软件术语和Ascend-PyTorch的安装步骤
- 了解如何将原生PyTorch的模型代码适配到Ascend-PyTorch
前置知识
- 对原生PyTorch的软件架构有一定了解
- 对晟腾芯片及CANN软件栈有一定了解
- 对原生PyTorch的使用方法有一定了解
- 对混合精度训练有一定了解
介绍——PyTorch全景
介绍——达芬奇架构介绍
介绍——软件架构及Ascend-PyTorch(1.8)安装
前提条件
- 已完成CANN开发或运行环境的安装,确保相应os依赖(如python、numpy等)已安装
- 需确保Cmake >= 3.12.0,gcc >= 7.3.0
- 建议用户直接在安装环境中进行编译。如果在其他环境中编译,需要编译环境和安装环境的os版本、依赖版本一致
步骤
- 安装依赖 pip3 install pyyaml wheel
- 安装官方torch包 pip3 install torch==1.8.1+cpu
- 编译生成pytorch插件的二进制安装包 git clone -b master https://gitee.com/ascend/pytorch.git;cd pytorch && bash ci/build.sh -python=3.7
- 安装插件torch_npu包 pip3 install -upgrade dist/torch_npu-1.8.1-xxx.whl
- 安装混合精度模块(可选)https://gitee.com/ascend/apex
PyTorch模型迁移(三种方法)
- 手工迁移
- 脚本转换工具(msFmkTransplt)
- 自动迁移(推荐)
手工迁移
迁移前的准备
- 关于分布式:由于NPU上的一些限制,PyTorch需要使用DistributedDataParallel(DDP),若原始代码使用的是DataParallel(DP)则需要修改为DDP,DP相应的一些实现例如torch.cuda.commom,则可以替换为torch.distributer相关操作
- 关于混合精度:由于NPU天然的混合精度属性,我们需要使用apex对原始代码进行修改
单P模型迁移
单P代码迁移的主要修改点
- 设备设备从cuda切换至npu
- torch.cuda --> torch.npu
多P模型迁移
Extra 报错排查
脚本转换工具迁移
功能介绍
- 脚本转换工具根据适配规则,对用户脚本给出修改建议并提供转换功能,大幅度提高了脚本迁移速度,降低了开发者的工作量
- 原脚本需要在GPU环境下且基于Python3.7及以上能够跑通
- 脚本转换后的执行逻辑与转换前保持一致
- 此脚本转换工具当前支持PyTorch1.5.0和1.8.1版本的训练脚本转换
执行转换
- 进入脚本转换工具所在路径 cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/ms_fmk_transplt/
- 执行脚本转换 ./pytorch_gup2npu.sh -i 原始脚本路径 -o 脚本转换结果输出路径 -v 原始脚本框架
- 完成脚本转换
参考文档
自动迁移(推荐)
简介
仅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
- 参考模型训练执行训练。查看训练后是否生成权重文件,生成了如下图文件则说明迁移训练成功。
Demo获取&运行
Modelzoo地址 https://gitee.com/ascend/modelzoo
本章总结
- 介绍了PyTorch在晟腾上的适配原理
- 新增npu的device类型,开辟新的路径
- 通过npu的device类型,结合适配层,调用npu底层计算能力
- 通过适配npu上的内存管理和流管理机制等,使任务运行
- 通过适配HCCL通讯协议,使能分布式训练
- 介绍了芯片硬件架构及相应的影响
- 介绍了晟腾的软件栈及PyTorch的安装向导
- PyTorch模型迁移的三种方法
- 手工迁移(前期准备-单P迁移-多P迁移-Debug)
- 脚本转换工具迁移
- transfer_to_npu 自动迁移(推荐)
学习推荐
PyTorch https://www.hiascend.com/software/ai-frameworks
ModelZoo https://www.hiascend.com/software/modelzoo
晟腾社区 https://www.hiascedn.com/