Skip to content

昇腾 NPU 运维指南

昇腾 NPU 运维指南

这篇文章面向需要在 openEuler 上手工部署昇腾环境的人,尤其是 Ascend 310P 这一类常见专机。

本文以一套实际可跑通的版本组合作为示例:

  • 硬件:Ascend 310P
  • 驱动:25.5.1
  • 固件:7.8.0.6.201
  • CANN:9.0.0 beta.1
  • PyTorch:2.8.0
  • torch_npu2.8.0.post2

版本号和下载链接变化很快,实际部署时请以官方发布页为准。本文重点是安装顺序、命令组织方式和常见坑。

参考文档

一句话安装顺序

1
driver -> firmware -> reboot -> npu-smi info -> cann-toolkit -> 配环境变量 -> ops -> nnal -> Python 依赖 -> torch -> torch_npu -> 验证

如果你维护的是专机专用环境,裸机直接装最省事;如果你在意环境隔离、可重复部署和迁移,直接上容器更省心。

1. 安装前说明

  • 下面命令主要针对 openEuler
  • 系统级组件建议用 root 安装:驱动、固件、CANN。
  • Python 生态建议切回普通用户安装:torchtorch_npu 以及相关依赖。
  • 本文统一使用官方提供的 .run 离线安装包,少折腾仓库兼容性问题。

2. 准备安装包

以下是本文示例使用的文件名:

1
2
3
4
5
-rwxr-xr-x.  1 user user 2.0G Mar  2 13:39 Ascend-cann-310p-ops_9.0.0-beta.1_linux-aarch64.run
-rwxr-xr-x. 1 user user 542M Mar 2 12:32 Ascend-cann-nnal_9.0.0-beta.1_linux-aarch64.run
-rwxr-xr-x. 1 user user 1.3G Mar 2 12:48 Ascend-cann-toolkit_9.0.0-beta.1_linux-aarch64.run
-rwxr-xr-x. 1 user user 154M Feb 13 16:41 Ascend-hdk-310p-npu-driver_25.5.1_linux-aarch64.run
-rwxr-xr-x. 1 user user 933K Feb 13 15:26 Ascend-hdk-310p-npu-firmware_7.8.0.6.201.run

直接切到 root 下载和安装会更顺手:

1
2
3
4
5
6
7
8
9
sudo -i

wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%209.0.T2/Ascend-cann-310p-ops_9.0.0-beta.1_linux-aarch64.run
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%209.0.T2/Ascend-cann-nnal_9.0.0-beta.1_linux-aarch64.run
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%209.0.T2/Ascend-cann-toolkit_9.0.0-beta.1_linux-aarch64.run
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Ascend%20HDK/Ascend%20HDK%2025.5.1/Ascend-hdk-310p-npu-driver_25.5.1_linux-aarch64.run
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Ascend%20HDK/Ascend%20HDK%2025.5.1/Ascend-hdk-310p-npu-firmware_7.8.0.6.201.run

