2.5 环境部署:驱动/固件/CANN 安装与昇腾容器化
从驱动、固件到 CANN Toolkit 的完整安装路径,掌握昇腾环境的三件套、环境变量配置与昇腾容器化部署方案,走通 AI 工程师上昇腾的第一步
在昇腾上写第一行代码之前,你得先有一台「能用」的昇腾环境。这一步劝退了很多人——不是因为它难,而是因为昇腾环境有三件套(驱动、固件、CANN),版本必须互相匹配,任何一个不匹配,npu-smi info 报错、程序起不来,而且报错信息往往不直观。这篇文章把安装链路和验证清单讲清楚,让你少踩坑。
📑 目录
1. 昇腾环境的三件套
一套可用的昇腾环境由三部分组成,缺一不可:
| 组件 | 作用 | 类比 CUDA 生态 |
|---|---|---|
| 固件(Firmware) | 芯片底层的微码与启动程序,跟随 Atlas 服务器/加速卡一起管理 | 相当于显卡的 vBIOS |
| 驱动(Driver) | 让操作系统能管理 NPU 设备,提供 /dev/davinci* 设备节点 | NVIDIA 驱动 |
| CANN Toolkit | 编译器、运行时、算子库、框架适配的完整软件栈 | CUDA Toolkit |
其中「驱动 + 固件」合称 Ascend HDK(Huawei Development Kit),由华为提供安装包;CANN Toolkit 独立安装。三者版本有配套关系,安装前先查官方的「驱动固件与 CANN 版本配套表」。
⚠️ 铁律:版本必须配套。驱动版本和 CANN 版本错位是昇腾环境最经典的故障源。查配套表以昇腾社区「CANN 版本配套」页面为准。
2. 安装前的准备工作
动手前先确认三件事,能省掉一半的排障时间:
- 硬件可识别:开机后确认主板/服务器上的 NPU 能被 BIOS 识别(Atlas 服务器或加速卡插槽正常)。
- OS 与内核兼容:昇腾对操作系统和内核版本有明确支持列表(如 openEuler、Ubuntu、CentOS 的部分版本)。安装前先核对 OS 版本。
- 下载正确的安装包:在昇腾社区软件下载页获取与硬件型号、OS 匹配的:
- 驱动安装包(
Ascend-hdk-xxx_linux-xxx.run) - 固件安装包(一般随驱动一起或独立包)
- CANN 工具包(
Ascend-cann-toolkit_xxx.run)
- 驱动安装包(
注意:训练环境请安装「训练」套件、推理环境按需安装「推理」套件,套件类型别装反。
3. 安装顺序与步骤
标准顺序是 先固件、再驱动、最后 CANN(部分新版本把固件驱动合并成一个包)。以通用形态演示:
# 1. 固件安装(以 .run 包为例,需 root 权限)
./Ascend-hdk-xxx-firmware.run --install
# 2. 驱动安装
./Ascend-hdk-xxx-driver.run --install
# 3. 安装后立刻验证设备是否被识别
npu-smi info
驱动固件装好后,npu-smi info 应能看到芯片信息。如果这一步就报错,先别装 CANN——说明硬件层没通,后面的所有问题都会被放大。
接着安装 CANN Toolkit:
# 4. CANN 工具包安装
./Ascend-cann-toolkit_xxx.run --install
# 5. 加载环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
说明:具体安装包名、
--install参数与安装路径在不同版本略有差异,请以昇腾社区官方安装指南为准。.run包也可用--full、--uninstall等参数管理安装状态。
4. 环境变量与多套件共存
CANN 安装后,环境变量是关键:
ASCEND_HOME_PATH:指向 CANN 安装路径(通常/usr/local/Ascend/ascend-toolkit/latest)。- 通过
source /usr/local/Ascend/ascend-toolkit/set_env.sh一次性加载全部变量。 - 驱动相关工具链在
/usr/local/Ascend/driver,容器场景需要单独映射。
一台机器可以共存多个 CANN 版本,latest 是指向当前激活版本的软链。切换版本就是改 ASCEND_HOME_PATH 或重新 source 对应版本的 set_env.sh。
建议:把
source set_env.sh写进~/.bashrc,避免每次手动加载。多用户场景注意环境变量隔离,别互相污染。
5. 昇腾容器化方案
容器是昇腾上更推荐的环境隔离方式,尤其是多人共用服务器时。昇腾官方提供 Ascend Docker Runtime,让容器内直接使用 NPU 设备。
核心思路:把驱动层的设备节点和驱动库映射进容器,容器内只装 CANN。因为驱动跟内核绑定,容器不能重装驱动;CANN 是用户态软件,装进镜像即可。
# 启动昇腾容器(示意,设备映射以官方文档为准)
docker run --rm -it \
--device /dev/davinci0 \
--device /dev/davinci_manager \
--device /dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
ascend-ai-image bash
容器内同样需要 source set_env.sh,然后 npu-smi info 验证设备是否透传成功。
说明:昇腾容器镜像由官方维护(昇腾社区「软件」页可下载 AI 容器镜像),推荐直接用官方镜像而不是自己从零构建,能避免大量版本匹配问题。
6. 安装验证清单
装完之后按这个清单逐项打勾:
| 检查项 | 命令/方法 | 通过标准 |
|---|---|---|
| 设备可见 | npu-smi info | 能看到芯片、健康状态 OK |
| 版本配套 | npu-smi info 与配套表对照 | 驱动/CANN 版本在配套范围内 |
| 环境变量生效 | echo $ASCEND_HOME_PATH | 指向 CANN 路径 |
| CANN 可执行 | python3 -c "import acl" 或跑一个最小程序 | 无报错 |
| 框架就绪 | import torch_npu / MindSpore 验证脚本 | 能打印 NPU 信息 |
实操建议:把「验证」写成一个脚本固化下来,换机器、换版本时跑一遍,比肉眼检查可靠得多。
总结
- 昇腾环境 = 固件 + 驱动 + CANN Toolkit 三件套,版本必须配套,配套关系以官方为准。
- 安装顺序:固件 → 驱动 →
npu-smi验证 → CANN →source set_env.sh。 - 容器化用 Ascend Docker Runtime:驱动映射进容器、CANN 装进镜像,用官方镜像最省心。
- 排障第一原则:先确认硬件层(npu-smi)通不通,再谈软件层。