百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

告别“黑盒子”:nvitop,你的 NVIDIA GPU 监控新宠

itomcoil 2025-02-20 15:55 15 浏览

在深度学习和高性能计算领域,NVIDIA GPU 已成为不可或缺的硬件加速器。然而,如何实时监控 GPU 的状态,了解每个进程的资源占用情况,常常让开发者感到困扰。虽然 nvidia-smi 功能强大,但其输出信息略显单调,缺乏直观性。今天,我要向大家介绍一款开源神器——nvitop,它将彻底改变你监控 NVIDIA GPU 的方式。

一、项目介绍:不止是监控,更是管理

nvitop 是一个交互式的 NVIDIA GPU 进程查看器,它不仅是一个简单的监控工具,更是一个 GPU 进程管理的一站式解决方案。它拥有丰富多彩且信息量十足的界面,可以实时更新设备和进程的状态。作为资源监控器,nvitop 提供了树状视图、环境变量查看、进程过滤、进程指标监控等多种功能。此外,它还提供了一个 CUDA 设备选择工具 nvisel,以及方便的 API,允许开发者构建自己的监控工具。



nvitop 的监控模式。
(TERM: GNOME Terminal / OS: Ubuntu 16.04 LTS (over SSH) / Locale: en_US.UTF-8)

nvitop 的目标是提供比 nvidia-smi 更丰富、更直观的 GPU 监控体验。它不仅显示了 GPU 的基本信息,还提供了进程级别的详细资源占用情况,让开发者可以更清晰地了解 GPU 的运行状态。

二、基本功能:强大且易用

nvitop 的功能非常丰富,主要可以分为以下几个方面:

1. 设备和进程状态查询

nvitop 可以像 nvidia-smi 一样查询 GPU 设备和进程的状态,但输出信息更加丰富和美观。你可以通过简单的命令查看所有 GPU 的状态,或者指定查询特定的 GPU。

# 查询所有设备的状态
$ nvitop -1

# 指定查询设备 (按整数索引)
$ nvitop -1 -o 0 1

# 仅显示 `CUDA_VISIBLE_DEVICES` 中的设备
$ nvitop -1 -ov

# 仅显示具有计算上下文的 GPU 进程
$ nvitop -1 -c

当 -1 开关打开时,结果将只显示一次,这可以提高查询速度并降低资源消耗。

2. 资源监控器

nvitop 可以作为资源监控器运行,实时显示 GPU 的状态。它提供了多种显示模式,包括 auto、full 和 compact,你可以根据自己的需求选择合适的模式。

# 监控模式
$ nvitop

# 根据终端大小自动配置显示模式
$ nvitop -m auto

# 任意显示为 `full` 模式
$ nvitop -m full

# 任意显示为 `compact` 模式
$ nvitop -m compact

# 仅使用 ASCII 字符
$ nvitop -U

# 对于浅色终端
$ nvitop --light

# 对于类似光谱的条形图
$ nvitop --colorful

在监控模式下,你可以使用快捷键与 nvitop 进行交互,例如:

  • Ctrl-c / T / K:中断/终止/杀死进程。
  • Enter / Return:进入进程指标屏幕,查看进程的实时图表。
  • h:显示帮助信息。
  • q:退出监控模式。


进程过滤和更丰富多彩的界面。


与 nvidia-smi 的比较。

3. 其他功能

除了基本的监控功能,nvitop 还提供了以下特性:

  • 信息丰富且美观的输出:比 nvidia-smi 显示更多信息,并使用彩色美观的框图。
  • 交互式:在监控模式下响应用户输入。
  • 高效:直接使用 NVML Python 绑定查询设备状态,而不是解析 nvidia-smi 的输出。
  • 可移植:可在 Linux 和 Windows 上运行。
  • 可集成:易于集成到其他应用程序中。



nvitop 支持 Windows!
(SHELL: PowerShell / TERM: Windows Terminal / OS: Windows 10 / Locale: en-US)

三、部署方式:简单快捷

nvitop 的安装非常简单,你可以通过 pip 或 conda 进行安装。

1. 使用 pip 安装

pip3 install --upgrade nvitop

2. 使用 conda 安装

conda install -c conda-forge nvitop

3. 从 GitHub 安装最新版本

pip3 install --upgrade pip setuptools
pip3 install git+https://github.com/XuehaiPan/nvitop.git#egg=nvitop

4. Docker 用户

如果你使用 Docker,可以使用以下命令构建和运行 Docker 镜像:

git clone --depth=1 https://github.com/XuehaiPan/nvitop.git && cd nvitop
docker build --tag nvitop:latest .
docker run -it --rm --runtime=nvidia --gpus=all --pid=host nvitop:latest

四、使用方式:灵活多样

nvitop 的使用方式非常灵活,你可以根据自己的需求选择合适的命令和选项。

1. 命令行选项

nvitop 提供了丰富的命令行选项,你可以通过 nvitop --help 查看所有选项。

