TensorFlow-v2.15快速上手:Jupyter中实时查看GPU状态的3种方法

张开发
2026/4/13 20:35:14 15 分钟阅读

分享文章

TensorFlow-v2.15快速上手:Jupyter中实时查看GPU状态的3种方法
TensorFlow-v2.15快速上手Jupyter中实时查看GPU状态的3种方法1. 为什么需要监控GPU状态在深度学习开发中GPU资源就像汽车的发动机直接影响着模型训练的速度和效率。想象一下如果你开车时看不到油表和转速表就无法知道发动机是否在最佳状态工作。同样在TensorFlow开发中不了解GPU的使用情况可能会导致显存溢出导致程序崩溃GPU利用率低下浪费计算资源无法优化模型训练速度多卡训练时负载不均衡TensorFlow-v2.15镜像已经预装了所有必要的GPU驱动和监控工具让我们来看看如何在Jupyter环境中轻松查看这些关键指标。2. 方法一使用nvidia-smi命令行工具2.1 基础用法nvidia-smi是NVIDIA官方提供的GPU监控工具就像给GPU装了一个仪表盘。在Jupyter中只需在一个代码单元格中输入!nvidia-smi执行后会显示类似这样的信息----------------------------------------------------------------------------- | NVIDIA-SMI 525.85.12 Driver Version: 525.85.12 CUDA Version: 12.0 | |--------------------------------------------------------------------------- | 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 A5000 On | 00000000:65:00.0 Off | Off | | 30% 45C P8 18W / 230W | 0MiB / 24564MiB | 0% Default | ---------------------------------------------------------------------------2.2 高级用法如果想持续监控GPU状态可以创建一个定时刷新的监控面板import time from IPython.display import clear_output for i in range(10): # 刷新10次 clear_output(waitTrue) print(f第{i1}次刷新时间{time.strftime(%H:%M:%S)}) !nvidia-smi time.sleep(2) # 每2秒刷新一次这个简单的循环会每2秒刷新一次GPU状态非常适合在长时间训练时观察资源使用情况。3. 方法二使用TensorFlow内置API3.1 查看GPU设备信息TensorFlow本身也提供了一些API来查看GPU信息就像汽车的车载电脑import tensorflow as tf # 列出所有可用的GPU设备 gpus tf.config.list_physical_devices(GPU) print(f检测到 {len(gpus)} 块GPU) for i, gpu in enumerate(gpus): print(fGPU {i}: {gpu.name}) details tf.config.experimental.get_device_details(gpu) print(f设备详情: {details})3.2 监控显存使用情况虽然TensorFlow不直接提供GPU利用率数据但可以获取显存使用信息if gpus: try: mem_info tf.config.experimental.get_memory_info(GPU:0) print(f当前显存使用: {mem_info[current] / 1024**2:.2f} MB) print(f峰值显存使用: {mem_info[peak] / 1024**2:.2f} MB) except Exception as e: print(f无法获取显存信息: {e})4. 方法三使用pynvml库编程监控4.1 安装与基本使用pynvml是NVIDIA提供的Python接口可以获取更详细的GPU数据。首先安装!pip install pynvml然后使用以下代码获取GPU利用率from pynvml import * nvmlInit() handle nvmlDeviceGetHandleByIndex(0) # 第一块GPU util nvmlDeviceGetUtilizationRates(handle) mem_info nvmlDeviceGetMemoryInfo(handle) print(fGPU利用率: {util.gpu}%) print(f显存使用: {mem_info.used / 1024**2:.2f} MB / {mem_info.total / 1024**2:.2f} MB) print(f显存占用率: {mem_info.used / mem_info.total * 100:.2f}%) nvmlShutdown()4.2 创建实时监控面板结合IPython的显示功能可以创建一个漂亮的实时监控面板import time from pynvml import * from IPython.display import display, clear_output import ipywidgets as widgets nvmlInit() handle nvmlDeviceGetHandleByIndex(0) # 创建显示组件 util_output widgets.Output() mem_output widgets.Output() temp_output widgets.Output() display(widgets.VBox([ widgets.Label(GPU实时监控), widgets.HBox([widgets.Label(GPU利用率:), util_output]), widgets.HBox([widgets.Label(显存使用:), mem_output]), widgets.HBox([widgets.Label(温度:), temp_output]) ])) try: for i in range(20): # 监控20次 util nvmlDeviceGetUtilizationRates(handle) mem nvmlDeviceGetMemoryInfo(handle) temp nvmlDeviceGetTemperature(handle, NVML_TEMPERATURE_GPU) with util_output: util_output.clear_output() print(f{util.gpu}%) with mem_output: mem_output.clear_output() print(f{mem.used/1024**2:.1f}MB / {mem.total/1024**2:.1f}MB) with temp_output: temp_output.clear_output() print(f{temp}°C) time.sleep(1) finally: nvmlShutdown()5. 三种方法对比与选择建议方法优点缺点适用场景nvidia-smi简单直接信息全面需要解析文本输出快速查看GPU状态TensorFlow API原生集成无需额外依赖信息有限不支持利用率检查设备可用性pynvml数据精确可编程控制需要额外安装集成到训练脚本中使用建议快速检查时使用!nvidia-smi开发调试时使用pynvml创建监控面板生产环境中将pynvml集成到训练脚本中记录日志6. 总结6.1 核心要点回顾本文介绍了在TensorFlow-v2.15的Jupyter环境中监控GPU状态的三种实用方法nvidia-smi命令行工具最快速直接的方式适合快速检查TensorFlow内置API获取设备信息和基本显存使用情况pynvml编程接口最灵活强大的方式适合集成到代码中6.2 最佳实践建议在模型训练前先用!nvidia-smi确认GPU可用性开发过程中使用pynvml创建实时监控面板长期训练任务中记录GPU使用日志用于后续分析多卡环境下监控每块GPU的使用情况确保负载均衡掌握这些GPU监控技巧就像给深度学习开发装上了仪表盘让你随时了解计算资源的使用情况显著提升开发效率和模型性能。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章