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处理python编码问题
Mar 13 Python
python设置检查点简单实现代码
Jul 01 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
python实现内存监控系统
Mar 07 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
Django 路由控制的实现
Jul 17 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
torch 中各种图像格式转换的实现方法
Dec 26 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 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
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
模拟xcopy的函数
2006/10/09 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
基于Vue制作组织架构树组件
2017/12/06 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
判断python字典中key是否存在的两种方法
2018/08/10 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
加拿大留学自荐信
2014/01/28 职场文书
创先争优一句话承诺
2014/05/29 职场文书
公司2014年度工作总结
2014/12/10 职场文书
决心书格式及范文
2019/06/24 职场文书
八年级作文之感恩
2019/11/22 职场文书
Golang表示枚举类型的详细讲解
2021/09/04 Golang