第2章 开发环境准备:CANN软件包与硬件环境搭建
说实话,环境搭建往往是整个项目里最磨人的环节。我见过不少团队,模型调得漂漂亮亮,结果卡在驱动和CANN版本匹配上,一折腾就是两天。所以这一章,咱们把CANN安装、Atlas 200/300/500的驱动固件,还有开发者套件的环境,一次性理清楚。
2.1 CANN 软件包:选对版本就成功了一半
CANN 的全称是“华为昇腾计算架构”,说白了就是昇腾芯片的“驱动+编译器+运行时”。我个人习惯,拿到新硬件第一件事就是去昇腾社区查版本配套表。你想想看,驱动、固件、CANN 版本对不上,后面跑模型全是坑。
| 硬件型号 | 推荐 CANN 版本 | 驱动版本 | 固件版本 |
|---|---|---|---|
| Atlas 200 DK | 7.0.0 / 7.0.RC1 | 23.0.3 | 1.0.12 |
| Atlas 300 (3000) | 6.3.RC2 | 22.0.2 | 1.0.10 |
| Atlas 500 边缘站 | 7.0.0 | 23.0.5 | 1.0.14 |
嗯,这里要注意:表格里的版本只是我最近一次项目用的。实际请以 昇腾社区 -> 版本配套表 为准。我曾经因为偷懒没查表,直接装了最新 CANN,结果驱动不认,硬是花了一下午回退。
2.2 安装 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 通信;固件是芯片内部的微码。我见过有人只装了驱动没装固件,跑模型时精度全乱套。记住:驱动 + 固件必须都装,且版本匹配。
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 卡,编译大模型时空间不够。
- 下载官方镜像(Ubuntu 20.04 aarch64 定制版)
- 使用
balenaEtcher或dd写入 SD 卡 - 插入 SD 卡,连接串口或 HDMI,上电启动
- 默认用户名
root,密码Mind@123(首次登录强制修改) - 安装 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 避坑指南 · 我曾经的教训
- 版本混搭:CANN 7.0 配驱动 22.0.x,编译时算子报错。老老实实查配套表。
- 环境变量遗漏:每次新开终端都要 source set_env.sh,否则
atc命令找不到。我后来直接写进/etc/profile。 - SD 卡速度慢:用普通卡烧录 Atlas 200 DK,启动要 5 分钟。换了 Extreme Pro 后,40 秒进系统。
- 固件升级失败:升级固件时断电,芯片变砖。必须用
--full模式,且保证电源稳定。
好了,环境准备这部分就这些。记住:版本配套、驱动固件都装上、环境变量别漏。做到这三点,开发环境基本稳了。