第3章 驱动与固件安装
驱动和固件,说白了就是让昇腾芯片“活”起来的东西。没有它们,你的NPU就是一坨高级硅片。我刚开始接触昇腾平台时,觉得装个驱动能有多难?结果第一次就在固件版本上栽了跟头……嗯,这一章咱们就把这些坑填平。
3.1 驱动包获取
驱动包去哪找?我个人习惯直接上昇腾社区官网的“软件包”页面。注意,别去第三方站点下,版本混乱不说,还可能带毒。
- 官方渠道:昇腾社区 → 软件中心 → 驱动与固件下载
- 版本匹配:根据你的CANN版本选配套驱动。比如CANN 7.0.x 对应驱动 23.0.x
- 文件命名:类似
Ascend-hdk-310p-npu-driver_23.0.1_linux-aarch64.run
💡 我的小经验:下载前先看一眼 release notes。我曾经因为没看,下了个不支持我芯片型号的驱动,白折腾半小时。
3.2 驱动安装流程
拿到.run文件后,安装其实就几步。但顺序错了容易出问题。我一般这么干:
- 检查系统:
uname -m确认是 aarch64 或 x86_64 - 给驱动包加执行权限:
chmod +x Ascend-hdk-*.run - 运行安装:
./Ascend-hdk-*.run --full --install - 等待进度条走完,一般3~5分钟
# 典型安装命令(以310P为例)
sudo ./Ascend-hdk-310p-npu-driver_23.0.1_linux-aarch64.run --full --install
⚠️ 注意:安装过程中不要中断终端或断电。我曾经在客户现场遇到断电,驱动写到一半,芯片差点变砖。后来只能进维护模式重刷。
安装完成后,建议重启一下系统。虽然有些模块可以动态加载,但我发现重启后设备节点更干净。
3.3 固件升级方法
固件和驱动是两回事。驱动是软件层,固件是芯片内部的微码。升级固件要更小心——搞不好就真变砖了。
- 获取固件包:同样从昇腾社区下载,文件名通常带
firmware字样 - 升级工具:使用
upgrade-tool或npu-smi的固件升级子命令 - 推荐方式:我个人偏爱用
npu-smi升级,更直观
# 使用 npu-smi 升级固件(示例)
npu-smi upgrade -t firmware -i 0 -f ./Ascend310P-firmware_23.0.1.run
升级过程中芯片会短暂离线,业务会中断。所以生产环境一定要窗口期操作。我记得有一次在测试环境升级固件,忘了停推理服务,结果模型推理全部报错……嗯,长记性了。
3.4 安装后验证(npu-smi)
装完驱动和固件,怎么知道成没成功?用 npu-smi 看一眼就明白了。这工具是昇腾的“任务管理器”,类似 NVIDIA 的 nvidia-smi。
🔍 验证三板斧:
npu-smi info—— 查看芯片型号、驱动版本、固件版本npu-smi health—— 检查芯片健康状态npu-smi topo—— 查看拓扑(多卡场景)
# 典型输出示例
npu-smi info
+----------------------------------------------------------------------------+
| npu-smi 23.0.1 Version: 23.0.1 |
+----------------------+---------------+--------------------------------------+
| NPU Name | Health | Power(W) Temp(C) |
| 0 310P | OK | 12.5 45 |
+----------------------+---------------+--------------------------------------+
如果看到 Health: OK,驱动和固件基本就稳了。如果显示 Unhealthy 或者找不到NPU,先检查驱动是否加载:lsmod | grep drv。
💡 避坑指南:我曾经遇到一次
npu-smi info 卡死,后来发现是内核模块版本和固件不匹配。重新安装匹配版本就好了。所以驱动和固件最好一起升级,别混搭。
嗯,驱动与固件安装这部分,说白了就是“下载-安装-验证”三步。但每一步都有细节。你想想看,如果驱动版本不对,后面CANN装得再漂亮也没用。所以这一章我建议你亲手操作一遍,哪怕在虚拟机里也行。