1. 为什么我放弃裸用nvidia-smi,改用gpustat盯着GPU
做深度学习或高性能计算的同学都清楚,nvidia-smi几乎是装机标配。但我不清楚你们怎么想,至少我自己在排查显存占用、进程异常、多卡利用率不均这些问题时,每次对着nvidia-smi的满屏输出都觉得很费劲:信息确实全,但太密了,权限信息、温度、功耗、编码器利用率这些指标在大部分场景下我根本不关心,真正想看的其实是几件事——每张卡显存还有多少、占用率拉满没有、是哪个用户哪个进程在跑,以及有没有陷入大家都停下来等我释放显存的尴尬局面。
后来我接触了gpustat,第一反应是这工具太小巧了。它不是要取代nvidia-smi,而是把最核心的GPU运行状态按一种更接近人类阅读习惯的方式重新排版。简单说,同样是打开终端扫一眼,nvidia-smi让我需要花几秒钟在脑子里重新组织信息,gpustat则直接告诉我答案。下面这张表是我日常用得最多的功能对比,能很直观看出两者的差异:
| 维度 | nvidia-smi | gpustat |
|---|---|---|
| 默认展示单位 | 单次完整表格 | 紧凑列表 |
| 显存数值格式 | 完整字节(MiB) | 自动换算(MB/GB) |
| 进程所属用户 | 只显示Linux用户ID | 直接显示用户名 |
| 查看刷新趋势 | 需搭配watch | watch配合更友好 |
| 多台机器汇总 | 无 | 可另配gpustat-web |
| 自定义命令选项 | 较多但繁杂 | 少量参数,上手快 |
这里要说明,gpustat的核心数据仍然通过NVIDIA官方工具链拿到的,它并不会凭空多出什么监测指标。它在做的,是重新定义展示层。它内部调用的是pynvml(NVIDIA管理库的Python绑定),然后对结果做过滤、排序、配色。所以如果你已经有nvidia-smi能用,gpustat基本可以安心装;如果你连nvidia-smi都跑不起来,那问题通常是显卡驱动或NVML库层面,而不是gpustat的问题。
这篇说明我打算从安装开始,把常用的命令组合、实时监控方案、多卡服务器场景和几个在真实环境中容易踩的坑一次讲透。不管你是装了双系统还没配好环境的入门用户,还是负责实验室多卡服务器运维的老手,这篇都能给你一个相对完整的参考。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装方式与依赖说明:pip是主路径,其他方式尽量靠后
2.1 最直接的pip安装方式
在Ubuntu环境里,安装gpustat最省心的方式是通过pip,官方推荐的命令如下:
bash复制pip install gpustat
如果你用的是Ubuntu 22.04或更新版本,系统自带的Python环境可能被PEP 668约束,直接pip install会遇到类似error: externally-managed-environment的报错。这种情况下有三个选择:
bash复制# 方案1:使用pipx,隔离环境,推荐日常使用
pipx install gpustat
# 方案2:给当前用户单独装
pip install --user gpustat
# 方案3:如果你坚持用系统pip(不推荐),需要加--break-system-packages
pip install gpustat --break-system-packages
我自己的习惯是,如果只是临时想在服务器上看两眼GPU状态,又不想污染系统Python环境,就用pipx;如果恰好已经在用conda管理环境,那就直接放到base环境里。下面这两种都是比较常见的路径:
bash复制conda install -c conda-forge gpustat
或者在你的conda环境内执行:
bash复制pip install gpustat
需要提醒一下,conda install的包版本通常比PyPI慢半拍。gpustat本身更新并不频繁,这个差异一般不会带来问题,但如果你遇到某些奇怪的显示bug,优先试试升级到PyPI最新版。
2.2 千万别用apt源硬装
在Ubuntu上,有人习惯所有工具一律apt install。gpustat其实也被部分Ubuntu发行版的软件源收录了,但你通过apt install gpustat能装到的版本通常比较老,而gpustat早期版本在不同NVML版本的兼容性上是有坑的。你要是装上以后发现输出格式跟网上教程对不上,或者某些参数不支持,十有八九是版本太旧。
从实用角度看,我强烈建议统一走pip或conda路线。不仅版本新,而且卸载也干净,不会跟系统包管理器产生纠缠。
2.3 依赖项到底装了些什么
执行pip install gpustat以后,Python会顺带安装几个核心依赖:
nvidia-ml-py(或较老版本中的pynvml):这是和NVIDIA驱动管理的NVML库通信的桥梁,gpustat读取显存、利用率、温度、进程列表全靠它。psutil:用来读取本机CPU利用率和进程归属用户信息。termcolor或类似的排版库:负责终端彩色输出。six:部分版本需要,兼容Python 2/3差异用。
很多人在使用时遇到ModuleNotFoundError: No module named 'pynvml'这类报错,就是因为这些依赖在安装过程中被跳过,或者因为用了--no-deps参数强制不装依赖。正常安装时基本不会遇到,但如果你习惯在已有环境里手动管理包,这点需要特别留意。
2.4 安装完成后先做一次最小验证
装完后第一次运行,建议不要加任何参数,先跑一次最小命令验证底层链路是不是通的:
bash复制gpustat
正常情况下,你会看到类似下面这样的一段输出:
code复制ubuntu-2040 Sun Jul 21 15:30:01 2025
[0] NVIDIA GeForce RTX 3090 | 50'C
