昇腾 NPU 运维指南
这篇文章面向需要在
openEuler上手工部署昇腾环境的人,尤其是Ascend 310P这一类常见专机。本文以一套实际可跑通的版本组合作为示例:
- 硬件:
Ascend 310P- 驱动:
25.5.1- 固件:
7.8.0.6.201- CANN:
9.0.0 beta.1- PyTorch:
2.8.0torch_npu:2.8.0.post2版本号和下载链接变化很快,实际部署时请以官方发布页为准。本文重点是安装顺序、命令组织方式和常见坑。
参考文档
- CANN 官方安装指南:https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/900beta1/softwareinst/instg/instg_0000.html?Mode=PmIns&InstallType=local&OS=openEuler
- Ascend Extension for PyTorch:https://www.hiascend.com/document/detail/zh/Pytorch/
- 驱动与固件下载页:https://www.hiascend.com/hardware/firmware-drivers/community
一句话安装顺序
1 | driver -> firmware -> reboot -> npu-smi info -> cann-toolkit -> 配环境变量 -> ops -> nnal -> Python 依赖 -> torch -> torch_npu -> 验证 |
如果你维护的是专机专用环境,裸机直接装最省事;如果你在意环境隔离、可重复部署和迁移,直接上容器更省心。
1. 安装前说明
- 下面命令主要针对
openEuler。 - 系统级组件建议用
root安装:驱动、固件、CANN。 - Python 生态建议切回普通用户安装:
torch、torch_npu以及相关依赖。 - 本文统一使用官方提供的
.run离线安装包,少折腾仓库兼容性问题。
2. 准备安装包
以下是本文示例使用的文件名:
1 | -rwxr-xr-x. 1 user user 2.0G Mar 2 13:39 Ascend-cann-310p-ops_9.0.0-beta.1_linux-aarch64.run |
直接切到 root 下载和安装会更顺手:
1 | sudo -i |
安装驱动前先补齐编译依赖:
1 | yum makecache |
3. 安装驱动和固件
这里的顺序不要搞反:先装 driver,再装 firmware。
1 | ./Ascend-hdk-310p-npu-driver_25.5.1_linux-aarch64.run --full --install-for-all |
重启后先确认设备已经正常起来:
1 | sudo -i |
如果 npu-smi info 都过不去,先别往后装 CANN 和 PyTorch,先把驱动层问题解决掉。
4. 安装 CANN
高版本 CANN 一般至少需要下面三类包:
toolkitops算子包nnal加速包(这玩意儿不装也能跑)
4.1 安装 toolkit
1 | yum install -y python3 python3-pip |
安装完成后,把 CANN 环境变量写进全局和用户 Shell 配置:
1 | # /etc/profile |
1 | # /home/<你的用户名>/.bashrc 或 /home/<你的用户名>/.zshrc |
当前会话里也要先手工加载一次:
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 | source /usr/local/Ascend/cann/set_env.sh |
nnal 安装完以后,同样把它的环境脚本加到用户 Shell 配置里:
1 | source /usr/local/Ascend/nnal/asdsip/set_env.sh |
也就是说,用户的 Shell 启动脚本最后通常会有这两行:
1 | source /usr/local/Ascend/cann/set_env.sh |
如果你后面还装了其他加速库,比如 ATB,处理方式也是一样:安装后把对应的 set_env.sh 一并写进 Shell 配置。
注意:如果你平时用的是
zsh,/usr/local/Ascend/nnal/asdsip/set_env.sh可能会踩官方脚本兼容性问题,必要时需要手工修补。
5. 安装运行依赖
先补齐常见编译和 Python 依赖:
1 | sudo yum install -y gcc-c++ |
然后用 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 | wget -O torch-2.8.0+cpu-cp39-cp39-manylinux_2_28_aarch64.whl \ |
6.3 安装 torch_npu
1 | 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 |
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 | curl -fsSL https://get.docker.com -o get-docker.sh |
运行时安装包可从这里找:
安装方式类似:
1 | ./Ascend-docker-runtime_{version}_linux-{arch}.run --install |
8. 常见坑总结
- 驱动一定先于固件安装。
reboot之后先跑npu-smi info,确认设备层正常,再继续装上层软件。toolkit装完就先把环境变量配好,再装ops和nnal。torch_npu不要乱配版本,它必须和CANN + Python + PyTorch对得上。nnal的环境脚本在zsh下不一定靠谱,踩坑很正常。torch_npu第一次执行很慢是正常现象,不要见慢就怀疑挂了。- 这类机器通常是专机专用,想要“优雅”就上容器,不必在裸机环境管理上过度追求洁癖。