news 2026/8/17 19:58:50

深度学习GPU监控:nvidia-smi命令详解与实战技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度学习GPU监控:nvidia-smi命令详解与实战技巧

1. 科研场景下的显卡监控需求解析

作为研一新生首次接触深度学习训练时,最常遇到的困惑就是"我的显卡到底有没有在干活?"。实验室那台装着RTX 3090的工作站虽然性能强劲,但当我运行第一个PyTorch训练脚本时,看着黑漆漆的命令行窗口,完全无法判断程序是否正确调用了显卡资源。这种不确定性在跑长周期实验时尤为致命——你可能白白浪费三天时间才发现模型其实一直在用CPU计算。

这时就需要掌握显卡进程监控这项基础技能。通过实时查看显卡的进程列表、显存占用和计算负载,不仅能验证代码是否正确使用了GPU加速,还能及时发现内存泄漏、异常占用等问题。对于多人共用的实验室设备,这项技能更是必备的运维手段——当发现某张显卡被未知进程长期占用时,可以快速定位并联系相关使用者。

2. NVIDIA显卡监控工具链详解

2.1 nvidia-smi命令全解析

在Linux系统中,nvidia-smi(NVIDIA System Management Interface)是监控显卡状态的瑞士军刀。直接在终端输入这个命令,就能看到类似如下的关键信息面板:

+-----------------------------------------------------------------------------+ | NVIDIA-SMI 535.54.03 Driver Version: 535.54.03 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 NVIDIA RTX 3090 On | 00000000:17:00.0 Off | Off | | 30% 45C P8 25W / 350W| 1023MiB / 24576MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 37283 C python3 1001MiB | +-----------------------------------------------------------------------------+

各字段的实用解读:

  • GPU-Util:实时计算负载百分比,训练模型时通常在70%-100%波动
  • Memory-Usage:显存使用量/总量,接近上限时会出现OOM错误
  • Processes:正在使用GPU的进程列表及其显存占用

2.2 实用监控参数组合

基础命令配合参数可以实现更精细的监控:

# 每2秒刷新一次监控数据(按Ctrl+C终止) nvidia-smi -l 2 # 只显示特定GPU的信息(适用于多卡服务器) nvidia-smi -i 0 # 输出可解析的XML格式(用于脚本处理) nvidia-smi -q -x

经验提示:在SSH会话中运行长时间监控时,建议使用screen或tmux工具防止断开连接导致监控中断

3. 常见问题排查手册

3.1 驱动通信失败解决方案

当遇到"nvidia-smi has failed because it couldn't communicate with the nvidia driver"错误时,可按以下步骤排查:

  1. 检查驱动状态:
lsmod | grep nvidia

正常应显示nvidia相关内核模块已加载

  1. 验证驱动版本匹配:
cat /proc/driver/nvidia/version dpkg -l | grep nvidia
  1. 典型修复流程:
# 卸载现有驱动 sudo apt purge nvidia* # 禁用nouveau驱动 echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nvidia-nouveau.conf sudo update-initramfs -u # 重新安装驱动 sudo apt install nvidia-driver-535 sudo reboot

3.2 多卡训练环境配置

当使用PyTorch进行多GPU训练时,常遇到显卡使用不均衡问题。正确的检测方法是:

import torch print(f"可见显卡数量: {torch.cuda.device_count()}") print(f"当前使用显卡: {torch.cuda.current_device()}")

在代码中明确指定设备:

# 手动选择设备 device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu") model.to(device) # 数据并行 model = nn.DataParallel(model, device_ids=[0,1])

4. 高级监控技巧

4.1 实时可视化方案

对于需要长期监控的场景,推荐使用gpustat工具:

pip install gpustat gpustat -cp --color

输出示例:

[0] NVIDIA RTX 3090 | 78°C, 95% | 23456 / 24576 MB | python3(12345)(2200M)

4.2 进程级资源分析

使用fuser命令定位占用显卡的进程:

fuser -v /dev/nvidia*

结合ps命令获取详细信息:

ps -up $(nvidia-smi -q -x | grep pid | sed -e 's/<pid>//g' -e 's/<\/pid>//g' | xargs)

5. 实验室环境下的显卡管理

5.1 共享设备使用规范

建议实验室建立如下使用规则:

  1. 长期运行任务使用nohupscreen启动
  2. 显存占用超过80%时需标注使用目的
  3. 异常占用超过24小时的进程可被管理员终止

5.2 自动化监控脚本

以下脚本可定期记录显卡状态:

#!/bin/bash LOG_FILE="/var/log/gpu_usage.log" while true; do echo "===== $(date) =====" >> $LOG_FILE nvidia-smi >> $LOG_FILE sleep 300 done

配合crontab实现开机自启:

@reboot /path/to/monitor.sh

