我可以在gpu上运行Keras模型吗?

时间:2017-08-13 15:58:58

标签: python tensorflow keras jupyter

我正在运行Keras模型,提交截止日期为36小时,如果我在cpu上训练我的模型大约需要50个小时,有没有办法在gpu上运行Keras?

我正在使用Tensorflow后端并在我的Jupyter笔记本上运行它,没有安装anaconda。

7 个答案:

答案 0 :(得分:105)

是的,您可以在GPU上运行keras模型。你必须先检查几件事。

  1. 你的系统有GPU(Nvidia。因为AMD还没有工作)
  2. 您已安装了tensorflow的GPU版本
  3. 您已安装CUDA installation instructions
  4. 使用GPU check if GPU is working
  5. 验证tensorflow是否正在运行

    sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

    OR

    from tensorflow.python.client import device_lib
    print(device_lib.list_local_devices())
    

    输出将是这样的:

    [
      name: "/cpu:0"device_type: "CPU",
      name: "/gpu:0"device_type: "GPU"
    ]
    

    完成所有这些后,您的模型将在GPU上运行:

    检查keras(> = 2.1.1)是否正在使用GPU:

    from keras import backend as K
    K.tensorflow_backend._get_available_gpus()
    

    一切顺利。

答案 1 :(得分:17)

2.0兼容答案:虽然上面提到的答案详细说明了如何在Keras Model上使用GPU,但我想说明如何为Tensorflow Version 2.0完成它。

要知道有多少个GPU,我们可以使用以下代码:

print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

要了解您的操作和张量分配给哪些设备, 将tf.debugging.set_log_device_placement(True)作为程序的第一条语句。

启用设备放置日志记录将导致打印任何Tensor分配或操作。例如,运行以下代码:

tf.debugging.set_log_device_placement(True)

# Create some tensors
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)

print(c)

给出如下所示的输出:

在设备中执行操作MatMul / job:localhost / replica:0 / task:0 / device:GPU:0 tf.Tensor([[22. 28.] [49。 64.]],形状=(2,2),dtype = float32)

有关更多信息,请参见this link

答案 2 :(得分:10)

不确定。我想你已经为GPU安装了TensorFlow。

导入keras后需要添加以下块。我正在开发一台拥有56个核心cpu和一个gpu的机器。

import keras
import tensorflow as tf


config = tf.ConfigProto( device_count = {'GPU': 1 , 'CPU': 56} ) 
sess = tf.Session(config=config) 
keras.backend.set_session(sess)

当然,这种用法会强制我的机器达到最大限制。您可以减少cpu和gpu消耗值。

答案 3 :(得分:1)

我在 Windows 10 上使用 Anaconda 和 GTX 1660 Super。我首先在此 step-by-step 之后安装了 CUDA 环境。然而,现在 Anaconda 上有一个 keras-gpu 元包可用,它显然不需要事先安装 CUDA 和 cuDNN 库(我的已经安装了)。

这就是我创建名为 keras_gpu 的专用环境的原因:

# need to downgrade from tensorflow 2.1 for my particular setup
conda create --name keras_gpu keras-gpu=2.3.1 tensorflow-gpu=2.0

要添加 @johncasey 的答案,但对于 TensorFlow 2.0,添加此块对我有用:

import tensorflow as tf
from tensorflow.python.keras import backend as K

# adjust values to your needs
config = tf.compat.v1.ConfigProto( device_count = {'GPU': 1 , 'CPU': 8} )
sess = tf.compat.v1.Session(config=config) 
K.set_session(sess)

This post 解决了我遇到的 set_session 错误:您需要使用 tensorflow 路径中的 keras 后端,而不是 keras 本身。

答案 4 :(得分:0)

当然。如果您在Tensorflow或CNTk后端上运行,则代码将默认在GPU设备上运行。但是,如果Theano后端,则可以使用以下

  

Theano标志:

     
    

“ THEANO_FLAGS = device = gpu,floatX = float32 python my_keras_script.py”

  

答案 5 :(得分:0)

查看您的脚本是否在任务管理器中运行GPU。如果不是,请怀疑您的CUDA版本是您所使用的张量流版本的正确版本,其他答案已经建议了。

此外,要使用tensorflow运行GPU,还需要一个适用于CUDA版本的正确CUDA DNN库。从symbolize_names下载/解压缩该DLL(例如cudnn64_7.dll)并将其放入CUDA bin文件夹(例如C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin)。

答案 6 :(得分:0)

使用 Tensorflow 2.5,基于@MonkeyBack 的回答:

df=pd.date_range(start="1970-01-09",end="2020-10-30").to_pydatetime().tolist()

df=pd.DataFrame(df,columns=['dte'])

dataFrameVar = df['dte_']

dataFrameVar.replace(year = 2019)