华为Ascend昇腾适配PyTorch框架

一、参考资料

PyTorch用户文档

PyTorch网络模型移植&训练指南

AscendPyTorch

第三方框架适配

二、重要说明

  1. CPU架构为ARM架构时,由于社区未提供ARM架构CPU版本的torch包,无法使用PIP3命令安装PyTorch1.8.1,需要使用源码编译安装

三、相关介绍

1. PyTorch Adapter

1.1 问题引入

通常,开发者基于PyTorch框架开发的AI模型不能直接在昇腾AI处理器上运行(训练和推理),即运行在GPU上的PyTorch模型不能平滑迁移到昇腾AI处理器上运行。为此,本教程用于昇腾适配PyTorch框架,为使用PyTorch框架的开发者提供昇腾AI处理器的超强算力。

1.2 PyTorch Adapter简介

PyTorch安装指南

PyTorch Adapter插件,用于昇腾适配PyTorch框架,为使用PyTorch框架的开发者提供昇腾AI处理器的超强算力。用户在准备相关环境进行基于PyTorch框架模型的开发、运行时,可以选择在服务器中手动编译相关模块。

2. Ascend适配PyTorch API支持清单

PyTorch API支持清单_1.5.0.md

四、安装AscendPyTorch环境

PyTorch安装指南

1. 版本对齐

AscendPyTorch版本 CANN版本 支持PyTorch版本 Gitee分支名称
2.0.2 CANN 5.0.2 1.5.0.post2 2.0.2.tr5
2.0.3 CANN 5.0.3 1.5.0.post3 2.0.3.tr5
2.0.4 CANN 5.0.4 1.5.0.post4 2.0.4.tr5
3.0.rc1 CANN 5.1.RC1 1.5.0.post5 v1.5.0-3.0.rc1
3.0.rc1 CANN 5.1.RC1 1.8.1.rc1 v1.8.1-3.0.rc1
3.0.rc2 CANN 5.1.RC2 1.5.0.post6 v1.5.0-3.0.rc2
3.0.rc2 CANN 5.1.RC2 1.8.1.rc2 v1.8.1-3.0.rc2

2. 安装环境依赖

如果使用非root用户安装,用户需要在本步骤的每句命令后加**–user**,示例如:pip3 install pyyaml --user。

pip3 install pyyaml
pip3 install wheel

3. 安装PyTorch(ARM版本)

注意:社区未提供arm架构cpu安装包,需要使用源码编译安装pytorch。

# 下载PyTorch v1.8.1源码包
git clone -b v1.8.1 https://github.com/pytorch/pytorch.git --depth=1 pytorch_v1.8.1

# 进入源码包,获取被动依赖代码
cd pytorch_v1.8.1
git submodule sync
git submodule update --init --recursive 

# 执行编译安装
python3 setup.py install

4. 安装PyTorch(x86版本)

说明:除了安装PyTorch方式不同,其他步骤与ARM版本一致。

#x86_64
pip3 install torch==1.8.1+cpu #若使用pip命令安装cpu版本PyTorch报错,请手动下载whl包安装,下载地址:(https://download.pytorch.org/whl/torch)

5. 安装torch_npu包

编译生成torch_npu包。

# 下载master分支代码,进入插件根目录
git clone -b master https://gitee.com/ascend/pytorch.git 

cd pytorch    
# 指定python版本编包方式:
bash ci/build.sh --python=3.7
# 或
bash ci/build.sh --python=3.8
# 或
bash ci/build.sh --python=3.9

安装pytorch/dist下生成的插件torch_npu包,{arch}为架构名称。

pip3 install --upgrade dist/torch_npu-1.8.1rc2-cp37-cp37m-linux_{arch}.whl

6. 安装torchvision

pip3 install torchvision==0.9.1

7. 配置环境变量

在当前仓库根目录中执行设置环境变量脚本。

source env.sh

可选的环境变量

# 非连续转连续二级推导优化,可选,开启设置为1。当模型中有大量AsStrided高耗时算子被调用时,可以尝试开启此优化以获得潜在的device执行效率的提升。
export COMBINED_ENABLE=1 

# 算子数据dump功能,调试时使用,可选,开启设置为1
export ACL_DUMP_DATA=1 

环境变量说明

配置项 说明
COMBINED_ENABLE (可选)非连续转连续二级推导优化,开启设置为1。当模型中有大量AsStrided高耗时算子被调用时,可以尝试开启此优化以获得潜在的device执行效率的提升。但是Host下发性能存在下降风险。
ACL_DUMP_DATA (可选)算子数据dump功能,调试时使用,开启设置为1。

8. 测试样例

cd test/test_network_ops/
python3 test_div.py

五、自定义PyTorch版本的AscendHub镜像

自定义镜像简介_AI开发平台ModelArts_使用自定义镜像

六、昇腾Ascend 随记 —— TensorFlow 模型迁移

你可能感兴趣的:(深度学习,pytorch,Ascend,华为昇腾)