4. Ascend CLI 工具入门
说实话,刚拿到 Atlas 200 DK 那会儿,我最先摸透的就是 Ascend CLI。你想想看,芯片跑没跑起来、温度高不高、日志有没有报错——这些全得靠它。这一章我就带你把它常用的命令捋一遍,以后你调试板子的时候,心里就有底了。
4.1 初识 Ascend CLI
Ascend CLI 是华为昇腾平台自带的命令行工具。说白了,它就是你和 NPU 之间的一座桥。我个人习惯一登录板子就先敲 ascend 然后按两下 Tab,看看有哪些子命令可用。
💡 小提示: 如果你刚刷完系统,记得先 source 环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh,不然 CLI 会找不到。
4.2 查看芯片状态 —— ascend-dmi -i
我最常用的就是 ascend-dmi -i。它能一口气告诉你芯片型号、频率、温度、当前功耗。有一次我在调试一个跑冒烟的模型,就是靠它发现 NPU 温度飙到了 85°C,赶紧加了散热。
# 查看芯片基本信息
ascend-dmi -i
# 输出示例(简化)
Device ID: 0
Chip Name: Ascend310
Chip Version: ...
Temperature: 62°C
Power: 12.5 W
你还可以用 ascend-dmi -t 跑一个简短的带宽测试,看看内存和 AI Core 是否正常。嗯,这里要注意:测试时芯片负载会瞬间拉高,别在生产环境乱跑。
4.3 日志信息 —— ascend-dmi -l 与日志路径
日志这东西,平时没人看,出问题的时候比亲妈还亲。我记得有一次模型加载失败,怎么查都找不到原因,最后用 ascend-dmi -l 看到了驱动层的报错,原来是固件版本不匹配。
# 查看最近日志摘要
ascend-dmi -l
# 查看完整驱动日志(需要 root)
tail -200 /var/log/ascend_seclog/ascend_*.log
⚠️ 避坑指南: 我曾经因为日志文件太大把 /var 分区撑爆过。建议定期清理:
sudo journalctl --vacuum-time=3d,或者写个 crontab 自动归档。
4.4 系统资源监控 —— npu-smi
如果你用过 NVIDIA 的 nvidia-smi,那 npu-smi 会让你倍感亲切。它能实时显示 NPU 利用率、内存占用、AI Core 负载。我个人习惯开一个 watch 窗口挂着:
# 每 2 秒刷新一次
watch -n 2 npu-smi info
# 输出示例
+-------------------+-----------------+------------+
| NPU Chip | Utilization | Memory |
+-------------------+-----------------+------------+
| 0 Ascend310 | 78% | 3.2/8 GB |
+-------------------+-----------------+------------+
你想想看,如果推理帧率突然下降,一看 NPU 利用率掉到 10%,八成是数据搬运卡住了,而不是芯片不行。
4.5 版本与固件管理 —— ascend-toolkit --version
版本对齐是嵌入式开发里最头疼的事。我建议你每次跑新模型前,先确认一下固件和驱动版本:
# 查看 toolkit 版本
ascend-toolkit --version
# 查看驱动版本
cat /usr/local/Ascend/driver/version.conf
📌 我的经验: 尽量保持驱动版本和 MindSpore 版本匹配。有一次我偷懒没升级驱动,结果模型转换报了一堆“op not supported”,折腾了两天才发现是版本不兼容。
4.6 常用命令速查表
| 命令 | 作用 | 常用参数 |
|---|---|---|
ascend-dmi -i | 芯片信息与健康状态 | -t 跑带宽测试 |
ascend-dmi -l | 查看驱动日志摘要 | -v 详细模式 |
npu-smi info | 实时资源利用率 | watch -n 1 持续刷新 |
ascend-toolkit --version | 查看 toolkit 版本 | — |
cat /version.conf | 驱动固件版本 | 路径在 driver 目录下 |
4.7 一个小综合例子
假设你刚部署了一个推理服务,想快速做一次“健康检查”:
# 1. 芯片是否 alive
ascend-dmi -i | grep "Temperature"
# 2. 日志有没有 error
ascend-dmi -l | grep -i error
# 3. 资源占用是否合理
npu-smi info | grep -E "Util|Memory"
# 4. 版本对不对
cat /usr/local/Ascend/driver/version.conf
把这四条写成一个脚本,我管它叫 health_check.sh。每次部署完先跑一遍,心里踏实很多。
🔧 补充技巧: 如果你觉得敲
ascend-dmi 太长,可以在 ~/.bashrc 里加个别名:alias admi='ascend-dmi'。省下来的时间喝口咖啡不香吗?