Python跑pytorch程序抢占公共GPU自动运行脚本

这篇具有很好参考价值的文章主要介绍了Python跑pytorch程序抢占公共GPU自动运行脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

当我们有一个服务器,服务器上面有4-5个GPU,那么我们需要时刻看哪个GPU空着,当发现服务器空闲了,我们就可以跑自己的深度学习了。

然而,人盯着总是费时费力的,所以可以让Python看到哪个GPU空闲就插进去吗?
进行下面步骤即可。

第一步、安装GPU信息查看包

名字为:nvidia_ml_py-12.535.133-py3-none-any.whl,
下载地址:https://pypi.org/project/nvidia-ml-py/
Python跑pytorch程序抢占公共GPU自动运行脚本,python,pytorch,开发语言

当然,如果网络足够好,可以直接利用pip安装:

pip install nvidia-ml-py

第二步、编码select_gpu

即判定抢占GPU的代码

import torch
from pynvml import *
import time
import sys


# count传GPU个数,threshold是阈值,低于此阈值说明GPU是空闲的,second是每几秒进行继续轮训
def select_gpu(count=torch.cuda.device_count(), threshold=1024, second=5):
    nvmlInit()
    if count == 0:
        return 'cpu'
    # 需要在多个GPU轮训找出空闲的GPU
    current = 0
    while True:
        # 检查当前GPU是否可用
        handle = nvmlDeviceGetHandleByIndex(current)
        info = nvmlDeviceGetMemoryInfo(handle)
        used_memory = info.used // (1024 * 1024)
        if used_memory < threshold:  # 如果刺入小于阈值的内存,那么说明此GPU并没有被占用,可抢占
            sys.stderr.write(
                f'此时GPU{current}使用内存为[{used_memory}MB],低于阈值[{threshold}]才可抢占----GPU{current}可抢占,将抢占GPU:{current}号GPU----{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}\n')
            nvmlShutdown()
            return current
        else:
            sys.stderr.write(
                f'此时GPU{current}使用内存为[{used_memory}MB],低于阈值[{threshold}]才可抢占----GPU{current}不可抢占,继续轮训----{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}\n')
        time.sleep(second)
        current = (current + 1) % count

select_gpu共三个参数
select_gpu 用于抢占GPU
参数1:count传GPU个数,默认传torch.cuda.device_count(),即存在的GPU个数
参数2:threshold是阈值,低于此阈值说明GPU是空闲的,默认1024MB [GPU一般什么都不跑,也会被占用几十MB]
参数3:second是每几秒进行继续轮训,默认5秒

返回值:为可以选用GPU的编号。

第三步、编写运行深度学习代码,以YOLOv8为例

from ultralytics import YOLO
from select_gpu_util import select_gpu
import sys

if __name__ == '__main__':
    sys.stderr.write('程序已运行\n')
    # select_gpu 用于抢占GPU
    # 参数1:count传GPU个数,默认传torch.cuda.device_count(),即存在的GPU个数
    # 参数2:threshold是阈值,低于此阈值说明GPU是空闲的,默认1024MB [GPU一般什么都不跑,也会被占用几十MB]
    # 参数3:second是每几秒进行继续轮训,默认5秒
    device = select_gpu(threshold=3000)  # 获取能够抢占的GPU
    model = YOLO("ultralytics/cfg/models/v8/yolov8.yaml")  # build a new model from scratch
    # Train the model
    if sys.platform.startswith('win'):  # Windows环境下
        results = model.train(data="YAML/xxx.yaml", epochs=200, device=device, workers=0, batch=1)
    else:  # Linux系统环境下
        results = model.train(data="YAML/xxx.yaml", epochs=200, device=device, workers=2, batch=8)

# 温馨提示:启动命令为 nohup python -u train_shwd+GAM.py >shwdlog/gamdaoer.log &
#                                 -u的作用是不设置缓冲区,让所有的文本直接输出到log

第四步、运行代码,查看运行效果

运行一般让程序不挂起、并且后台运行,运行命令为:

nohup python -u train_shwd+GAM.py >shwdlog/gamdaoer.log &

-u的作用是不设置缓冲区,让所有的文本直接输出到log,若不-u会很难受,不信自行尝试
效果图:
Python跑pytorch程序抢占公共GPU自动运行脚本,python,pytorch,开发语言文章来源地址https://www.toymoban.com/news/detail-798549.html

