3. 环境搭建与验证

硬件安装、驱动与CANN安装、环境变量配置、使用npu-smi工具验证。

硬件安装 驱动 + CANN 环境变量 npu-smi 验证 环境搭建四步走 · 每一步都踩过坑,才敢这么讲

3.1 硬件安装——别小看这一步

拿到Atlas 300I推理卡,第一件事不是插上去就完事。我见过不少新手,卡插好了,灯也亮了,但系统死活认不到设备。为什么?多半是PCIe槽位或者供电的问题。

  • 物理安装:确保服务器断电,把卡插到PCIe x16插槽(建议用靠近CPU的槽位,信号质量好)。
  • 供电检查:部分服务器需要额外6-pin供电,不插的话卡能亮但跑不了高负载。我之前在项目里遇到过,推理卡跑10分钟就掉卡,查了半天发现供电线松了。
  • 散热空间:卡与卡之间留一个槽位,别贴太紧。300I的散热鳍片很密,堵死了温度直接飙到85°C。
💡 我个人习惯:装好后先不盖机箱盖,通电看卡上的指示灯是否常绿。如果红灯闪烁,先查供电和PCIe接触。

3.2 驱动与CANN安装——版本匹配是命门

驱动和CANN的版本必须严格对应。昇腾的版本号体系有点绕,我刚开始也搞混过。记住一个原则:驱动版本 ≥ CANN版本,且大版本一致。

举个例子,如果你用CANN 7.0.RC1,驱动至少要用 23.0.RC1 以上。我踩过最深的坑就是驱动装成22.0.x,CANN是7.0,结果模型加载直接报错“runtime version mismatch”。

安装步骤(以Ubuntu 20.04 x86_64为例):
# 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多章你会非常顺。我曾经在一个客户现场,因为驱动版本不对,折腾了一整天。后来我把版本对照表打印出来贴在工位上,再也没出过问题。