第2章 环境搭建与配置

昇腾驱动与固件安装 · CANN软件包安装 · MindSpore安装验证 · 环境变量配置

说实话,环境搭建这件事,看着琐碎,但恰恰是后续所有工作的地基。我见过太多同学因为驱动版本不对、CANN路径没配好,卡在第一步好几天。这一章,咱们就把这些坑一个一个填平。

环境搭建与配置 驱动与固件安装 CANN软件包安装 MindSpore安装验证 环境变量配置 npu-smi 确认 版本匹配检查 pip install 验证 ~/.bashrc 持久化 四步走:驱动 → CANN → MindSpore → 环境变量

2.1 昇腾驱动与固件安装

拿到一台昇腾服务器,第一件事就是装驱动和固件。我个人习惯先查一下当前机器的操作系统和内核版本,因为驱动对内核有严格依赖。你可以用 uname -r 和 cat /etc/os-release 看一眼。

驱动安装包通常叫 Ascend310-driver-xxx.run,固件叫 Ascend310-firmware-xxx.run。执行起来很简单:

# 添加执行权限并安装驱动
chmod +x Ascend310-driver-*.run
./Ascend310-driver-*.run --full

# 安装固件
chmod +x Ascend310-firmware-*.run
./Ascend310-firmware-*.run --full
⚠️ 注意: 安装驱动后必须重启机器。我曾经有一次偷懒没重启,结果 npu-smi 怎么都识别不到卡,折腾了半小时才发现是没 reboot。

装完后用 npu-smi info 验证。如果能看到芯片温度、内存等信息,说明驱动和固件都正常工作了。

2.2 CANN软件包安装

CANN 是昇腾的计算加速平台,说白了就是让 MindSpore 能跟 NPU 对话的桥梁。我建议下载与驱动版本配套的 CANN 包,版本号一定要对齐,否则后面跑模型会出各种奇怪错误。

安装步骤也不复杂:

# 解压
tar -xzf Ascend-cann-toolkit_*.tar.gz

# 执行安装脚本
./Ascend-cann-toolkit_*.run --install

# 默认安装到 /usr/local/Ascend/ascend-toolkit/ 下
💡 小技巧: 我个人习惯把 CANN 装到 /usr/local/Ascend 目录下,然后统一管理。如果你有多套 CANN 版本,可以用 --install-path 指定路径,方便切换。

安装完成后,检查一下关键目录是否存在:

ls -l /usr/local/Ascend/ascend-toolkit/latest

能看到 opp、atc、acllib 等子目录,就说明装好了。

2.3 MindSpore安装验证

MindSpore 的安装我推荐用 pip,简单直接。不过要注意,MindSpore 的版本必须和 CANN 版本、Python 版本、操作系统一一对应。你可以去 MindSpore 官网查版本匹配表,我把它简化了一下:

MindSpore 版本CANN 版本Python 版本推荐驱动版本
2.2.07.0.RC13.8 / 3.923.0.rc1
2.1.16.3.RC23.7 / 3.8 / 3.922.0.rc2
2.0.06.0.RC13.7 / 3.821.0.rc1

安装命令很简单:

pip install mindspore==2.2.0

装完之后,跑一个快速验证脚本:

import mindspore
from mindspore import context
context.set_context(device_target="Ascend")
print(mindspore.__version__)

如果没报错,并且能打印出版本号,恭喜你,环境已经通了。我记得第一次在昇腾上跑通这个脚本时,心里那块石头才算落地。

2.4 环境变量配置

环境变量是很多人容易忽略的一步。说白了,就是让系统知道 CANN 和 MindSpore 的库文件在哪。我习惯把这些配置写到 ~/.bashrc 里,这样每次登录终端自动生效。

# CANN 环境变量
export ASCEND_HOME=/usr/local/Ascend/ascend-toolkit/latest
export PATH=$ASCEND_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ASCEND_HOME/lib64:$LD_LIBRARY_PATH
export ASCEND_DEVICE_ID=0

# MindSpore 环境变量(可选,通常不需要额外配置)
export MS_DEVICE_TARGET=Ascend
🔑 关键点: 配置完后一定要 source ~/.bashrc 或者重新打开终端。我曾经帮同事排查问题,发现他配了环境变量但没 source,结果一直报找不到 libascendcl.so。

验证环境变量是否生效:

echo $ASCEND_HOME
echo $LD_LIBRARY_PATH

如果路径正确,就可以开始愉快的炼丹之旅了。

📌 避坑指南: 如果你同时装了多个 CANN 版本,记得在 ~/.bashrc 里只保留一个 ASCEND_HOME 指向。我曾经因为路径混乱,导致 atc 工具链调用错版本,编译算子时疯狂报错。