到了这里,关于Python跑pytorch程序抢占公共GPU自动运行脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GPU性能的简单测试脚本(pytorch版)

    2024年02月14日
    浏览(31)
  • 从 Python 程序中运行 PowerShell 脚本

    Windows PowerShell 由数十个内置 cmdlet 组成,它们提供了丰富的功能集。 其中一些功能是独一无二的,只能通过 PowerShell 获得; 因此,如果我们能够在 Python 等其他编程语言中使用 PowerShell 脚本,那将非常有用。 本文将重点讨论从 Python 代码执行 PowerShell 逻辑。 在Python中,可以

    2024年01月16日
    浏览(38)
  • Pycharm里配置Pytorch-gpu(运行informer算法模型)

    1.下载Anaconda安装包 去官网 https://www.anaconda.com/download下载适合自己操作系统的Anaconda安装包。 (以Windows为例) 2.安装Anaconda 双击下载后的“Anaconda3-2023.09-0-Windows-x86_64.exe”,进行安装。点击“Next”。  选择安装路径,最好选择C盘以外的路径。 选择“安装选项”,根据自己的

    2024年02月03日
    浏览(35)
  • pytorch 测量模型运行时间,GPU时间和CPU时间,model.eval()介绍

    time.time() time.perf_counter() time.process_time() time.time() 和time.perf_counter() 包括sleep()time 可以用作一般的时间测量,time.perf_counter()精度更高一些 time.process_time()当前进程的系统和用户CPU时间总和的值 测试代码: 测试结果: 更详细解释参考 Python3.7中time模块的time()、perf_counter()和proce

    2024年02月06日
    浏览(31)
  • 【Python】无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案

    大家好 我是寸铁👊 总结了一篇【Python】无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案✨ 喜欢的小伙伴可以点点关注 💝 今天寸铁在使用 pip 安装包时,报错如下: 具体如下: 下面跟着寸铁一步步把问题解决吧!!! 出现这种问题,一般来说是

    2024年04月10日
    浏览(47)
  • Python 实现程序自动以管理员权限运行的方法

    由于Windows的安全机制,Python写的脚本缺少了管理员权限,运行就会受到一些限制。 文章介绍Python 脚本自动以管理员权限运行的方法, 也就是如果脚本不是以管理员运行,就自动提升到管理员权限。 将python提升到管理员权限运行需要调用 ShellExecute 这个API函数。 ShellExecute 函

    2024年02月12日
    浏览(40)
  • python运行使用gpu运算【python基础】python开启GPU加速

    1.首先需要确认是否成功安装cuda,代码见图一;打印结果如图二所示。  图一   图二  2.如果未安装成功可以自行搜索,不麻烦;安装成功后需要分三步设置使用GPU,以简单的softmax分类器为例: a.导入os模块 b.将模型放进GPU中运算。  c.更改训练、测试两个步骤,使用GPU运算

    2024年02月16日
    浏览(33)
  • Linux 系统设置开机自动运行脚本的方法

    在工作中,我们经常有个需求,那就是在系统启动之后,自动启动某个脚本或服务。在 Windows 下,我们有很多方法可以设置开机启动,但在 Linux 系统下我们需要如何操作呢? Linux 下同样可以设置开机启动,但可能需要我们敲一些命令(可能也有 UI 界面的设置方法,但我不熟

    2024年02月12日
    浏览(31)
  • Python运行selenium程序执行结束后自动关闭浏览器 解决方法 亲测有效

    最近朋友在学Selenium的时候遇到一个问题,当执行完selenium程序后,浏览器会闪退也就是自动关闭,程序中也没有写driver.quit()或driver.close()方法,解决后发布上来以供学习交流。 内容比较简单,这里直接附上代码: (1)修改前 (2)修改后:

    2024年02月11日
    浏览(48)
  • 关于GPU显卡、CUDA版本、python版本、pytorch版本对应

    提示:算力、cuda版本、python版本、pytorch版本有一项不匹配都无法使用 一、查看自己计算机的当前cuda版本以及gpu的算力 二、根据算力下载对应的cuda版本 三、根据算力以及CUDA版本下载查看需要的pytorch版本 四、下载可以兼容上述Pytorch版本的python 五、下载上述pytorch版本 查看

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包