昇腾 NPU 监控工具选型:从 npu-smi 到 nputop 与集群可观测性
整理窗口:北京时间 2026-09-15 06:00—2026-09-16 06:00。来源是本次可访问到的聊天索引与公开资料,不是完整聊天导出。
问题起点
北京时间 2026-09-15 22:08 左右,你问:昇腾 NPU 有没有类似 nvtop 的便捷工具?
答案是有相近选择,但应按“临时查看、交互式单机监控、集群长期监控”三层选工具,而不是寻找一个在所有场景都完全等价于 nvtop 的程序。
第一层:原生基线工具 npu-smi
npu-smi info 是最稳妥的设备状态入口,适合先确认驱动是否识别设备,并查看健康、温度、功耗、AI Core 利用率、内存/HBM 等基本状态。它在定位体系中的角色更接近 nvidia-smi,而不是完整的交互式 TUI。
官方命令参考中存在专门的持续监测模式:
npu-smi info watch
它可查询所有设备/芯片的功耗、温度、AI Core、AI CPU、Ctrl CPU、Memory、Memory BW 等动态指标;也可按设备或芯片进一步限定,例如:
npu-smi info watch -i 0
npu-smi info watch -i 0 -c 0 -d 5 -s ptaicmb
具体 watch_type、设备/芯片 ID 以及命令支持范围与产品形态、驱动版本和权限有关,应以目标机器上的 npu-smi -h 与对应版本命令参考为准。昇腾 npu-smi:查询所有芯片监测数据 昇腾 npu-smi:查询指定芯片监测数据
如果当前 910C/A3 环境的 info watch 子命令行为与文档不同,保守 fallback 是:
watch -n 1 npu-smi info
它只是周期性重跑 npu-smi info,能力不等同于 npu-smi info watch,但兼容性通常更容易确认。
第二层:类似 nvtop 的交互式工具
方案 A:原版 nvtop 的 Ascend backend
一个容易忽略的变化是:新版开源 nvtop 已经加入 Huawei Ascend 支持。其 Ascend backend 通过 DCMI API 获取设备数据;上游 README 明确写明测试平台为 Atlas 800(910B)、DCMI 6.0.0,并指出当前 DCMI 可暴露的数据仍有限,例如部分 PCIe 信息、TX/RX throughput、最大功耗等指标可能缺失。Syllo/nvtop
这意味着“昇腾有没有真正的 nvtop”这个问题现在可以分成两个答案:
- 从软件本体看:有,原版 nvtop 已有 Ascend backend。
- 从当前 910C/A3 的工程可用性看:仍需本机编译/安装验证,因为上游公开测试基线主要写的是 910B,而不是你的 910C 环境。
方案 B:nputop / ascend-nputop
youyve/nputop 是专门面向 Ascend 的交互式进程查看器,支持实时利用率、内存、温度、功耗、进程、多 NPU,以及 Driver/CANN 版本展示;项目当前声明支持 Ascend 910 系列并改进了 Atlas A3 兼容性。youyve/nputop
推荐安装的是这个项目在 PyPI 上发布的 ascend-nputop:
python3 -m venv /tmp/nputop-venv
source /tmp/nputop-venv/bin/activate
pip install ascend-nputop
nputop
这里要注意包名歧义:PyPI 还存在另一个名为 nputop 的包,因此实际安装前应核对 Homepage/Repository/maintainer,避免只根据命令名安装错项目。ascend-nputop PyPI
方案 C:npu-top 等轻量第三方 TUI
raids-lab/npu-top 是更小型的 Python TUI,实现思路是调用和解析 npu-smi,展示利用率、显存、温度、功耗、时钟、历史曲线与进程,并支持多卡网格布局。raids-lab/npu-top
这种工具的优点是代码短、容易审查和二次修改;缺点是项目成熟度、版本适配、异常输出解析能力通常不如维护更久的工具。对生产服务器,仍建议先审查源码、固定版本,并避免给交互式“kill process”能力过高权限。
第三层:多机集群与长期观测
当目标从“盯一台 8 卡机器”变成“观察多台 910C 推理集群”,TUI 不再够用。更合适的路径是每节点部署 NPU Exporter,将指标交给 Prometheus,再用 Grafana 做时间序列、告警和跨节点对比。
MindCluster 的 NPU Exporter 并不是简单包装 npu-smi:官方实现说明中,它会通过 DCMI 获取芯片信息、通过 hccn_tool 获取网络信息,并从 K8s CRI 获取容器信息,再暴露 Prometheus/Telegraf 指标。MindCluster NPU Exporter 原理
官方指标文档当前覆盖的类别包括 NPU、利用率、Network、HCCS、PCIe、RoCE、SIO、UB 等;具体字段是否出现仍取决于设备形态和底层 HDK/DCMI/HCCN 接口支持。NPU Exporter Prometheus Metrics
应重点监控:
- 设备健康、温度、功耗与潜在降频迹象
- AI Core 利用率以及跨卡负载不均衡
- HBM 已用量、增长趋势与 OOM 风险
- 进程/容器到 NPU 的映射
- HCCS/HCCN、RoCE 等互联侧异常与吞吐变化
- 推理服务层的 TTFT、TPOT、吞吐、队列长度和失败率
NPU 利用率高低不能单独解释性能。利用率低可能来自 CPU 调度、通信、数据搬运、同步等待或请求不足;利用率高也可能伴随尾延迟恶化。设备指标必须和 vLLM-Ascend 服务指标、日志及 profiling 时间线一起看。
一个更通用的可观测性分层模型
可以把昇腾推理观测拆成四层:
- 设备健康层:
npu-smi、nvtop、nputop。回答“卡是否正常、是否忙、HBM 是否够”。 - 持续监控层:NPU Exporter + Prometheus + Grafana。回答“过去一段时间发生了什么、哪台节点/哪张卡长期异常”。
- 服务性能层:推理框架的 TTFT、TPOT、吞吐、并发、队列、失败率。回答“用户体验和系统吞吐为什么变化”。
- Profiler/时间线层:昇腾 profiling 工具、算子时间线、通信事件。回答“时间具体耗在什么算子、同步或数据搬运上”。
这四层不能互相替代。nvtop/nputop 很适合发现异常,但无法仅凭一个 utilization 数字证明瓶颈来自算力、HBM、通信还是 Host;Profiler 能做归因,但不适合替代 7×24 小时监控。工程上应该先用监控缩小范围,再用 profiling 做根因定位。
针对当前 8 卡 910C 场景的建议
- 日常登录排障:优先试
npu-smi info watch;若当前 910C/A3 版本行为不符合预期,再退回watch -n 1 npu-smi info。 - 希望获得
nvtop式体验:先在隔离环境试ascend-nputop,再测试新版原生nvtopAscend backend;把设备编号、双 Die 映射、进程和 HBM 数值与npu-smi交叉核验。 - 多节点 GLM-5.3-Flash 性能与稳定性分析:部署 NPU Exporter + Prometheus + Grafana,并把服务端 TTFT、TPOT、吞吐、并发和失败率纳入同一观测面。
- 深入定位算子与通信瓶颈时,TUI/Exporter 只负责发现异常,根因归因仍需结合 profiling 时间线、算子耗时和通信事件。
与现有知识的连接
这篇笔记是“设备是否健康、资源是否繁忙”的观测入口。网络与 HCCL 检查可继续参考 NPU 网络检查:hccn_tool、/30 子网与 HCCL 连通性;设备层级和双 Die 映射参考 读懂昇腾 A3 的设备层级:双 Die、davinci 节点与空闲 HBM 排查。