第2章 开发环境准备:CANN软件包与硬件环境搭建

说实话,环境搭建往往是整个项目里最磨人的环节。我见过不少团队,模型调得漂漂亮亮,结果卡在驱动和CANN版本匹配上,一折腾就是两天。所以这一章,咱们把CANN安装、Atlas 200/300/500的驱动固件,还有开发者套件的环境,一次性理清楚。

开发环境准备 · 核心逻辑 CANN 软件包 • 版本选择与下载 • 安装与环境变量 • 算子编译工具链 • 开发/运行模式 驱动 & 固件 • npu-smi 验证 • 固件升级流程 • 版本配套表 • 常见异常恢复 Atlas 200/300/500 • 开发者套件组装 • 系统烧录与启动 • SSH / 串口调试 • 散热与供电检查 三者版本必须严格配套,否则推理结果可能出错

2.1 CANN 软件包:选对版本就成功了一半

CANN 的全称是“华为昇腾计算架构”,说白了就是昇腾芯片的“驱动+编译器+运行时”。我个人习惯,拿到新硬件第一件事就是去昇腾社区查版本配套表。你想想看,驱动、固件、CANN 版本对不上,后面跑模型全是坑。

版本配套速查(以 Atlas 200/300/500 为例)
硬件型号推荐 CANN 版本驱动版本固件版本
Atlas 200 DK7.0.0 / 7.0.RC123.0.31.0.12
Atlas 300 (3000)6.3.RC222.0.21.0.10
Atlas 500 边缘站7.0.023.0.51.0.14

嗯,这里要注意:表格里的版本只是我最近一次项目用的。实际请以 昇腾社区 -> 版本配套表 为准。我曾经因为偷懒没查表,直接装了最新 CANN,结果驱动不认,硬是花了一下午回退。

2.2 安装 CANN:两种模式,别搞混

CANN 提供两种安装模式:开发模式 和 运行模式。开发模式包含头文件、编译工具、样例代码;运行模式只包含运行时库,体积小很多。我个人建议:在开发机上用开发模式,部署到边缘设备上用运行模式。

我习惯把 CANN 安装在 /usr/local/Ascend 下,然后设置环境变量。很多新手忘了 source /usr/local/Ascend/ascend-toolkit/set_env.sh,结果编译时找不到头文件。
# 以 CANN 7.0.0 开发模式安装为例
chmod +x Ascend-cann-toolkit_7.0.0_linux-x86_64.run
./Ascend-cann-toolkit_7.0.0_linux-x86_64.run --install --install-path=/usr/local/Ascend

# 设置环境变量(建议写入 ~/.bashrc)
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
source $ASCEND_HOME/bin/set_env.sh

安装完成后,用 npu-smi info 检查驱动是否正常。如果显示 NPU 芯片信息,恭喜,环境通了。如果报错“No devices”,多半是驱动或固件没装好。

2.3 驱动与固件安装:最容易翻车的地方

驱动和固件是两个东西。驱动是内核模块,负责与 NPU 通信;固件是芯片内部的微码。我见过有人只装了驱动没装固件,跑模型时精度全乱套。记住:驱动 + 固件必须都装,且版本匹配。

安装驱动前,务必确认系统内核版本。Ubuntu 20.04 和 22.04 的内核不同,驱动包也不一样。我曾经在 5.15 内核上装了 5.4 的驱动,直接黑屏。用 uname -r 查内核,再去社区下载对应驱动。
# 安装驱动(以 Atlas 200 DK 为例)
chmod +x Ascend-hdk-310p-npu-driver_23.0.3_linux-aarch64.run
./Ascend-hdk-310p-npu-driver_23.0.3_linux-aarch64.run --full

# 安装固件
chmod +x Ascend-hdk-310p-npu-firmware_1.0.12.run
./Ascend-hdk-310p-npu-firmware_1.0.12.run --full

# 重启后验证
npu-smi info

如果 npu-smi info 显示芯片但状态为“offline”,试试重新插拔电源。Atlas 200 DK 的供电要求 12V/3A,劣质电源适配器会导致固件加载失败。嗯,这都是我踩过的坑。

2.4 昇腾开发者套件(Atlas 200/300/500)环境搭建

Atlas 200 DK 是一块开发板,自带昇腾310芯片。拿到手后,第一步是烧录系统。官方提供一键烧录脚本,但要注意:SD 卡建议用 64GB 以上,Class 10 速度等级。我试过用 32GB 卡,编译大模型时空间不够。

快速搭建步骤(Atlas 200 DK)
  1. 下载官方镜像(Ubuntu 20.04 aarch64 定制版)
  2. 使用 balenaEtcher 或 dd 写入 SD 卡
  3. 插入 SD 卡,连接串口或 HDMI,上电启动
  4. 默认用户名 root,密码 Mind@123(首次登录强制修改)
  5. 安装 CANN 运行模式(参考 2.2 节)

Atlas 300 是 PCIe 加速卡,插到服务器上就行。注意:服务器电源功率要足够,一张 Atlas 300 功耗约 70W,多卡并行时注意散热。我有个客户把四张卡塞进 1U 机箱,结果频繁降频,后来换了 2U 机箱才解决。

Atlas 500 是边缘智能站,自带系统。拿到后接网线,通过 Web 界面配置 IP。我个人习惯用 SSH 连接,然后 npu-smi info 确认芯片状态。如果固件版本旧,用 ascend_install.sh 升级。

搭建完环境后,建议跑一下官方提供的 sample 样例(比如 ResNet50 推理)。这能验证整个链路是否正常。我每次换新硬件都会跑一遍,图个安心。

2.5 避坑指南 · 我曾经的教训

好了,环境准备这部分就这些。记住:版本配套、驱动固件都装上、环境变量别漏。做到这三点,开发环境基本稳了。