6. 性能优化实践

6.1 计算效率提升

通过nvidia-smi观察GPU-Util时:

  • 持续低于30%可能存在数据加载瓶颈
  • 剧烈波动说明批次处理不均匀
  • 配合dstat -cdngy 1检查系统整体资源状况

6.2 显存优化技巧

发现显存泄漏时:

  1. 使用torch.cuda.empty_cache()手动释放缓存
  2. 检查DataLoader的num_workers是否过多
  3. 减少不必要的中间变量保留

7. 跨平台方案适配

7.1 Windows系统下的替代方案

虽然nvidia-smi在Linux上更强大,但Windows用户可以使用:

  1. 任务管理器→性能选项卡→GPU视图
  2. NVIDIA控制面板→桌面→启用GPU活动图标
  3. 第三方工具如GPU-Z

7.2 混合显卡环境处理

对于笔记本上的Intel+NVIDIA混合显卡:

# 查看当前渲染设备 glxinfo | grep "OpenGL renderer" # 指定NVIDIA显卡运行程序 __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia command

8. 显卡监控数据持久化

8.1 时序数据库方案

使用Prometheus+Grafana搭建监控看板:

  1. 安装nvidia_gpu_exporter
docker run -d --name nvidia_exporter \ --runtime=nvidia \ -v /run/prometheus:/run/prometheus \ nvidia/gpu-monitoring-tools:latest
  1. Prometheus配置示例:
scrape_configs: - job_name: 'nvidia' static_configs: - targets: ['nvidia_exporter:9835']

8.2 日志分析技巧

使用awk处理nvidia-smi日志:

# 提取显存使用量 cat gpu.log | awk '/Memory-Usage/ {print $9 $10 $11}' # 统计各进程GPU占用时间 cat gpu.log | grep Processes | awk '{print $6}' | sort | uniq -c

9. 新兴工具生态

9.1 DCGM深度监控

NVIDIA Data Center GPU Manager提供更专业的监控:

# 安装 apt install datacenter-gpu-manager # 启动服务 systemctl start nvidia-dcgm # 查看指标 dcgmi dmon -e 203,204,1001

9.2 RAPIDS监控集成

在GPU加速的数据科学工作流中:

from rml.utils import gpu_usage gpu_usage.plot(title='GPU Utilization Over Time')

10. 安全与维护建议

  1. 定期检查显卡温度曲线,持续高温(>85°C)需清理散热器
  2. 避免频繁的驱动升级,实验室环境建议锁定稳定版本
  3. 重要实验前执行压力测试:
sudo apt install stress-ng stress-ng --matrix 0 -t 1h --metrics-brief

对于长期运行的训练任务,建议配置看门狗脚本:

#!/bin/bash MAX_TEMP=85 while true; do TEMP=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader) if [ $TEMP -gt $MAX_TEMP ]; then pkill -f "python.*train.py" echo "Overheated at $(date)" >> /var/log/gpu_alert.log fi sleep 60 done
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/17 19:57:37

云原生可观测性与智能告警体系建设:预算有限时先优化哪一项

云原生可观测性与智能告警体系建设&#xff1a;预算有限时先优化哪一项 服务和 Pod 增多后&#xff0c;Metrics、Logs、Traces 的存储和查询成本会随之上升。先按数据类型、租户和标签维度拆账&#xff0c;才能判断最值得处理的来源&#xff1b;不要把通用比例当成自己的预算结…

作者头像 李华
网站建设 2026/8/17 19:56:48

cesium 实战系列之独栋建筑选中特效

在某个项目中有这样一个需求&#xff0c;在众多建筑中选中其中的一个&#xff0c;并给其加上选中效果&#xff0c;我在网上找了很多篇文章都是说的模棱两可的&#xff0c;要不就是根本不能实现&#xff0c;要不就是实现出来的效果不对&#xff0c;我这里给出我的实现思路和效果…

作者头像 李华
网站建设 2026/8/17 19:54:00

Ryujinx模拟器终极配置指南:从五分钟上手到性能拉满

Ryujinx模拟器终极配置指南&#xff1a;从五分钟上手到性能拉满 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx 是一款用 C# 编写的实验性 Nintendo Switch 模拟器&#xff0c…

作者头像 李华
网站建设 2026/8/17 19:52:06

国产大模型落地业务系统的优选载体:京微智枢信创 AI 业务支撑平台

引言&#xff1a;大模型落地之困与平台化破局 近年来&#xff0c;以 GPT、文心一言、通义千问等为代表的国产大模型在技术能力上取得了长足进步&#xff0c;展现出强大的语言理解、内容生成与逻辑推理潜力。然而&#xff0c;将大模型从“技术演示”真正转化为驱动业务增长的“生…

作者头像 李华