提供使用 nvidia-smi 命令进行 NVIDIA GPU 实时监控、管理、故障排查与自动化的详细指导。
Nvidia smi 教程是一项面向实际任务的技能,主要用于技能: 深潜到“ nvidia- smi”;Name: nvidia- smi- mastery.;
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
nvidia-smi名称: nvidia-smi-mastery
描述: 提供一份全面指南,涵盖如何使用 nvidia-smi 命令进行 NVIDIA GPU 设备的监控、管理与故障排查,内容从基础状态检查延伸至高级脚本化应用。
关键词: ["nvidia-smi", "gpu monitoring", "nvml", "cuda", "deep learning", "gpu troubleshooting", "system administration"]
nvidia-smi目标
帮助用户从仅能查看 nvidia-smi 基础输出的初级使用者,进阶为能够执行高级 GPU 诊断、性能调优及自动化监控的专家级用户。
nvidia-smi(NVIDIA System Management Interface)是用于监控和管理 NVIDIA GPU 的主要命令行工具。它充当 GPU 的“仪表盘”,实时呈现 GPU 的健康状况与性能数据。
nvidia-smi 是 NVIDIA Management Library(NVML) 的客户端程序;NVML 是一个 C 语言库,提供与 GPU 驱动通信的接口。这意味着你也可以在 Python 等语言中使用 NVML 绑定(如 pynvml)构建自定义监控工具。运行 nvidia-smi 将输出一张信息表格。以下是关键字段的含义说明:
0、1);基础监控
nvidia-smiwatch 命令或 nvidia-smi 内置循环功能实现实时刷新。
watch -n 1 nvidia-smi(每 1 秒刷新一次)nvidia-smi -l 1(原生命令循环,每 1 秒刷新一次)定向查询
nvidia-smi -L 输出所有已识别 GPU 及其 UUID 的简洁列表;nvidia-smi -i 0 仅显示 GPU 0 的信息;nvidia-smi -i 0 -q 为 GPU 0 提供详尽的详细报告,包括时钟频率、温度阈值、ECC 状态等;-d 参数仅显示指定类别的数据。
nvidia-smi -q -d MEMORY,POWER 仅显示显存与功耗相关数据。进程管理
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv 以 CSV 格式输出所有计算进程及其显存占用,便于脚本解析。场景一:诊断 “CUDA out of memory” 错误
nvidia-smi,确认已有进程(如显示管理器)占用了多少 VRAM;kill 结束该进程,释放 VRAM。场景二:排查性能骤降问题
若训练循环突然变慢,建议启用高频连续监控(watch -n 0.5 nvidia-smi),重点关注以下现象:
Temp 突然飙升,同时 Perf 状态由高性能档位(如 P2)跳变为低性能档位(如 P8),表明 GPU 正主动降频降温;Pwr:Usage 持续逼近 Cap 值,则 GPU 可能受限于其功耗预算。守护进程模式(dmon)
如需长期监控且追求紧凑、列式输出格式,可启用守护进程模式:
nvidia-smi dmon -s pumt -d 1-s pumt:指定要显示的指标:**p**ower(功耗)、**u**tilization(利用率)、**m**emory(显存)、**t**emperature(温度);-d 1:设置刷新间隔为 1 秒。你可在 Shell 脚本或 Python 中调用 nvidia-smi 实现监控自动化与日志记录。
使用 pynvml 进行 Python 脚本开发
由于 nvidia-smi 本质是 NVML 的封装工具,因此可直接使用 pynvml 库在 Python 中获得更底层、更高效的 GPU 数据访问能力。
import pynvml
import time
pynvml.nvmlInit()
device_count = pynvml.nvmlDeviceGetCount()
print(f"Found {device_count} GPU(s)")
try:
while True:
for i in range(device_count):
handle = pynvml.nvmlDeviceGetHandleByIndex(i)
name = pynvml.nvmlDeviceGetName(handle).decode('utf-8')
temp = pynvml.nvmlDeviceGetTemperature(handle, pynvml.NVML_TEMPERATURE_GPU)
power = pynvml.nvmlDeviceGetPowerUsage(handle) / 1000.0 # Convert mW to W
mem_info = pynvml.nvmlDeviceGetMemoryInfo(handle)
util = pynvml.nvmlDeviceGetUtilizationRates(handle)
print(f"[{i}] {name}")
print(f" Temp: {temp}°C")
print(f" Power: {power:.2f}W")
print(f" Memory: {mem_info.used // 1024**2} / {mem_info.total // 1024**2} MB")
print(f" GPU Util: {util.gpu}%")
print("-" * 20)
time.sleep(2)
except KeyboardInterrupt:
print("Monitoring stopped.")
pynvml.nvmlShutdown()
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.7万人学习
共49课时 | 82.4万人学习