npu-basics
概述
昇腾 NPU 日常运维核心命令集,覆盖设备状态监控、版本查询、进程管理、设备指定和日志排查。
适用场景
- 查看 NPU 运行状态(使用率、温度、功耗、显存)
- 查询驱动/固件/CANN 版本信息
- 指定使用特定 NPU 设备
- 排查 NPU 异常、查看占用进程
- 容器场景下挂载 NPU 设备
运行环境
- 平台:Linux(已安装昇腾 NPU 驱动)
- 远程场景:需要 SSH 远程执行能力(在可用 skill 中寻找提供此功能的工具)
流程步骤
一、NPU 状态与监控(npu-smi)
- 查看所有 NPU 总体状态:
npu-smi info
输出含:芯片ID、温度、功耗、内存使用量、AI Core 利用率。
- 实时监控(每秒刷新):
watch -n 1 npu-smi info
- 查看设备健康状态:
npu-smi info -t health -i <设备ID>
- 查看板卡详细信息:
npu-smi info -t board -i <设备ID>
- 列出可用 NPU 设备:
ls /dev | grep davinci
设备名格式:/dev/davinci0, /dev/davinci1 等。
二、版本查询(驱动、固件、CANN)
- NPU 驱动版本:
cat /usr/local/Ascend/driver/version.info
- NPU 固件版本:
cat /usr/local/Ascend/firmware/version.info
- CANN 版本(路径因安装配置而异):
# 方法1:在默认路径查找
cat /usr/local/Ascend/ascend-toolkit/latest/ascend_toolkit_install.info 2>/dev/null
# 方法2:自动查找(兼容自定义安装路径)
find /usr/local/Ascend /home -name "ascend_toolkit_install.info" -maxdepth 5 2>/dev/null | head -3
# 方法3:通过 set_env.sh 定位
find /usr/local/Ascend /home -name "set_env.sh" -path "*/ascend-toolkit/*" -maxdepth 5 2>/dev/null
三、指定 NPU 设备
通过环境变量控制进程可见的 NPU:
# 仅使用第0和第1号NPU
export ASCEND_RT_VISIBLE_DEVICES=0,1
# 仅使用第2号NPU
export ASCEND_RT_VISIBLE_DEVICES=2
# 查看当前设置
echo $ASCEND_RT_VISIBLE_DEVICES
注意:设置后,进程内的设备编号会重新从0开始映射。
四、进程与内存管理
- 查看占用 NPU 的进程:
npu-smi info watch
(部分版本参数可能不同,可用 npu-smi info -h 查看具体用法)
- 先判断是否为异常占用,再决定是否清理 Python 进程:
ps -ef | grep python | grep -v grep
npu-smi info
先对照 ps / pgrep 和 npu-smi info 判断:
- 如果能看到明确在跑的训练任务,而且无法确认是否属于当前任务或残余任务,不能直接
pkill,应先询问用户。 - 如果
npu-smi info显示有占用,但ps/pgrep已看不到对应 Python 进程,或确认是上一次异常退出遗留的残余训练进程,才可执行下面的清理。
- 仅在确认是异常占用时,清理残余 Python 训练进程(出现 HCCL 端口冲突、残余显存占用、幽灵任务时使用):
pkill -9 python
sleep 3
npu-smi info
如果 npu-smi info 里仍有残余占用,但 ps / pgrep 已看不到对应 PID,说明可能只剩 NPU 侧残留上下文,这时再继续做设备级 reset 或服务级清理。
- 重置 NPU 设备(卡死/异常时使用,⚠️ 会中断所有占用进程,应先询问用户):
npu-smi set -t reset -i <设备ID> -c <芯片ID>
五、容器(Docker)运行相关
挂载 NPU 设备到容器的最小挂载集合:
docker run --rm -it \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
<镜像名> bash
具体挂载设备文件以官方文档为准,推荐使用 ascend-docker-cli 或配置 ascend runtime。
六、日志排查
- NPU 设备日志默认路径:
ls /var/log/npu/slog/
- 一键收集日志:
/usr/local/Ascend/driver/tools/msnpureport -a
检查清单
-
npu-smi info能正常输出设备信息 - 驱动/固件版本文件可读取
- CANN set_env.sh 路径已确认
-
ASCEND_RT_VISIBLE_DEVICES设置后设备隔离生效