华为昇腾910B 驱动安装与CANN环境配置完整指南
详解华为昇腾NPU的完整运维配置流程:Ascend驱动和固件安装、CANN工具链(Toolkit/Kernels)配置、torch_npu安装与验证、npu-smi常用命令、MindX DL容器化部署,以及常见安装报错处理方法,适合首次接触昇腾环境的运维工程师。
华为昇腾 910B 是目前国产 AI 芯片中生态最完整的产品,但其安装配置流程与 NVIDIA GPU 差异较大。本文从零开始,覆盖驱动、固件、CANN 工具链到 PyTorch 的完整配置链路。
昇腾软件栈架构
应用层: PyTorch / TensorFlow / MindSpore
↓
框架适配:torch_npu(PyTorch 昇腾插件)
↓
CANN: Compute Architecture for Neural Networks
包含:AscendCL API / 算子库 / 编译器 / Profiling 工具
↓
驱动层: Ascend HDK(Hardware Development Kit)
包含:驱动 + 固件(NPU Driver + NPU Firmware)
↓
硬件: Ascend 910B NPU
一、系统准备
# 支持的操作系统(2025年)
# - Ubuntu 20.04 / 22.04 LTS
# - CentOS 7.6+(部分支持)
# - EulerOS 2.9+(推荐,华为原生)
# - openEuler 22.03 LTS
# 检查系统信息
cat /etc/os-release
uname -r # 内核版本(建议 5.10+)
# 检查是否识别到 NPU 设备
lspci | grep -i ascend
# 0000:01:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Ascend 910B
# 检查 IOMMU 状态(建议关闭或设为 passthrough)
cat /proc/cmdline | grep iommu
# 安装依赖
apt-get update
apt-get install -y gcc g++ make python3 python3-pip \
python3-dev libc6-dev libssl-dev curl wget unzip
# 创建昇腾专用用户(推荐,不用 root 运行推理)
useradd -m -d /home/HwHiAiUser -s /bin/bash HwHiAiUser
二、安装驱动和固件
昇腾需要先安装固件(Firmware),再安装驱动(Driver),顺序不能反。
# 从华为开发者网站下载(需注册账号)
# https://ascend.huawei.com/#/hardware/firmware-drivers
# 典型文件名(以 910B + CANN 8.0 为例):
# Ascend-hdk-910b-npu-firmware_7.3.0.1.241_linux-aarch64.run
# Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run
# 安装固件
chmod +x Ascend-hdk-910b-npu-firmware_*.run
./Ascend-hdk-910b-npu-firmware_*.run --full
# 安装驱动
chmod +x Ascend-hdk-910b-npu-driver_*.run
./Ascend-hdk-910b-npu-driver_*.run --full
# 安装完成后重启
reboot
# 重启后验证驱动
npu-smi info
# +------------------------------------------------------------------------------------+
# | npu-smi 24.1.rc3 Version: 24.1.rc3 |
# +---------------------------+---------------+--------------------------------------+
# | NPU Name | Health | Power(W) Temp(C) Hugepages-Usage |
# | Chip | Bus-Id | AICore(%) Memory-Usage(MB) |
# |===========================+===============+======================================|
# | 0 910B | OK | 103.6 45 0 / 0 |
# | 0 | 0000:01:00.0 | 0 0 / 65536 |
# +---------------------------+---------------+--------------------------------------+
# 查看所有 NPU 设备
npu-smi info -l # 列出所有设备
# 检查驱动版本
cat /proc/driver/npu/version 2>/dev/null || npu-smi info -t board -i 0
三、安装 CANN 工具链
CANN 分两个包:Toolkit(开发工具、头文件)和 Kernels(算子库)。
# 下载 CANN 包(同一版本需匹配)
# Ascend-cann-toolkit_8.0.RC3_linux-aarch64.run
# Ascend-cann-kernels-910b_8.0.RC3_linux-aarch64.run
# 安装 Toolkit(普通用户安装到 /home/HwHiAiUser/Ascend)
su - HwHiAiUser
chmod +x Ascend-cann-toolkit_*.run
./Ascend-cann-toolkit_*.run --install --install-path=/home/HwHiAiUser/Ascend
# 安装 Kernels(算子库,指定芯片型号)
chmod +x Ascend-cann-kernels-910b_*.run
./Ascend-cann-kernels-910b_*.run --install --install-path=/home/HwHiAiUser/Ascend
# 配置环境变量(加入 ~/.bashrc)
cat >> ~/.bashrc << 'EOF'
# CANN 环境变量
source /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh
export LD_LIBRARY_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/latest/lib64:$LD_LIBRARY_PATH
export ASCEND_TOOLKIT_HOME=/home/HwHiAiUser/Ascend/ascend-toolkit/latest
EOF
source ~/.bashrc
# 验证 CANN 安装
python3 -c "import acl; print('CANN OK')"
# 或者
ls $ASCEND_TOOLKIT_HOME/bin/
四、安装 PyTorch + torch_npu
# torch_npu 版本需与 PyTorch 版本严格对应
# 对应关系(2025年 CANN 8.0):
# torch 2.1.0 → torch_npu 2.1.0.post12
# torch 2.3.1 → torch_npu 2.3.1.post2
pip3 install torch==2.3.1 torchvision==0.18.1 --index-url https://download.pytorch.org/whl/cpu
# 安装 torch_npu(Ascend PyTorch 插件)
pip3 install torch-npu==2.3.1.post2
# 安装 apex(混合精度训练,可选但推荐)
pip3 install apex
# 验证 NPU 可用
python3 << 'EOF'
import torch
import torch_npu
print(f"PyTorch 版本: {torch.__version__}")
print(f"torch_npu 版本: {torch_npu.__version__}")
print(f"NPU 可用: {torch.npu.is_available()}")
print(f"NPU 数量: {torch.npu.device_count()}")
print(f"当前 NPU: {torch.npu.current_device()}")
# 简单测试
x = torch.randn(3, 3).npu()
y = torch.randn(3, 3).npu()
z = x @ y
print(f"矩阵乘法结果 shape: {z.shape}")
print("✅ NPU 运算正常")
EOF
五、npu-smi 常用命令
# 实时监控(类似 nvidia-smi -l 1)
watch -n 1 npu-smi info
# 查看指定 NPU 详情
npu-smi info -i 0 # 查看 NPU 0 的信息
npu-smi info -i 0 -t board # 查看硬件信息(序列号、固件版本)
npu-smi info -i 0 -t memory # 查看显存使用
# 查看 NPU 进程(哪些进程在用 NPU)
npu-smi info -t proc
# 查看温度和功耗
npu-smi info -t temp
npu-smi info -t power
# 查看 AICore 利用率
npu-smi info -t common
# 性能模式设置
npu-smi set -i 0 -t power-mode -v 1 # 高性能模式
npu-smi set -i 0 -t power-mode -v 0 # 节能模式
# 重置 NPU(慎用,会中断所有任务)
npu-smi reset -i 0
六、容器化部署(Docker)
# 昇腾官方基础镜像
# https://hub.docker.com/r/ascendai/cann
# 运行昇腾容器(需要挂载设备和驱动)
docker run -it --rm \
--device=/dev/davinci0 \ # NPU 设备(有几块挂几个)
--device=/dev/davinci_manager \ # NPU 管理设备
--device=/dev/hisi_hdc \ # HDC 设备
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \ # 驱动只读挂载
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi:ro \ # npu-smi 工具
ascendai/cann:8.0.RC3-ubuntu22.04-aarch64 \
bash
# docker-compose 示例
cat << 'EOF' > docker-compose.yml
version: '3.8'
services:
ascend-app:
image: ascendai/cann:8.0.RC3-ubuntu22.04-aarch64
devices:
- /dev/davinci0:/dev/davinci0
- /dev/davinci1:/dev/davinci1
- /dev/davinci_manager:/dev/davinci_manager
- /dev/hisi_hdc:/dev/hisi_hdc
volumes:
- /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro
- /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi:ro
- ./workspace:/workspace
environment:
- ASCEND_VISIBLE_DEVICES=0,1 # 指定可见 NPU
working_dir: /workspace
command: python3 train.py
EOF
七、常见安装问题
# 问题1:npu-smi 提示 "Failed to get device number"
# 原因:驱动未加载或 NPU 未被识别
dmesg | grep -i ascend # 查看内核日志
lsmod | grep drv # 检查驱动模块是否加载
# 解决:检查固件是否先于驱动安装,或重新执行驱动安装
# 问题2:CANN 安装后 "libascendcl.so: cannot open shared object file"
# 原因:环境变量未生效
source /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh
# 解决:确保 ~/.bashrc 中有 source 语句,或重新登录
# 问题3:torch.npu.is_available() 返回 False
# 检查步骤:
python3 -c "import torch_npu; print(torch_npu.__version__)" # 是否安装
npu-smi info # NPU 是否正常
# 常见原因:torch_npu 版本与 PyTorch 版本不匹配
# 问题4:运行时 "HcclCommInitRootInfo failed"
# 原因:多卡通信初始化失败,通常是 HCCS 链路问题
npu-smi info -i 0 -t link # 检查 HCCS 链路状态
# 解决:检查服务器的 HCCS 连接线缆
# 问题5:内存溢出(显存不足)
# 昇腾内存管理与 NVIDIA 不同,需要设置内存分配策略
import torch_npu
torch.npu.set_per_process_memory_fraction(0.9) # 最大使用 90%
# 或者通过环境变量
export PYTORCH_NPU_ALLOC_CONF=max_split_size_mb:512
小结
昇腾 910B 的安装配置比 NVIDIA GPU 复杂,核心差异在于:需要固件+驱动分开安装(顺序严格),CANN 工具链独立安装(不像 CUDA 一体化),以及 torch_npu 版本与 PyTorch 版本必须精确匹配。运维时最常用的是 npu-smi info 查看 NPU 状态,容器化部署需要挂载设备文件和驱动目录。建议维护一个标准化的 Ansible Playbook 来统一管理集群中所有节点的驱动和 CANN 版本,避免版本漂移导致的兼容性问题。
