5分钟上手GPUtil:Python获取GPU信息的终极工具

【免费下载链接】gputil A Python module for getting the GPU status from NVIDA GPUs using nvidia-smi programmically in Python 【免费下载链接】gputil 项目地址: https://gitcode.com/gh_mirrors/gp/gputil

GPUtil是一款专为Python开发者设计的终极GPU状态监控工具,它通过nvidia-smi命令以编程方式获取NVIDIA GPU的实时状态信息。无论是深度学习模型训练还是GPU资源管理,GPUtil都能帮助开发者轻松掌握GPU的负载、内存使用等关键指标,让GPU资源管理变得简单高效。

🚀 为什么选择GPUtil?

在进行深度学习训练或GPU密集型计算时,了解GPU的实时状态至关重要。GPUtil作为一款轻量级Python模块,具有以下优势:

  • 简单易用:几行代码即可获取所有GPU信息
  • 功能全面:支持监控GPU负载、内存使用、温度等关键指标
  • 灵活定制:可根据负载和内存使用筛选可用GPU
  • 广泛兼容:支持Python 2.x和3.x,与主流深度学习框架无缝集成

📋 准备工作

使用GPUtil前,需确保系统满足以下要求:

  • NVIDIA GPU及最新驱动
  • Python环境(2.x或3.x版本均可)
  • 系统已安装nvidia-smi(通常随NVIDIA驱动自动安装)

GPUtil依赖的Python标准库包括:subprocess、distutils、math、random、time、os、sys和platform,无需额外安装这些依赖。

⚡ 快速安装步骤

安装GPUtil非常简单,推荐使用pip安装方式:

  1. 打开终端(Ctrl+Shift+T)
  2. 运行以下命令:
    pip install gputil
    

验证安装

安装完成后,可通过以下步骤验证:

  1. 打开Python终端
  2. 输入以下代码:
    import GPUtil
    GPUtil.showUtilization()
    

如果安装成功,将看到类似以下的GPU状态输出:

 ID  GPU  MEM
--------------
  0    0%   0%

🔍 核心功能详解

获取所有GPU信息

使用getGPUs()方法可以获取系统中所有GPU的详细信息:

import GPUtil
gpus = GPUtil.getGPUs()
for gpu in gpus:
    print(f"GPU ID: {gpu.id}")
    print(f"GPU名称: {gpu.name}")
    print(f"GPU负载: {gpu.load*100}%")
    print(f"内存使用: {gpu.memoryUtil*100}%")
    print(f"总内存: {gpu.memoryTotal}MB")
    print(f"已用内存: {gpu.memoryUsed}MB")
    print(f"空闲内存: {gpu.memoryFree}MB")
    print(f"温度: {gpu.temperature}°C")

显示GPU利用率

showUtilization()方法提供了友好的GPU状态表格展示:

# 显示基本信息
GPUtil.showUtilization()

# 显示详细信息
GPUtil.showUtilization(all=True)

查找可用GPU

getAvailable()方法可以根据负载和内存使用情况筛选可用GPU:

# 获取所有可用GPU,按ID升序排列
available_gpus = GPUtil.getAvailable(order='first', limit=999)
print("所有可用GPU ID:", available_gpus)

# 获取负载最低的GPU
least_loaded_gpu = GPUtil.getAvailable(order='load', limit=1)
print("负载最低的GPU ID:", least_loaded_gpu)

# 获取内存使用率最低的GPU
least_memory_gpu = GPUtil.getAvailable(order='memory', limit=1)
print("内存使用率最低的GPU ID:", least_memory_gpu)

获取第一个可用GPU

getFirstAvailable()方法可以直接获取第一个符合条件的可用GPU:

# 获取第一个可用GPU
first_available = GPUtil.getFirstAvailable()
print("第一个可用GPU ID:", first_available)

# 设置更严格的条件:负载<10%,内存使用<10%
strict_available = GPUtil.getFirstAvailable(maxLoad=0.1, maxMemory=0.1)
print("符合严格条件的GPU ID:", strict_available)

💻 实战应用示例

在TensorFlow中指定GPU

在多GPU环境中,使用GPUtil可以轻松选择特定GPU运行TensorFlow:

import os
import tensorflow as tf
import GPUtil

# 获取第一个可用GPU
device_id = GPUtil.getFirstAvailable()[0]

# 设置环境变量指定GPU
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = str(device_id)

# 在指定GPU上运行
with tf.Session() as sess:
    with tf.device(f'/gpu:0'):
        a = tf.constant(12)
        b = tf.constant(30)
        result = sess.run(a + b)
        print(f"计算结果: {result}")
        print(f"使用GPU ID: {device_id}")

GPU监控线程

创建一个独立线程定期监控GPU状态:

import GPUtil
from threading import Thread
import time

class GPUMonitor(Thread):
    def __init__(self, delay):
        super(GPUMonitor, self).__init__()
        self.stopped = False
        self.delay = delay  # 监控间隔(秒)
        self.start()
    
    def run(self):
        while not self.stopped:
            print("\n当前GPU状态:")
            GPUtil.showUtilization()
            time.sleep(self.delay)
    
    def stop(self):
        self.stopped = True

# 创建监控线程,每10秒更新一次
monitor = GPUMonitor(10)

# 模拟长时间任务
time.sleep(30)

# 停止监控
monitor.stop()

📝 总结

GPUtil作为一款轻量级但功能强大的GPU监控工具,为Python开发者提供了便捷的GPU状态获取和管理方式。无论是在深度学习模型训练中选择合适的GPU,还是监控GPU资源使用情况,GPUtil都能满足需求。通过本文介绍的安装和使用方法,您可以在5分钟内快速掌握这个实用工具,让GPU资源管理变得更加高效和智能。

要获取更多示例代码和详细文档,请查看项目中的demo_GPUtil.py文件。

【免费下载链接】gputil A Python module for getting the GPU status from NVIDA GPUs using nvidia-smi programmically in Python 【免费下载链接】gputil 项目地址: https://gitcode.com/gh_mirrors/gp/gputil

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