同步操作将从 xudaohong/pytorch 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
本项目开发了PyTorch Adapter插件,用于昇腾适配PyTorch框架,为使用PyTorch框架的开发者提供昇腾AI处理器的超强算力。用户在准备相关环境进行基于PyTorch框架模型的开发、运行时,可以选择在服务器中手动编译相关模块。 当前master分支为在研版本,上下游依赖存在变动可能,功能较不稳定,推荐使用Ascend配套软件表格中分支对应版本。master分支的安装使用请参考FAQ-使用源码编译安装PyTorch框架。
有关安装指南、模型迁移和训练/推理教程和API列表等更多详细信息,请参考昇腾社区PyTorch Adapter。
文档名称 | 文档链接 |
---|---|
PyTorch 安装指南 | 参考链接 |
PyTorch 网络模型迁移和训练 | 参考链接 |
PyTorch 在线推理 | 参考链接 |
PyTorch 算子适配 | 参考链接 |
PyTorch API清单 | 参考链接 |
昇腾开发PyTorch Adapter插件用于适配PyTorch框架,为使用PyTorch框架的开发者提供昇腾AI处理器的超强算力,本章节指导用户安装PyTorch框架和PyTorch Adapter插件。
说明: PyTorch配套的Python版本是:Python3.8.x(3.8.0~3.8.11)、Python3.9.x(3.9.0~3.9.2)。
安装PyTorch时,请参见表1下载对应分支代码包。
表 1 Ascend配套软件
AscendHub镜像版本/名称(获取链接) |
||||
---|---|---|---|---|
执行如下命令安装。如果使用非root用户安装,需要在命令后加**--user**,例如:pip3 install pyyaml --user,pip3 install wheel --user。
pip3 install pyyaml
pip3 install wheel
推荐用户使用编好的二进制whl包安装PyTorch。用户也可选择编译安装方式安装PyTorch。请参考编译安装PyTorch。
安装官方torch包。 官方torch的master分支,并无每日构建包,请下载官方源码并通过编译安装,请参考编译安装PyTorch。
安装PyTorch插件torch_npu。
master分支暂不提供对应的torch_npu预编译安装包,请参考编译安装PyTorch。
安装对应框架版本的torchvision。
# PyTorch master需安装最新的torchvision,当前最新的为0.15.1
pip3 install torchvision==0.15.1 --no-deps
混合精度训练是在训练时混合使用单精度(float32)与半精度(float16)数据类型,将两者结合在一起,并使用相同的超参数实现了与float32几乎相同的精度。在迁移完成、训练开始之前,基于NPU芯片的架构特性,用户需要开启混合精度,可以提升模型的性能。APEX混合精度模块是一个集优化性能、精度收敛于一身的综合优化库,可以提供不同场景下的混合精度训练支持。APEX模块的使用介绍可参考《PyTorch 网络模型迁移和训练指南》中的“混合精度说明“章节。
请参见apex: Ascend apex adapter - Gitee.com安装混合精度模块。
热忱希望各位在用户社区加入讨论,并贡献您的建议,我们会尽快给您回复。
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 | EOL | 2021/7/29 | N/A | |
v2.0.3 | EOL | 2021/10/15 | N/A | |
v2.0.4 | EOL | 2022/1/15 | N/A | |
v3.0.rc1 | EOL | 2022/4/10 | N/A | |
v3.0.rc2 | UnMaintained | 2022/7/15 | EOL 2023-10-15 estimated | |
v3.0.rc3 | Maintained | 2022/10/20 | Unmaintained 2023-10-20 estimated | |
v3.0.0 | Maintained | 2023/1/18 | Unmaintained 2024-1-18 estimated | |
v5.0.rc1 | Maintained | 2023/4/19 | Unmaintained 2024-4-19 estimated | |
v5.0.rc2 | Maintained | 2023/7/19 | Unmaintained 2024-7-19 estimated |
当前使用的PyTorch官方原生框架在ARM CPU上运行时,算子计算结果会出现异常,此问题为原生框架社区的已知问题,详细内容可参考PyTorch官方社区ISSUE。
可通过以下方式解决:
选择编译安装方式安装时需要安装系统依赖。此处以CentOS与Ubuntu操作系统为例目前支持CentOS与Ubuntu操作系统。
EulerOS、OpenEuler、BCLinux、Kylin、UOS20 1020e系统可参考CentOS进行安装。
Debian、UOS20、UOS20 SP1、Linx系统可参考Ubuntu进行安装。
CentOS
yum install -y patch zlib-devel libffi-devel openssl-devel libjpeg-turbo-devel gcc-c++ sqlite-devel dos2unix openblas git
yum install -y gcc==7.5.0 cmake==3.18.0 # gcc7.5.0版本及以上,cmake3.18.0版本及以上。
Ubuntu
apt-get install -y patch 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 dos2unix libopenblas-dev git
apt-get install -y gcc==7.5.0 cmake==3.18.0 # gcc7.5.0版本及以上,cmake3.18.0版本及以上。
以下操作步骤以安装PyTorch master分支为例。
安装官方torch包。
下载PyTorch master源码包。
git clone https://github.com/pytorch/pytorch.git --depth=1 pytorch_master
进入源码包获取被动依赖代码。
cd pytorch_master
git submodule sync
git submodule update --init --recursive
在aarch64架构下需要配置环境变量。
export USE_XNNPACK=0
执行编译安装。
python3 setup.py install
安装torch_npu
编译生成PyTorch插件的二进制安装包。
# 下载对应PyTorch版本分支代码,进入插件根目录
git clone https://gitee.com/ascend/pytorch.git
cd pytorch
# 指定Python版本编包方式,以Python3.8为例,其他Python版本请使用 --python=3.9
bash ci/build.sh --python=3.8
安装pytorch/dist目录下生成的插件torch_npu包,如果使用非root用户安装,需要在命令后加**--user**。
pip3 install --upgrade dist/torch_npu-2.1.0-cp38-cp38m-linux_aarch64.whl
# 若用户在x86架构下安装插件,请替换为对应的whl包。
安装对应框架版本的torchvision。
# PyTorch master分支需安装最新的torchvision,当前最新的为0.15.1
pip3 install torchvision==0.15.1 --no-deps
配置环境变量,验证是否安装成功。
配置CANN环境变量脚本。
source <CANN软件安装目录>/<CANN软件路径>/set_env.sh
环境变量脚本的默认路径一般为:/usr/local/Ascend/ascend-toolkit/set_env.sh,其中ascend-toolkit路径取决于安装的CANN软件名称。
执行如下命令,验证PyTorch是否安装成功。
python3 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);"
显示以下内容证明PyTorch框架与插件安装成功。
tensor([[-0.6066, 6.3385, 0.0379, 3.3356],
[ 2.9243, 3.3134, -1.5465, 0.1916],
[-2.1807, 0.2008, -1.1431, 2.1523]], device='npu:0')
在PIP设置为华为源时,需打开requirements.txt文件,删除typing依赖,再执行命令。
pip3 install -r requirements.txt
pytorch编译依赖 yaml库和typing_extensions库,需要手动安装。
pip3 install pyyaml
pip3 install typing_extensions
安装成功后,注意需要执行make clean在执行bash build.sh进行编译,否则可能因缓存出现未知编译错误。
开发态:
cd /urs/local/Ascend/ascend-toolkit/latest/{arch}-linux/lib64 #{arch}为架构名称
pip3 install --upgrade te-0.4.0-py3-none-any.whl
用户态:
cd /urs/local/Ascend/nnae/latest/{arch}-linux/lib64 #{arch}为架构名称
pip3 install --upgrade te-0.4.0-py3-none-any.whl
方法一:下载安装脚本安装cmake。(参考cmake官网)
X86_64环境脚本安装:cmake-3.18.0-Linux-x86_64.sh
aarch64环境脚本安装:cmake-3.18.0-Linux-aarch64.sh
执行命令。
./cmake-3.18.0-Linux-{arch}.sh # {arch}为架构名称
设置软连接。
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
执行如下命令验证是否安装成功。
cmake --version
如显示“cmake version 3.18.0”则表示安装成功。
方法二:使用源码编译安装。
获取cmake软件包。
wget https://cmake.org/files/v3.18/cmake-3.18.0.tar.gz --no-check-certificate
解压并进入软件包目录。
tar -xf cmake-3.18.0.tar.gz
cd cmake-3.18.0/
执行配置、编译和安装命令。
./configure --prefix=/usr/local/cmake
make && make install
设置软连接。
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
执行如下命令验证是否安装成功。
cmake --version
如显示“cmake version 3.18.0”则表示安装成功。
部分源下载gcc时会提示无法找到包,需要使用源码编译安装。
以下步骤请在root用户下执行。
下载gcc-7.5.0.tar.gz,下载地址为https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz。
安装gcc时候会占用大量临时空间,所以先执行下面的命令清空/tmp目录:
sudo rm -rf /tmp/*
安装依赖(以CentOS和Ubuntu系统为例)。
CentOS执行如下命令安装。
yum install bzip2
Ubuntu执行如下命令安装。
apt-get install bzip2
编译安装gcc。
进入gcc-7.5.0.tar.gz源码包所在目录,解压源码包,命令为:
tar -zxvf gcc-7.5.0.tar.gz
进入解压后的文件夹,执行如下命令下载gcc依赖包:
cd gcc-7.5.0
./contrib/download_prerequisites
如果执行上述命令报错,需要执行如下命令在“gcc-7.5.0/“文件夹下下载依赖包:
wget http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
wget http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
wget http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
wget http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2
下载好上述依赖包后,重新执行以下命令:
./contrib/download_prerequisites
如果命令校验失败,需要确认上述依赖包在文件夹中的唯一性,无重复下载,若存在重复的依赖包,需删除。
./configure --enable-languages=c,c++ --disable-multilib --with-system-zlib --prefix=/usr/local/linux_gcc7.5.0
make -j15 # 通过grep -w processor /proc/cpuinfo|wc -l查看cpu数,示例为15,用户可自行设置相应参数。
make install
须知: 其中“--prefix“参数用于指定linux_gcc7.5.0安装路径,用户可自行配置,但注意不要配置为“/usr/local“及“/usr“,因为会与系统使用软件源默认安装的gcc相冲突,导致系统原始gcc编译环境被破坏。示例指定为“/usr/local/linux_gcc7.5.0“。
修改软连接。
ln -s ${install_path}/gcc-7.5.0/bin/gcc /usr/bin/gcc
ln -s ${install_path}/gcc-7.5.0/bin/g++ /usr/bin/g++
ln -s ${install_path}/gcc-7.5.0/bin/c++ /usr/bin/c++
5.配置环境变量。
当用户执行训练时,需要用到gcc升级后的编译环境,因此要在训练脚本中配置环境变量,通过如下命令配置。
export LD_LIBRARY_PATH=${install_path}/lib64:${LD_LIBRARY_PATH}
其中${install_path}为3.中配置的gcc7.5.0安装路径,本示例为“/usr/local/gcc7.5.0/“。
说明: 本步骤为用户在需要用到gcc升级后的编译环境时才配置环境变量。
若存在pytorch编译不过,请检查软连接的库是否正确。
libstdc++->libstdc++.so.6.0.24(7.5.0)
环境缺少openblas库,需要安装openblas库
Centos,EulerOS环境
yum -y install openblas
Ubuntu环境
apt install libopenblas-dev
在容器中运行脚本出现NPU相关ERROR。由于启动容器实例时,未挂载device参数,导致无法正常启动实例。
请用户参考以下命令,重启容器。
docker run -it --ipc=host \
--device=/dev/davinciX \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /usr/local/Ascend/driver \
-v /usr/local/dcmi \
-v /usr/local/bin/npu-smi \
${镜像名称}:{tag} \
/bin/bash
参数说明:
/dev/davinciX:NPU设配,X是芯片物理ID号例如davinci0。
/dev/davinci_manager:管理设备。
/dev/devmm_svm:管理设备。
/dev/hisi_hdc:管理设备。
/usr/local/Ascend/driver:驱动目录。
/usr/local/dcmi:DCMI目录。
/usr/local/bin/npu-smi:npu-smi工具。
${镜像名称}:{tag}:镜像名称与版本号。
安装“torch-*.whl”时,提示"ERROR:torchvision 0.6.0 has requirement torch==1.5.0, but you'll have torch 1.5.0a0+1977093 which is incompatible"。
安装torch时,会自动触发torchvision进行依赖版本检查,环境中安装的torchvision版本为0.6.0,检查时发现我们安装的torch-*.whl的版本号与要求的1.5.0不一致,所以提示报错,但实际安装成功 。
对实际结果无影响,无需处理。
warning如下图所示,由Tensor.set_data浅拷贝操作触发。主要原因是PyTorch插件化解耦后,_has_compatible_shallow_copy_type
缺乏对NPU Tensor的浅拷贝判断支持,因此需要重新注册_has_compatible_shallow_copy_type
。
该warning不影响模型的精度和性能,可以忽略。
待NPU 设备号合入社区或者后续PyTorch版本_has_compatible_shallow_copy_type
注册方式发生变动,该warning会被解决。
验证torch_npu的引入,请切换至其他目录进行,在编译目录执行会提示如下错误。
在python命令行下,执行import torch_npu测试时,出现ModuleNotFooundError: NO module named '_lzma'问题,可能由于Python环境失效,重装Python即可。
编译原生pytorch时,未配置相关环境变量,导致编译不成功。
执行命令设置环境变量
export USE_XNNPACK=0
执行命令清除当前编译内容
make clean
重新编译
编译原生pytorch时,未配置相关环境变量,导致编译不成功。
执行命令配置环境变量
export BUILD_BREAKPAD=0
执行命令清除当前编译内容
make clean
重新编译
init_process_group 函数中使用了IPV6地址,例如::1(注意localhost 可能指向IPv6的地址),使用IPv4可以避免这个问题
版本说明请参阅ReleseNote
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。