本项目开发了PyTorch Adapter插件,用于昇腾适配PyTorch框架,为使用PyTorch框架的开发者提供昇腾AI处理器的超强算力。
gcc版本: 7.3.0(只在编译场景要求)
cmake版本:3.12.0以上版本(只在编译场景要求)
python版本:3.7.5 和 3.8.x(编译方法有差别,详见脚本编译章节)
yum install -y cmake zlib-devel libffi-devel openssl-devel libjpeg-turbo-devel gcc-c++ sqlite-devel dos2unix openblas
apt-get install -y gcc g++ make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev m4 cmake dos2unix libopenblas-dev
AscendPyTorch版本 | CANN版本 | 支持PyTorch版本 |
---|---|---|
2.0.2 | CANN 5.0.2 | 1.5.0 |
2.0.3 | CANN 5.0.3 | 1.5.0,1.8.1(仅支持resnet50模型) |
当前支持pytorch 1.5.0和1.8.1的版本。根据需求,在当前仓库根目录pytorch/下获取原生PyTorch的源代码
//昇腾Pytorch
git clone -b 2.0.3.tr5 https://gitee.com/ascend/pytorch.git
cd pytorch
// 1.5.0 版本
git clone -b v1.5.0 --depth=1 https://github.com/pytorch/pytorch.git
// 1.8.1 版本
git clone -b v1.8.1 --depth=1 https://github.com/pytorch/pytorch.git
进入到pytorch/pytorch/目录下, 获取PyTorch被动依赖代码(获取时间较长,请耐心等待)。
git submodule sync
git submodule update --init --recursive
完成且没有报错之后就生成了PyTorch及其依赖的三方代码
进入到pytorch/scripts目录,根据选择的版本执行,执行脚本(注意:下载原生Pytorch源代码和下面版本要对应,否则可能出错)
// 默认为1.5.0版本
bash gen.sh
// 对于1.8.1版本,则通过-v 参数指定
bash gen.sh -v 1.8.1
会在pytorch/pytorch/目录中生成npu适配全量代码
进入到pytorch/pytorch/目录,依赖库安装:
pip3 install -r requirements.txt
进入到pytorch/pytorch/目录,执行
# python3.7版本
bash build.sh
或者
bash build.sh --python=3.7(推荐)
# python3.8版本
bash build.sh --python=3.8
生成的二进制包在pytorch/pytorch/dist/目录下
x86_64:
torch-1.5.0+ascend-cp37-cp37m-linux_x86_64.whl (实际可能附带小版本号例如torch-1.5.0.post2+ascend-cp37-cp37m-linux_x86_64.whl)
pip3 uninstall torch
pip3 install --upgrade torch-1.5.0+ascend-cp37-cp37m-linux_x86_64.whl
arm:
torch-1.5.0+ascend-cp37-cp37m-linux_aarch64.whl (实际可能附带小版本号例如torch-1.5.0.post2+ascend-cp37-cp37m-linux_aarch64.whl)
pip3 uninstall torch
pip3 install --upgrade torch-1.5.0+ascend-cp37-cp37m-linux_aarch64.whl
在当前仓库根目录中执行设置环境变量脚本
source pytorch/env.sh
以下环境变量为NPU场景下使用的功能类或可以提升性能的环境变量:
export TASK_QUEUE_ENABLE=1 # 使用异步任务下发,异步调用acl接口,建议默认开启,开启设置为1
export PTCOPY_ENABLE=1 # 使用PTCopy算子模式,加速转连续及copy等过程,建议默认开启,开启设置为1
可选的环境变量可能会对运行的模型产生影响:
export DYNAMIC_COMPILE_ENABLE=1 # 动态shape特性功能,针对shape变化场景,可选,开启设置为1
export COMBINED_ENABLE=1 # 非连续两个算子组合类场景优化,可选,开启设置为1
export TRI_COMBINED_ENABLE=1 # 非连续三个算子组合类场景优化,可选,开启设置为1
export ACL_DUMP_DATA=1 # 算子数据dump功能,调试时使用,可选,开启设置为1
export DYNAMIC_OP="ADD#MUL" # 算子实现,ADD和MUL算子在不同场景下有不同的性能表现。可选
验证运行, 输出结果OK
// 根据前述版本,选择对应的测试脚本,以下为1.5.0版本
python3 pytorch1.5.0/test/test_npu/test_div.py
// 以下为1.8.1版本
python3 pytorch1.8.1/test/test_npu/test_div.py
有关安装指南、模型迁移和训练/推理教程和API列表等更多详细信息,请参考用户文档。
热忱希望各位在用户社区加入讨论,并贡献您的建议,我们会尽快给您回复。
Ascend PyTorch的版本分支有以下几种维护阶段:
状态 | 持续时间 | 说明 |
---|---|---|
Planning | 1 - 3 months | 特性规划。 |
Development | 3 months | 特性开发。 |
Maintained | 6 - 12 months | 允许所有问题修复的合入,并发布版本。 |
Unmaintained | 0 - 3 months | 允许所有问题修复的合入,无专人维护,不再发布版本。 |
End Of Life (EOL) | N/A | 不再接受修改合入该分支。 |
分支名 | 当前状态 | 上线时间 | 后续状态 | EOL 日期 |
---|---|---|---|---|
v2.0.2 | Maintained | 2021-07-29 | Unmaintained 2022-07-29 estimated |
|
v2.0.3 | Maintained | 2021-10-15 | Unmaintained 2022-10-15 estimated |
pytorch编译依赖 yaml库和typing_extensions库,需要手动安装。
pip3 install pyyaml pip3 install typing_extensions
安装成功后,注意需要执行make clean在执行bash build.sh进行编译,否则可能因缓存出现未知编译错误。
开发态:
cd /urs/local/ascend-toolkit/latest/fwkacllib/lib64
用户态:
cd /urs/local/nnae/latest/fwkacllib/lib64
pip3 install --upgrade topi-0.4.0-py3-none-any.whl
pip3 install --upgrade te-0.4.0-py3-none-any.whl
cmake官网下载linux版本安装(当前3.18.0)
使用yum命令安装: yum install -y cmake==3.18.0
下载cmake sh脚本安装:(参考cmake官网)
X86_64环境推荐脚本安装: cmake-3.18.2-Linux-x86_64.sh
目前存在测试环境从GCC4.8.5 切换到 GCC7.3.0。这个过程容易出现错误导致pytorch编译不过,以下是需要软连接的库
gcc, g++,c++(--version 必须是7.3.0)
libstdc++->libstdc++.so.6.0.24(7.3.0)
环境缺少openblas库,需要安装openblas库
Centos,EulerOS环境
yum -y install openblas
Ubuntu环境
apt install libopenblas-dev
版本说明请参阅ReleseNote
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型