跳到主要内容

GPU 状态监控

在深度学习训练和推理过程中,持续监控 GPU 状态是非常重要的。以下是几种常用的监控方式。

nvidia-smi 自带的循环参数

最简单的方式是使用 nvidia-smi 自带的循环刷新功能:

nvidia-smi -l 1      # 每 1 秒刷新一次
nvidia-smi -lms 500 # 每 500 毫秒刷新一次

watch 命令(推荐)

使用 watch 命令可以获得更清晰的显示效果:

watch -n 1 nvidia-smi   # 每 1 秒刷新
watch -n 0.5 nvidia-smi # 每 0.5 秒刷新

只查看关键信息

如果只想看核心指标,可以使用查询参数:

watch -n 1 'nvidia-smi --query-gpu=utilization.gpu,utilization.memory,memory.used,memory.total,temperature.gpu --format=csv'

输出示例:

utilization.gpu [%], utilization.memory [%], memory.used [MiB], memory.total [MiB], temperature.gpu
85 %, 45 %, 18432 MiB, 24576 MiB, 72

nvtop(交互式工具)

nvtop 是一个类似 htop 的交互式 GPU 监控工具,提供实时曲线图和进程信息。

安装

# Ubuntu/Debian
sudo apt install nvtop

# CentOS/RHEL
sudo yum install nvtop

# macOS (仅支持 Apple Silicon)
brew install nvtop

使用

nvtop

nvtop 的优势:

  • 实时 GPU 使用率曲线图
  • 显存使用情况可视化
  • 进程级别的 GPU 占用信息
  • 支持多 GPU 监控
  • 交互式操作(排序、筛选等)

gpustat(简洁美观)

gpustat 是一个轻量级的 GPU 状态查看工具,输出简洁美观。

安装

pip install gpustat

使用

gpustat           # 单次查看
gpustat -i 1 # 每秒刷新
gpustat -cp # 显示进程信息和完整命令
gpustat --watch # 持续监控模式

工具对比

工具安装方式特点推荐场景
nvidia-smi -l预装无需安装,信息全面快速查看
watch nvidia-smi预装显示清晰,高亮变化临时监控
nvtopapt/yum交互式,可视化曲线长期监控
gpustatpip简洁美观,支持远程多卡概览

常用监控指标说明

  • GPU Utilization: GPU 核心利用率,理想状态应接近 100%
  • Memory Used/Total: 显存使用量/总量
  • Temperature: GPU 温度,通常应保持在 80°C 以下
  • Power Draw: 功耗,可用于判断是否达到功耗墙
  • SM Clock: GPU 核心频率

小技巧

远程监控

结合 watch 和 SSH 可以远程监控:

watch -n 1 'ssh user@server nvidia-smi'

记录 GPU 状态日志

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.total,temperature.gpu,power.draw --format=csv -l 5 > gpu_log.csv

这会每 5 秒记录一次 GPU 状态到 CSV 文件,方便后续分析。