4. Ascend CLI 工具入门

说实话,刚拿到 Atlas 200 DK 那会儿,我最先摸透的就是 Ascend CLI。你想想看,芯片跑没跑起来、温度高不高、日志有没有报错——这些全得靠它。这一章我就带你把它常用的命令捋一遍,以后你调试板子的时候,心里就有底了。

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'。省下来的时间喝口咖啡不香吗?