usage: nvitop [--help] [--version] [--once | --monitor [{auto,full,compact}]]
              [--interval SEC] [--ascii] [--colorful] [--force-color] [--light]
              [--gpu-util-thresh th1 th2] [--mem-util-thresh th1 th2]
              [--only INDEX [INDEX ...]] [--only-visible]
              [--compute] [--only-compute] [--graphics] [--only-graphics]
              [--user [USERNAME ...]] [--pid PID [PID ...]]

一个交互式的 NVIDIA-GPU 进程查看器。

options:
  --help, -h            显示此帮助信息并退出。
  --version, -V         显示 nvitop 的版本号并退出。
  --once, -1            仅报告一次查询数据。
  --monitor [{auto,full,compact}], -m [{auto,full,compact}]
                        作为资源监控器运行。持续报告查询数据并处理用户输入。
                        如果省略参数,将使用 `NVITOP_MONITOR_MODE` 中的值。
                        (默认回退模式:auto)
  --interval SEC        进程状态更新间隔,以秒为单位。(默认:2)
  --ascii, --no-unicode, -U
                        仅使用 ASCII 字符,这对于不支持 Unicode 的终端很有用。

coloring:
  --colorful            使用渐变颜色以获得类似光谱的条形图。此选项仅在终端支持 256 色时可用。您可能需要设置环境变量 `TERM="xterm-256color"`。请注意,终端多路复用器 (例如 `tmux`) 可能会覆盖 `TREM` 变量。
  --force-color         即使 `stdout` 不是 TTY 终端也强制着色。
  --light               在监控模式下调整浅色主题终端的视觉效果。
                        为方便起见,在浅色终端上设置变量 `NVITOP_MONITOR_MODE="light"`。
  --gpu-util-thresh th1 th2
                        GPU 利用率的阈值,用于确定负载强度。
                        着色规则:light < th1 % <= moderate < th2 % <= heavy。
                        ( 1 <= th1 < th2 <= 99,默认值:10 75 )
  --mem-util-thresh th1 th2
                        GPU 内存百分比的阈值,用于确定负载强度。
                        着色规则:light < th1 % <= moderate < th2 % <= heavy。
                        ( 1 <= th1 < th2 <= 99,默认值:10 80 )

device filtering:
  --only INDEX [INDEX ...], -o INDEX [INDEX ...]
                        仅显示指定的设备,抑制选项 `--only-visible`。
  --only-visible, -ov   仅显示 `CUDA_VISIBLE_DEVICES` 环境变量中的设备。

process filtering:
  --compute, -c         仅显示具有计算上下文的 GPU 进程。(类型:'C' 或 'C+G')
  --only-compute, -C    仅显示具有精确计算上下文的 GPU 进程。(类型:仅 'C')
  --graphics, -g        仅显示具有图形上下文的 GPU 进程。(类型:'G' 或 'C+G')
  --only-graphics, -G   仅显示具有精确图形上下文的 GPU 进程。(类型:仅 'G')
  --user [USERNAME ...], -u [USERNAME ...]
                        仅显示给定用户的进程 (如果没有参数,则为 `$USER`)。
  --pid PID [PID ...], -p PID [PID ...]
                        仅显示给定 PID 的进程。

2. 环境变量

nvitop 可以接受以下环境变量进行监控模式:

名称

描述

有效值

默认值

NVITOP_MONITOR_MODE

默认显示模式 (逗号分隔的字符串)

auto / full / compact
plain / colorful
dark / light

auto,plain,dark

NVITOP_GPU_UTILIZATION_THRESHOLDS

GPU 利用率的阈值

10,75 , 1,99, ...

10,75

NVITOP_MEMORY_UTILIZATION_THRESHOLDS

GPU 内存百分比的阈值

10,80 , 1,99, ...

10,80

LOGLEVEL

日志消息的日志级别

DEBUG , INFO, WARNING, ...

WARNING

3. 快捷键

在监控模式下,你可以使用以下快捷键与 nvitop 进行交互:

Key

Binding

q

退出并返回终端。

h / ?

转到帮助屏幕。

a / f / c

将显示模式更改为 *auto* / *full* / *compact*。

r / /

强制刷新窗口。



/
/
/

选择并突出显示进程。

/
/

滚动进程的主机信息。

选择第一个进程。

选择最后一个进程。


^

向左滚动到进程条目的开头 (即行首)。


$

向右滚动到进程条目的末尾 (即行尾)。

/
/
[ / ]

滚动整个屏幕 (对于大量进程)。



标记/取消标记当前进程。

清除进程选择。


I

向所选进程发送 signal.SIGINT (中断)。

T

向所选进程发送 signal.SIGTERM (终止)。

K

向所选进程发送 signal.SIGKILL (杀死)。



e

显示进程环境。

t

切换树视图屏幕。



查看特定进程的指标 (快捷键:Enter / Return)。



nvitop 附带一个帮助屏幕 (快捷键:h)。

五、总结

