TensorFlow 显存使用机制详解


Posted in Python onFebruary 03, 2020

默认情况下,TensorFlow 会映射进程可见的所有 GPU 的几乎所有 GPU 内存(取决于 CUDA_VISIBLE_DEVICES)。通过减少内存碎片,可以更有效地使用设备上相对宝贵的 GPU 内存资源。

在某些情况下,最理想的是进程只分配可用内存的一个子集,或者仅根据进程需要增加内存使用量。 TensorFlow 在 Session 上提供两个 Config 选项来进行控制。

(1) : 自主申请所用的内存空间

第一个是 allow_growth 选项,它试图根据运行时的需要来分配 GPU 内存:它刚开始分配很少的内存,随着 Session 开始运行并需要更多 GPU 内存,我们会扩展 TensorFlow 进程所需的 GPU 内存区域。请注意,我们不会释放内存,因为这可能导致出现更严重的内存碎片情况。要开启此选项,请通过以下方式在 ConfigProto 中设置选项:

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)

(2) 规定 可用最大内存占单个GPU的总内存比例

第二个是 per_process_gpu_memory_fraction 选项,它可以决定每个可见 GPU 应分配到的内存占总内存量的比例。例如,您可以通过以下方式指定 TensorFlow 仅分配每个 GPU 总内存的 40%:

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, ...)

如要真正限制 TensorFlow 进程可使用的 GPU 内存量,这非常实用。

以上这篇TensorFlow 显存使用机制详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学Python之入门(三)序列
May 25 Python
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
在python中画正态分布图像的实例
Jul 08 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
pytorch构建多模型实例
Jan 15 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 Python
opencv python如何实现图像二值化
Feb 03 #Python
python实现人机猜拳小游戏
Feb 03 #Python
如何使用selenium和requests组合实现登录页面
Feb 03 #Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 #Python
Tensorflow 实现释放内存
Feb 03 #Python
手把手教你进行Python虚拟环境配置教程
Feb 03 #Python
解决TensorFlow GPU版出现OOM错误的问题
Feb 03 #Python
You might like
PHP简单创建压缩图的方法
2016/08/24 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
jquery 笔记 事件
2011/11/02 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
原生js开发的日历插件
2017/02/04 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
js实现烟花特效
2020/03/02 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
Python程序设计入门(1)基本语法简介
2014/06/13 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
深入解析Python中的WSGI接口
2015/05/11 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
python浪漫表白源码
2019/04/05 Python
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
python列表推导式操作解析
2019/11/26 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
元旦红领巾广播稿
2014/02/19 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
计划生育工作汇报
2014/10/28 职场文书
第二次离婚起诉书
2015/05/18 职场文书