chmod +x ./*.run

安装驱动前先补齐编译依赖:

1
2
yum makecache
yum install -y make dkms gcc kernel-headers-$(uname -r) kernel-devel-$(uname -r)

3. 安装驱动和固件

这里的顺序不要搞反:先装 driver,再装 firmware

1
2
3
./Ascend-hdk-310p-npu-driver_25.5.1_linux-aarch64.run --full --install-for-all
./Ascend-hdk-310p-npu-firmware_7.8.0.6.201.run --full
reboot

重启后先确认设备已经正常起来:

1
2
sudo -i
npu-smi info

如果 npu-smi info 都过不去,先别往后装 CANN 和 PyTorch,先把驱动层问题解决掉。

4. 安装 CANN

高版本 CANN 一般至少需要下面三类包:

  • toolkit
  • ops 算子包
  • nnal 加速包(这玩意儿不装也能跑)

4.1 安装 toolkit

1
2
yum install -y python3 python3-pip
./Ascend-cann-toolkit_9.0.0-beta.1_linux-aarch64.run --install

安装完成后,把 CANN 环境变量写进全局和用户 Shell 配置:

1
2
# /etc/profile
source /usr/local/Ascend/cann/set_env.sh
1
2
# /home/<你的用户名>/.bashrc 或 /home/<你的用户名>/.zshrc
source /usr/local/Ascend/cann/set_env.sh

当前会话里也要先手工加载一次:

1
source /usr/local/Ascend/cann/set_env.sh

4.2 安装 ops 算子包

1
./Ascend-cann-310p-ops_9.0.0-beta.1_linux-aarch64.run --install

4.3 安装 nnal 加速包

安装 nnal 之前,确认当前 Shell 已经正确 source /usr/local/Ascend/cann/set_env.sh,否则安装过程很容易直接失败。

1
2
source /usr/local/Ascend/cann/set_env.sh
./Ascend-cann-nnal_9.0.0-beta.1_linux-aarch64.run --install

nnal 安装完以后,同样把它的环境脚本加到用户 Shell 配置里:

1
source /usr/local/Ascend/nnal/asdsip/set_env.sh

也就是说,用户的 Shell 启动脚本最后通常会有这两行:

1
2
source /usr/local/Ascend/cann/set_env.sh
source /usr/local/Ascend/nnal/asdsip/set_env.sh

如果你后面还装了其他加速库,比如 ATB,处理方式也是一样:安装后把对应的 set_env.sh 一并写进 Shell 配置。

注意:如果你平时用的是 zsh/usr/local/Ascend/nnal/asdsip/set_env.sh 可能会踩官方脚本兼容性问题,必要时需要手工修补。

5. 安装运行依赖

先补齐常见编译和 Python 依赖:

1
2
sudo yum install -y gcc-c++
pip3 install attrs cython 'numpy>=1.19.2,<2.0' decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.20.0 scipy requests absl-py --user

然后用 ACL 简单确认运行时已经通了:

1
python3 -c "import acl; print(acl.get_soc_name())"

正常情况下会输出类似:

1
Ascend310P3

6. 安装 Ascend Extension for PyTorch

这一段建议切回普通用户执行,除非你已经决定整台机器都用 root 干活。

torch_npu 的版本选择取决于三个东西:

  • CANN 版本
  • Python 版本
  • PyTorch 版本

一般来说,CANN 越新,torch_npu 也要跟着选对应的新版本。最稳妥的方式是按官方兼容矩阵选。

6.1 先装基础依赖

1
pip3 install pyyaml wheel setuptools --user

6.2 安装 PyTorch

1
2
3
4
wget -O torch-2.8.0+cpu-cp39-cp39-manylinux_2_28_aarch64.whl \
"https://download.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp39-cp39-manylinux_2_28_aarch64.whl"

pip3 install ./torch-2.8.0+cpu-cp39-cp39-manylinux_2_28_aarch64.whl --user

6.3 安装 torch_npu

1
2
wget https://gitcode.com/Ascend/pytorch/releases/download/v7.3.0-pytorch2.8.0/torch_npu-2.8.0.post2-cp39-cp39-manylinux_2_28_aarch64.whl
pip3 install ./torch_npu-2.8.0.post2-cp39-cp39-manylinux_2_28_aarch64.whl --user

6.4 常见报错

如果安装或导入时报下面这类问题:

  • 找不到 google
  • 找不到 protobuf
  • protobuf 版本过高

可以先回退到:

1
pip3 install protobuf==3.20 --user

有些环境还会额外缺这个:

1
pip3 install importlib-metadata --user

6.5 安装后验证

1
python3 -c "import torch; import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);"

这个命令第一次跑会比较慢,不是卡死,而是在做初始化、预热和预编译。

走到这里,裸机环境基本就算配完了。

7. 可选:Ascend Docker Runtime

如果你打算把业务放进容器里跑,可以继续装 Ascend Docker Runtime。

先把 Docker 本体装好:

1
2
curl -fsSL https://get.docker.com -o get-docker.sh
sudo DOWNLOAD_URL=https://mirrors.ustc.edu.cn/docker-ce sh get-docker.sh

运行时安装包可从这里找:

安装方式类似:

1
2
3
./Ascend-docker-runtime_{version}_linux-{arch}.run --install
sudo systemctl daemon-reload
sudo systemctl restart docker

8. 常见坑总结

  • 驱动一定先于固件安装。
  • reboot 之后先跑 npu-smi info,确认设备层正常,再继续装上层软件。
  • toolkit 装完就先把环境变量配好,再装 opsnnal
  • torch_npu 不要乱配版本,它必须和 CANN + Python + PyTorch 对得上。
  • nnal 的环境脚本在 zsh 下不一定靠谱,踩坑很正常。
  • torch_npu 第一次执行很慢是正常现象,不要见慢就怀疑挂了。
  • 这类机器通常是专机专用,想要“优雅”就上容器,不必在裸机环境管理上过度追求洁癖。

About this Post

This post is written by KaranocaVe.

#昇腾 #Ascend #NPU #CANN #PyTorch #openEuler