keras系列︱keras是如何指定显卡且限制显存用量

keras在使用GPU的时候有个特点,就是默认全部占满显存。 若单核GPU也无所谓,若是服务器GPU较多,性能较好,全部占满就太浪费了。 于是乎有以下三种情况: - 1、指定GPU - 2、使用固定显存的GPU - 3、指定GPU + 固定显存

一、固定显存的GPU

本节来源于:深度学习theano/tensorflow多显卡多人使用问题集(参见:Limit the resource usage for tensorflow backend · Issue #1538 · fchollet/keras · GitHub) 在使用keras时候会出现总是占满GPU显存的情况,可以通过重设backend的GPU占用情况来进行调节。

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.3
set_session(tf.Session(config=config))

需要注意的是,虽然代码或配置层面设置了对显存占用百分比阈值,但在实际运行中如果达到了这个阈值,程序有需要的话还是会突破这个阈值。换而言之如果跑在一个大数据集上还是会用到更多的显存。以上的显存限制仅仅为了在跑小数据集时避免对显存的浪费而已。(2017年2月20日补充)

二、指定GPU

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

此时的代码为选择了编号为2 的GPU

# python设置系统变量的方法
os.environ["CUDA_VISIBLE_DEVICES"] = "8,9,10,11,12,13,14,15"

注意,在代码中指定设备时,重新从0开始计,而不是从8开始。 来源:Tensorflow 学习笔记(七) ———— 多GPU操作

三、指定GPU + 固定显存

上述两个连一起用就行:

import os
import tensorflow as tf
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.3
set_session(tf.Session(config=config))

那么在命令行,可以使用:https://github.com/tensorflow/nmt/issues/60

CUDA_VISIBLE_DEVICES=0 python -m nmt.nmt 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

TensorFlow正式发布1.5.0,支持CUDA 9和cuDNN 7,双倍提速

来源:Github 编译:费欣欣 【新智元导读】TensorFlow今天正式发布了1.5.0版本,支持CUDA 9和cuDNN 7,进一步提速。并且,从1.6版...

3096
来自专栏一棹烟波

CUDA与OpenGL互操作

当处理较大数据量的时候,往往会用GPU进行运算,比如OpenGL或者CUDA。在实际的操作中,往往CUDA实现并行计算会比OpenGL更加方便,而OpenGL在...

25410
来自专栏10km的专栏

cuDNN兼容性问题造成的caffe/mnist,py-faster-rcnn/demo运行结果错误

问题描述 我有两台电脑,一台笔记本GTX965M显卡,台式机是GTX1060显卡 两台电脑上的软件环境都一样:ubuntu16+cuda8.0+cuDNN4...

21110
来自专栏张善友的专栏

开源OCR引擎Tesseract

知名的开源OCR引擎Tesseract 3.0版本日前发布,可以在项目网站下载:http://code.google.com/p/tesseract-ocr, ...

48510
来自专栏深度学习入门与实践

【原】Learning Spark (Python版) 学习笔记(四)----Spark Sreaming与MLlib机器学习

本来这篇是准备5.15更的,但是上周一直在忙签证和工作的事,没时间就推迟了,现在终于有时间来写写Learning Spark最后一部分内容了。   第10-1...

26710
来自专栏烂笔头

使用captcha模块生成图形验证码

目录[-] captcha模块是专门用于生成图形验证码和语音验证码的Python三方库。图形验证码支持数字和英文单词。 安装 安装 可以直接使用 pip 安...

6415
来自专栏AI科技大本营的专栏

不会用Photoshop抠图?Mask R-CNN助你一键“除”人

翻译 | 林椿眄 编辑 | 费棋 【AI科技大本营导读】:看过英剧《黑镜》吗?圣诞特别版《白色圣诞节》中有这样一个场景:其中一个未来科技有自由屏蔽人像的功能,可...

4057
来自专栏ATYUN订阅号

保存并加载您的Keras深度学习模型

Keras是一个用于深度学习的简单而强大的Python库。 鉴于深度学习模式可能需要数小时、数天甚至数周的时间来培训,了解如何保存并将其从磁盘中加载是很重要的...

5316
来自专栏Kubernetes

利用Kubernetes和Helm进行高效的超参数调优

在进行Hyperparameter Sweep的时候,我们需要根据许多不同的超参数组合进行不同的训练,为同一模型进行多次训练需要消耗大量计算资源或者耗费大量时间...

1341
来自专栏AI研习社

手写体数字识别该如何选择GPU并实现?DeepLearning4j 实战

在之前的博客中已经用单机、Spark分布式两种训练的方式对深度神经网络进行训练,但其实DeepLearning4j也是支持多GPU训练的。 这篇文章我就总结下用...

3313

扫码关注云+社区