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使用自定义user-agent抓取网页的方法
Apr 15 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
利用Python实现图书超期提醒
Aug 02 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
Django csrf 验证问题的实现
Oct 09 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
python Django的web开发实例(入门)
Jul 31 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 Python
用Python实现一个打字速度测试工具来测试你的手速
May 28 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
js查找父节点的简单方法
2008/06/28 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
对pandas进行数据预处理的实例讲解
2018/04/20 Python
python实现泊松图像融合
2018/07/26 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
玲玲的画教学反思
2014/02/04 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB