第3章 环境搭建与验证
硬件安装、驱动与CANN安装、环境变量配置、使用npu-smi工具验证。
3.1 硬件安装——别小看这一步
拿到Atlas 300I推理卡,第一件事不是插上去就完事。我见过不少新手,卡插好了,灯也亮了,但系统死活认不到设备。为什么?多半是PCIe槽位或者供电的问题。
- 物理安装:确保服务器断电,把卡插到PCIe x16插槽(建议用靠近CPU的槽位,信号质量好)。
- 供电检查:部分服务器需要额外6-pin供电,不插的话卡能亮但跑不了高负载。我之前在项目里遇到过,推理卡跑10分钟就掉卡,查了半天发现供电线松了。
- 散热空间:卡与卡之间留一个槽位,别贴太紧。300I的散热鳍片很密,堵死了温度直接飙到85°C。
3.2 驱动与CANN安装——版本匹配是命门
驱动和CANN的版本必须严格对应。昇腾的版本号体系有点绕,我刚开始也搞混过。记住一个原则:驱动版本 ≥ CANN版本,且大版本一致。
举个例子,如果你用CANN 7.0.RC1,驱动至少要用 23.0.RC1 以上。我踩过最深的坑就是驱动装成22.0.x,CANN是7.0,结果模型加载直接报错“runtime version mismatch”。
# 1. 安装驱动(.run文件)
chmod +x Ascend310-driver-xxx.run
./Ascend310-driver-xxx.run --full --install
# 2. 安装CANN(昇腾AI处理器配套软件包)
chmod +x Ascend-cann-toolkit_xxx.run
./Ascend-cann-toolkit_xxx.run --install --install-for-all
# 3. 安装后检查
npu-smi info # 如果能列出卡信息,驱动就对了
安装过程中如果提示缺少依赖,比如libnuma-dev、dkms,直接用apt装上就行。别跳过,跳过之后驱动加载会失败。
modprobe drv_pcie 手动加载内核模块。我曾经忘了重启,折腾了半小时才发现。
3.3 环境变量配置——让系统找到CANN
装完CANN,如果不配环境变量,你连ascendc都跑不起来。说白了,系统不知道你的CANN装在哪。
我个人习惯把下面这段加到 ~/.bashrc 里,一劳永逸:
# CANN 环境变量(根据实际安装路径调整)
export ASCEND_HOME=/usr/local/Ascend
export PATH=$ASCEND_HOME/ascend-toolkit/latest/bin:$PATH
export LD_LIBRARY_PATH=$ASCEND_HOME/ascend-toolkit/latest/lib64:$LD_LIBRARY_PATH
export ASCEND_DEVICE_ID=0 # 默认使用0号卡
export NPU_HOST_LIB=$ASCEND_HOME/ascend-toolkit/latest/lib64
# 如果使用MindSpore或PyTorch适配,还需要添加:
export PYTHONPATH=$ASCEND_HOME/ascend-toolkit/latest/python/site-packages:$PYTHONPATH
然后 source ~/.bashrc 让它生效。你可以在终端敲 echo $ASCEND_HOME 验证,如果输出路径就对了。
ASCEND_DEVICE_ID 为0-7,但建议在代码里动态指定,别写死。
3.4 使用npu-smi验证——一切就绪的信号
环境配好之后,最直观的验证就是 npu-smi 工具。它就像NVIDIA的nvidia-smi,但专为昇腾设计。
运行一下:
npu-smi info
你会看到类似下面的输出(我简化了关键行):
+-------------------+-----------------+---------------+
| NPU Name | Health | Power(W) |
+-------------------+-----------------+---------------+
| 0 Ascend310 | OK | 65.0 |
+-------------------+-----------------+---------------+
如果Health显示“OK”,恭喜你,环境搭建成功。如果显示“Warning”或者“Error”,先检查驱动是否加载,再查CANN版本。
我还常用 npu-smi watch -d 1 实时看温度、功耗和显存占用。调试推理性能时特别有用。
- ✅
npu-smi info能列出卡 - ✅
ascendc --version显示CANN版本 - ✅ 运行一个简单的AscendCL示例(比如矩阵加法)不报错
3.5 避坑指南——我替你试过的错
- 驱动装完但npu-smi找不到卡:大概率是PCIe驱动没加载。执行
lsmod | grep drv,如果没有输出,手动modprobe drv_pcie。 - CANN安装后命令行找不到:环境变量没生效。检查
~/.bashrc或/etc/profile,确认路径写对了。 - 多卡环境下npu-smi只显示一张卡:检查PCIe链路是否完整,或者用
lspci | grep Huawei看硬件是否都被识别。
嗯,环境搭建这部分看起来琐碎,但基础打好了,后面20多章你会非常顺。我曾经在一个客户现场,因为驱动版本不对,折腾了一整天。后来我把版本对照表打印出来贴在工位上,再也没出过问题。