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


Posted in Python onJune 27, 2020

问题

用过 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 相关文章推荐
python计算书页码的统计数字问题实例
Sep 26 Python
使用FastCGI部署Python的Django应用的教程
Jul 22 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
Python单例模式实例详解
Mar 01 Python
Python continue继续循环用法总结
Jun 10 Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
pandas.cut具体使用总结
Jun 24 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
Keras搭建自编码器操作
Jul 03 Python
Python3中最常用的5种线程锁实例总结
Jul 07 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 Python
Pytorch 高效使用GPU的操作
Jun 27 #Python
Keras中的两种模型:Sequential和Model用法
Jun 27 #Python
keras输出预测值和真实值方式
Jun 27 #Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 #Python
浅谈keras 模型用于预测时的注意事项
Jun 27 #Python
python suds访问webservice服务实现
Jun 26 #Python
解析Python 偏函数用法全方位实现
Jun 26 #Python
You might like
php中curl使用指南
2015/02/05 PHP
功能强大的php文件上传类
2016/08/29 PHP
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
Vuex入门到上手教程
2018/06/20 Javascript
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
Python编程中NotImplementedError的使用方法
2018/04/21 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
django foreignkey(外键)的实现
2019/07/29 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
python颜色随机生成器的实例代码
2020/01/10 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
中专自我鉴定范文
2013/10/16 职场文书
七年级历史教学反思
2014/02/05 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
协议书格式模板
2016/03/24 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
MySQL数据库完全卸载的方法
2022/03/03 MySQL