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常用模块介绍
Nov 21 Python
Python3字符串学习教程
Aug 20 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
python 遍历字符串(含汉字)实例详解
Apr 04 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
django 多数据库及分库实现方式
Apr 01 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
Python快速优雅的批量修改Word文档样式
May 20 Python
浅谈Python数学建模之固定费用问题
Jun 23 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+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
js如何实现设计模式中的模板方法
2013/07/23 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
python删除过期文件的方法
2015/05/29 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Python将图片转换为字符画的方法
2020/06/16 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
大学生求职简历的自我评价
2013/10/21 职场文书
科学育儿宣传标语
2014/10/08 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
感恩的心主题班会
2015/08/12 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python