pytorch 限制GPU使用效率详解(计算效率)

 更新时间:2020年06月27日 11:03:59   作者:脸码  
这篇文章主要介绍了pytorch 限制GPU使用效率详解(计算效率),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

问题

用过 tensorflow 的人都知道, tf 可以限制程序在 GPU 中的使用效率,但 pytorch 中没有这个操作。

思路

于是我想到了一个代替方法,玩过单片机点灯的同学都知道,灯的亮度是靠占空比实现的,这实际上也是计算机的运行原理。 那我们是不是也可以通过增加 GPU 不工作的时间,进而降低 GPU 的使用效率 ?

主要代码

import time
...
rest_time = 0.15
...
for _ in range( XXX ):
  ...
  outputs = all_GPU_operations( data_set ) # 假设所有的GPU运算都在这里
  time.sleep( rest_time )         # 让显卡休息一会再进行下个循环的使用
  ...
...

这样子 GPU 的使用效率就可以减小了。

rest_time 的越大 GPU 使用率越低,rest_time 的越小 GPU 使用率越高。

缺点是很难直接控制 GPU 的具体使用率,rest_time 得自己调试后确定。

补充知识:深度学习PyTorch,TensorFlow中GPU利用率较低,使用率周期性变化的问题

在用tensorflow训练神经网络时,发现训练迭代的速度时而快时而慢,监督的GPU使用率也是周期性变化,通过了解,发现原因是:

GPU在等待CPU读取,预处理,并传输数据过来,因此要提高GPU的使用率,降低GPU的等待时间,需要加快CPU的处理速度.

在PYTORCH中的解决方案是用torch.utils.data.DataLoader,用num_workers设置线程数:

torch.utils.data.DataLoader(image_datasets[x],
  batch_size=batch_size,
   shuffle=True,
   num_workers=8,
  pin_memory=True)

在tensorflow中的解决方案是用tf.data.Dataset.map(num_parallel_calls=8)中的num_parallel_calls设置读取数据的线程数:

用 tf.data读取数据, tf.data.Dataset中有一个map函数,它有个num_parallel_calls参数,可以控制CPU的线程,加快数据的读取速度,一般将线程设置为8效果最好.

以上这篇pytorch 限制GPU使用效率详解(计算效率)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python绘制计算机CPU占有率变化的折线图

    Python绘制计算机CPU占有率变化的折线图

    这篇文章主要为大家详细介绍了Python绘制计算机CPU占有率变化的折线图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 在python中实现求输出1-3+5-7+9-......101的和

    在python中实现求输出1-3+5-7+9-......101的和

    这篇文章主要介绍了在python中实现求输出1-3+5-7+9-......101的和,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Django REST 异常处理详解

    Django REST 异常处理详解

    这篇文章主要介绍了Django REST 异常处理详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python Flask + Redis 程序练习

    Python Flask + Redis 程序练习

    这篇文章主要给大家分享Python Flask + Redis 程序的练习,准备一个Python文件,名字为 app.py 提供一个web服务,可以访问地址,返回一个Hello Container World!并且记录访问的次数,下面来看看有趣的练习过程吧
    2022-01-01
  • python实现文件批量编码转换及注意事项

    python实现文件批量编码转换及注意事项

    本文通过实例代码给大家介绍了python实现文件批量编码转换及注意事项,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-10-10
  • Python中openpyxl实现vlookup函数的实例

    Python中openpyxl实现vlookup函数的实例

    在本篇文章里小编给大家整理的是关于Python中openpyxl实现vlookup函数的实例内容,有兴趣的朋友们可以学习参考下。
    2020-10-10
  • eclipse创建python项目步骤详解

    eclipse创建python项目步骤详解

    在本篇内容里小编给大家分享了关于eclipse创建python项目的具体步骤和方法,需要的朋友们跟着学习下。
    2019-05-05
  • python中时间模块的基本使用教程

    python中时间模块的基本使用教程

    这篇文章主要给大家介绍了关于python中时间模块的基本使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • pandas通过字典生成dataframe的方法步骤

    pandas通过字典生成dataframe的方法步骤

    这篇文章主要介绍了pandas通过字典生成dataframe的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python词云库wordcloud的使用方法与实例详解

    python词云库wordcloud的使用方法与实例详解

    这篇文章主要介绍了python词云库wordcloud的使用方法与实例详解,需要的朋友可以参考下
    2020-02-02

最新评论