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实现测试磁盘性能的方法
Mar 12 Python
浅析Python中的序列化存储的方法
Apr 28 Python
Python实现对PPT文件进行截图操作的方法
Apr 28 Python
各个系统下的Python解释器相关安装方法
Oct 12 Python
深入解析Python中的上下文管理器
Jun 28 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
Python读取excel指定列生成指定sql脚本的方法
Nov 28 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
Python unittest基本使用方法代码实例
Jun 29 Python
python selenium xpath定位操作
Sep 01 Python
Python实现照片卡通化
Dec 06 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数据采集的详解
2013/06/02 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
Nginx实现反向代理
2017/09/20 Servers
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
分享一个asp.net pager分页控件
2012/01/04 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python中关键字is与==的区别简述
2014/07/31 Python
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
婚前财产公证书
2014/04/10 职场文书
代领毕业证委托书
2014/08/02 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
房屋出售授权委托书
2014/10/12 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
天那边观后感
2015/06/09 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书