基于香橙派 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')
相关推荐
fthux3 小时前
RenoPit 能为普通业主做什么?看懂图纸、审查合同,提前发现装修坑
javascript·人工智能·ai·开源·github·chrome扩展·open source·edge扩展·firefox扩展
火山引擎开发者社区6 小时前
火山引擎混合云 veStack 智算平台 Day0 适配 Kimi K3
人工智能
RSABLOCKCHAIN6 小时前
AI Agents in LangGraph-2
人工智能·python
cd_949217217 小时前
哪些AI工具适合生成游戏开发用的3D道具模型?从道具草稿到引擎测试的选择方法
人工智能·3d
FII工业富联科技服务7 小时前
工业设备运维如何Agentic化?拆解Factory Brain的设备运维架构
大数据·运维·人工智能·架构·制造
糖果店的幽灵7 小时前
人已经用 WorkBuddy 找工作拿了面试,你还在一份份手工改简历
人工智能·面试·职场和发展·langgraph
qq29538 小时前
2026 财搭子决策模拟器:多智能体投研架构能力拆解
大数据·人工智能·架构
满怀冰雪9 小时前
12-PaddlePaddle, 飞桨, 分类模型, 训练循环, 损失函数, 优化器, cross_entropy, Adam
人工智能·深度学习·分类·paddlepaddle
冬奇Lab9 小时前
AI 评测系列(08):评测 CI/CD——持续质量门控
人工智能