XuehaiPan/nvitop
An interactive NVIDIA-GPU process viewer and beyond, the one-stop solution for GPU process management.
nvitop – 交互式 NVIDIA GPU 进程查看器
它是什么
- 一个纯 Python、跨平台的命令行工具,显示有关 NVIDIA GPU 及其使用的进程的详细、丰富的彩色信息。它可以运行一次(如
nvidia-smi),也可以保持具有交互式控件的实时“监控”模式。
为什么对 AI/ML 很重要
- 深度学习工作负载在 NVIDIA GPU 上运行。了解哪些作业使用哪个 GPU、其内存/利用率,并且能够终止或信号化失控进程对于管理共享集群或单机工作站的研究人员和工程师至关重要。
主要特性
- 丰富输出 – 比
nvidia-smi更多字段(例如,进程树、环境变量),并使用彩色框绘制。 - 监控模式 – 实时更新视图,包含条形图、历史图、进程排序/过滤以及鼠标/键盘交互。
- 进程控制 – 直接从 UI 向选定进程发送 SIGINT/TERM/KILL(管理员可以
sudo nvitop)。 - CUDA 可见设备选择器 – 捆绑的
nvisel工具帮助为实验设置CUDA_VISIBLE_DEVICES。 - 跨平台 – 在 Linux 和 Windows 上运行(后者使用
windows-curses)。 - 快速高效 – 通过
nvidia-ml-py绑定与 NVIDIA 管理库 (NVML) 通信,使用cachetools缓存查询,并在后台线程中收集数据。 - 可集成 – 提供低级 Python API(
Device、Process、Host)用于构建自定义监控脚本或仪表板。 - 导出和 Grafana 支持 – 单独的
nvitop-exporter可以将指标推送到 Prometheus/Grafana。
安装
# 推荐:通过 uvx 或 pipx 在隔离环境中运行
uvx nvitop # 或
pipx run nvitop
# 或从 PyPI / conda-forge 安装
pip install -U nvitop
conda install -c conda-forge nvitop
也可以直接从 GitHub 仓库安装:pip install git+https://github.com/XuehaiPan/nvitop.git
基本用法
- 一次性查询(如
nvidia-smi):nvitop -1 - 仅显示 GPU 0 和 1:
nvitop -1 -o 0 1 - 实时监控(默认):
nvitop - 切换监控布局:
-m auto|full|compact(或在 UI 内按a、f、c键) - 过滤到具有计算上下文的进程:
-c - 仅使用 ASCII 字符(用于普通终端):
-U - 只读模式(无终止/中断快捷键):
--readonly
交互式控制(监控模式)
| 键 | 操作 |
|---|---|
Ctrl-C / T / K |
中断/终止/强制终止选定进程 |
t |
打开树视图屏幕(推荐用于发送信号) |
Enter |
打开带实时图形的每进程指标屏幕 |
h |
显示帮助屏幕 |
q |
退出 |
| 方向键 / 鼠标 | 导航行 |
CUDA 可见设备选择器
- 运行配套 CLI
nvisel以交互式选择新进程应可见的 GPU,简化实验设置。
超越监控
- 该包附带一个资源指标收集器(
nvitop-exporter),可以将 GPU 统计信息暴露给 Prometheus,从而实现 Grafana 仪表板(参见 README 中的截图)。 - 低级 Python API 允许开发人员将 GPU 状态检查嵌入到自己的工具或笔记本中。
要求
- Python 3.8+
- 具有 NVML 库的 NVIDIA 驱动程序(随驱动程序或 CUDA 工具包捆绑)
nvidia-ml-py、psutil,在 Unix 上需要curses(Windows 需要windows-curses包)。
文档和支持
- 完整 API 文档:https://nvitop.readthedocs.io
- PyPI 页面、conda-forge 包和 GitHub 问题用于错误报告。
nvitop 对于在 NVIDIA GPU 上运行 AI/ML 工作负载的任何人都是一个实用的工具,比标准 nvidia-smi 工具提供更丰富、交互式的 GPU 健康和进程使用视图。
相关
- 项目
- 项目
- 项目
- 项目
- 项目