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自动安装pip
Apr 24 Python
python实现绘制树枝简单示例
Jul 24 Python
Python正则表达式的使用范例详解
Aug 08 Python
Python 类与元类的深度挖掘 II【经验】
May 06 Python
Python实现图片转字符画的示例
Aug 22 Python
python实现简单聊天应用 python群聊和点对点均实现
Sep 14 Python
使用python生成目录树
Mar 29 Python
Python标准库shutil用法实例详解
Aug 13 Python
对python 命令的-u参数详解
Dec 03 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
执行Python程序时模块报错问题
Mar 26 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 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 中使用随机数的三个步骤
2006/10/09 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
[01:44]Ti10举办地公布
2019/08/25 DOTA
Python获取linux主机ip的简单实现方法
2016/04/18 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
Python logging设置和logger解析
2019/08/28 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
2015年卫生监督工作总结
2015/05/21 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