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之简单主机批量管理工具
Jan 27 Python
requests和lxml实现爬虫的方法
Jun 11 Python
Python入门之三角函数sin()函数实例详解
Nov 08 Python
对Python3中的input函数详解
Apr 22 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
Python的互斥锁与信号量详解
Sep 12 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 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
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
javascript整除实现代码
2010/11/23 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
javascript常见操作汇总
2014/09/03 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
小程序转发探索示例
2019/02/19 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
收集的几个Python小技巧分享
2014/11/22 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
go语言计算两个时间的时间差方法
2015/03/13 Python
python实现简单登陆流程的方法
2018/04/22 Python
python打开使用的方法
2019/09/30 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
python 实现简单的FTP程序
2019/12/27 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
综合测评自我鉴定
2013/10/08 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
建筑安全生产责任书
2014/07/22 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
单位委托书怎么写
2014/09/21 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS