基于香橙派 KunpengPro学习CANN(2)——Ascend Extension for PyTorch 配置与安装

将 PyTorch 网络迁移到昇腾平台并执行训练或推理,直接使用昇腾提供的构图接口构图。Ascend Extension for PyTorch插件用于适配PyTorch框架,可以使用昇腾AI处理器的算力。

1 pip 安装

bash 复制代码
# 下载PyTorch安装包
wget https://download.pytorch.org/whl/cpu/torch-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
# 下载torch_npu插件包
wget https://gitee.com/ascend/pytorch/releases/download/v6.0.rc3-pytorch2.1.0/torch_npu-2.1.0.post8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

# 安装命令
pip3 install torch-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
pip3 install torch_npu-2.1.0.post8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

注:

  • 如果下载whl包时出现ERROR: cannot verify gitee.com's certificate报错,可在下载命令后加上--no-check-certificate参数避免此问题
  • 执行如下命令,若返回True则说明安装成功
bash 复制代码
python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())"
  • 若Pytorch版本为2.1.0,出现找不到google或者protobuf或者protobuf版本过高报错时,需执行如下命令:
bash 复制代码
pip install protobuf==3.20

2 源码安装

2.1 源码编译安装 PyTorch 框架
  • Get the PyTorch Source
bash 复制代码
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive
  • Install Dependencies
bash 复制代码
conda install cmake ninja
# Run this command from the PyTorch directory after cloning the source code using the "Get the PyTorch Source" section below
pip install -r requirements.txt

pip install mkl-static mkl-include
# CUDA only: Add LAPACK support for the GPU if needed
conda install -c pytorch magma-cuda121  # or the magma-cuda* that matches your CUDA version from https://anaconda.org/pytorch/repo

# (optional) If using torch.compile with inductor/triton, install the matching version of triton
# Run from the pytorch directory after cloning
# For Intel GPU support, please explicitly `export USE_XPU=1` before running command.
make triton
  • Install PyTorch
bash 复制代码
export _GLIBCXX_USE_CXX11_ABI=1
# Only run this if you're compiling for ROCm
python tools/amd_build/build_amd.py

export CMAKE_PREFIX_PATH="${CONDA_PREFIX:-'$(dirname $(which conda))/../'}:${CMAKE_PREFIX_PATH}"
python setup.py develop
2.2 源码编译安装 torch_npu 插件

源码物理机编译

编译安装适用于进行算子适配开发、CANN版本与PyTorch兼容适配场景,PyTorch 2.1.0

  • 安装依赖
bash 复制代码
apt-get install -y patch build-essential libbz2-dev libreadline-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev liblzma-dev m4 dos2unix libopenblas-dev git 
apt-get install -y gcc==10.2.0 cmake==3.18.0
  • 编译生成torch_npu插件的二进制安装包
bash 复制代码
# 下载对应PyTorch版本分支代码
git clone -b v2.1.0-6.0.rc3 https://gitee.com/ascend/pytorch.git 
cd pytorch

# 编译生成二进制安装包
# 指定Python版本编包方式,以Python3.9为例,其他Python版本请使用--python=3.8、--python3.10或--python3.11
bash ci/build.sh --python=3.9

在编译过程中报错:

这个报错在v6.0.rc1.alpha002-pytorch2.0.1版本中就存在:

在 issue 中看到:gcc 版本需要使用10.2.010.5.0 也可

bash 复制代码
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y gcc-10 g++-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10
sudo update-alternatives --config gcc

遇到新的报错:

看来只能用 docker 了

  • 安装pytorch/dist目录下生成的插件torch_npu包,如果使用非root用户安装,需要在命令后加--user
bash 复制代码
# 用户根据实际情况更改命令中的torch_npu包名
pip3 install --upgrade 

docker

  • 下载torch_npu源码
bash 复制代码
git clone https://gitee.com/ascend/pytorch.git -b v2.1.0-6.0.rc3 --depth 1  
  • 构建镜像
bash 复制代码
cd pytorch/ci/docker/ARM
docker build -t manylinux-builder:v1 .
  • 进入Docker容器,并将torch_npu源代码挂载至容器内
bash 复制代码
docker run -it -v /home/HwHiAiUser/code/pytorch:/home/HwHiAiUser/code/pytorch manylinux-builder:v1 bash
  • 编译生成二进制安装包
bash 复制代码
cd /home/HwHiAiUser/code/pytorch 
bash ci/build.sh --python=3.8
  • 在运行环境中安装生成的插件torch_npu包,如果使用非root用户安装,需要在命令后加--user
bash 复制代码
# 请用户根据实际情况更改命令中的torch_npu包名
pip3 install --upgrade dist/torch_npu-2.1.0.post8-cp39-cp39-linux_aarch64.whl
2.3 验证成功安装

验证是否安装成功,可执行如下命令:

bash 复制代码
python3 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);"

显示如下类似信息证明PyTorch框架与插件安装成功:

bash 复制代码
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')
相关推荐
余俊晖5 分钟前
多模态文档理解视觉token剪枝思路
人工智能·算法·剪枝·多模态
一RTOS一7 分钟前
从操作系统到具身智能,东土科技正加速构建自主可控产业链
人工智能·科技·鸿道intewell·鸿道操作系统·鸿道实时操作系统·国产嵌入式操作系统选型
余俊晖10 分钟前
多模态大模型OCR幻觉缓解思路:DianJin-OCR-R1通过“再看一眼”图像减轻幻觉
人工智能·ocr
柳安忆20 分钟前
idea生成数据集调研
人工智能·笔记
AnySpaceOne22 分钟前
笔记本电脑如何连接打印机?完整连接教程送上
学习·电脑
青春不败 177-3266-052023 分钟前
AI+Python驱动的无人机生态三维建模与碳储、生物量、LULC估算技术
人工智能·python·无人机·生态学·遥感·多光谱遥感
德育处主任32 分钟前
地表最强“慧眼”,给大模型戴上智能眼镜 PaddleOCR-VL
人工智能·机器学习·图像识别
AI浩36 分钟前
基于信息保留与细粒度特征聚合的无人机目标检测
人工智能·目标检测·无人机
dxnb2236 分钟前
Datawhale25年10月组队学习:math for AI+Task2线性代数
人工智能·学习·线性代数
数字化顾问1 小时前
AI+大数据时代:从架构重构看时序数据库的价值释放——关键概念、核心技巧与代码实践
人工智能