Allowing GPU memory growth

本文介绍如何在TensorFlow中管理和控制GPU内存使用。包括使用allow_growth选项按需分配GPU内存,以及通过per_process_gpu_memory_fraction选项限定进程可使用的GPU内存量。
部署运行你感兴趣的模型镜像

默认情况下,TensorFlow会占用所有GPUs的所有GPU内存(取决于CUDA_VISIBLE_DEVICES这个系统变量),这样做可以减少内存碎片,更有效地利用设备上相对宝贵的GPU内存资源。

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

第一个是“allow_growth”选项,它仅仅基于运行时的分配来分配更多的GPU内存:它开始分配非常少的内存,并且随着Session的运行和更多的GPU内存需求,扩展TensorFlow所需的GPU内存区域。这可能导致很糟糕的内存碎片。要打开此选项,请在ConfigProto中将设置为:

#allow growth
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)
# 使用allow_growth option,刚一开始分配少量的GPU容量,然后按需慢慢的增加,由于不会释放内存,所以会导致碎片

第二个方法是“pre_process_gpu_memory_fraction“选项,它决定了每个可见的GPU应分配的内存总量的百分比。例如,你可以告诉TensorFlow仅仅分配总内存的40%,通过以下设定就可以实现:

# per_process_gpu_memory_fraction
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, ...)
#设置每个GPU应该拿出多少容量给进程使用,0.4代表 40%

如果你想限制TensorFlow进程可利用的GPU内存数量,以上对你非常的有用。

Reference:

【1】https://www.tensorflow.org/guide/using_gpu

【2】TensorFlow炼丹(1) Using GPUs - 张天亮的文章 - 知乎 https://zhuanlan.zhihu.com/p/28083241

【3】https://blog.youkuaiyun.com/u012436149/article/details/53837651

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值