nvitop 是一款功能强大、易于使用、美观大方的 NVIDIA GPU 监控工具。它不仅可以替代 nvidia-smi,还提供了更多的功能和更友好的用户体验。如果你正在寻找一款优秀的 GPU 监控工具,那么 nvitop 绝对值得你尝试。快来安装 nvitop,告别“黑盒子”,让你的 GPU 运行状态一目了然吧!


MIG 设备支持。

相关推荐

最强聚类模型,层次聚类 !!_层次聚类的优缺点

哈喽,我是小白~咱们今天聊聊层次聚类,这种聚类方法在后面的使用,也是非常频繁的~首先,聚类很好理解,聚类(Clustering)就是把一堆“东西”自动分组。这些“东西”可以是人、...

python决策树用于分类和回归问题实际应用案例

决策树(DecisionTrees)通过树状结构进行决策,在每个节点上根据特征进行分支。用于分类和回归问题。实际应用案例:预测一个顾客是否会流失。决策树是一种基于树状结构的机器学习算法,用于解决分类...

Python教程(四十五):推荐系统-个性化推荐算法

今日目标o理解推荐系统的基本概念和类型o掌握协同过滤算法(用户和物品)o学会基于内容的推荐方法o了解矩阵分解和深度学习推荐o掌握推荐系统评估和优化技术推荐系统概述推荐系统是信息过滤系统,用于...

简单学Python——NumPy库7——排序和去重

NumPy数组排序主要用sort方法,sort方法只能将数值按升充排列(可以用[::-1]的切片方式实现降序排序),并且不改变原数组。例如:importnumpyasnpa=np.array(...

PyTorch实战:TorchVision目标检测模型微调完

PyTorch实战:TorchVision目标检测模型微调完整教程一、什么是微调(Finetuning)?微调(Finetuning)是指在已经预训练好的模型基础上,使用自己的数据对模型进行进一步训练...

C4.5算法解释_简述c4.5算法的基本思想

C4.5算法是ID3算法的改进版,它在特征选择上采用了信息增益比来解决ID3算法对取值较多的特征有偏好的问题。C4.5算法也是一种用于决策树构建的算法,它同样基于信息熵的概念。C4.5算法的步骤如下:...

Python中的数据聚类及可视化分析实践

探索如何通过聚类分析揭露糖尿病预测数据集的特征!我们将运用Python的强力工具,深入挖掘数据,以直观的可视化揭示不同特征间的关系。一同探索聚类分析在糖尿病预测中的实践!所有这些可视化都可以通过数据操...

用Python来统计大乐透号码的概率分布

用Python来统计大乐透号码的概率分布,可以按照以下步骤进行:导入所需的库:使用Python中的numpy库生成数字序列,使用matplotlib库生成概率分布图。读取大乐透历史数据:从网络上找到大...

python:支持向量机监督学习算法用于二分类和多分类问题示例

监督学习-支持向量机(SVM)支持向量机(SupportVectorMachine,简称SVM)是一种常用的监督学习算法,用于解决分类和回归问题。SVM的目标是找到一个最优的超平面,将不同类别的...

25个例子学会Pandas Groupby 操作

groupby是Pandas在数据分析中最常用的函数之一。它用于根据给定列中的不同值对数据点(即行)进行分组,分组后的数据可以计算生成组的聚合值。如果我们有一个包含汽车品牌和价格信息的数据集,那么可以...

数据挖掘流程_数据挖掘流程主要有哪些步骤

数据挖掘流程1.了解需求,确认目标说一下几点思考方法:做什么?目的是什么?目标是什么?为什么要做?有什么价值和意义?如何去做?完整解决方案是什么?2.获取数据pandas读取数据pd.read.c...

使用Python寻找图像最常见的颜色_python 以图找图

如果我们知道图像或对象最常见的是哪种颜色,那么可以解决图像处理中的几个用例,例如在农业领域,我们可能需要确定水果的成熟度。我们可以简单地检查一下水果的颜色是否在预定的范围内,看看它是成熟的,腐烂的,还...

财务预算分析全网最佳实践:从每月分析到每天分析

原文链接如下:「链接」掌握本文的方法,你就掌握了企业预算精细化分析的能力,全网首发。数据模拟稍微有点问题,不要在意数据细节,先看下最终效果。在编制财务预算或业务预算的过程中,通常预算的所有数据都是按月...

常用数据工具去重方法_数据去重公式

在数据处理中,去除重复数据是确保数据质量和分析准确性的关键步骤。特别是在处理多列数据时,保留唯一值组合能够有效清理数据集,避免冗余信息对分析结果的干扰。不同的工具和编程语言提供了多种方法来实现多列去重...

Python教程(四十):PyTorch深度学习-动态计算图

今日目标o理解PyTorch的基本概念和动态计算图o掌握PyTorch张量操作和自动求导o学会构建神经网络模型o了解PyTorch的高级特性o掌握模型训练和部署PyTorch概述PyTorc...