¿Puedo ejecutar el modelo de Keras en gpu?

125

Estoy ejecutando un modelo de Keras, con un plazo de presentación de 36 horas, si entreno mi modelo en la CPU, tomará aproximadamente 50 horas, ¿hay alguna manera de ejecutar Keras en la gpu?

Estoy usando el backend de Tensorflow y ejecutándolo en mi computadora portátil Jupyter, sin anaconda instalada.

Ryan
fuente
Encontré esto: medium.com/@kegui/… Se siente como si uno pudiera leer detenidamente preguntas altamente calificadas en un campo estrecho aquí, y luego hacer una "respuesta" completa en Medium, y ganar dinero real con las vistas.
EngrStudent
Para AMD GPU. Vea esta publicación. stackoverflow.com/a/60016869/6117565
bikram

Respuestas:

175

Sí, puedes ejecutar modelos de keras en GPU. Pocas cosas tendrás que comprobar primero.

  1. su sistema tiene GPU (Nvidia. Como AMD aún no funciona)
  2. Has instalado la versión GPU de tensorflow
  3. Ha instalado las instrucciones de instalación de CUDA
  4. Verifique que tensorflow se esté ejecutando con GPU verifique si la GPU está funcionando

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

O

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

la salida será algo como esto:

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

Una vez hecho todo esto, su modelo se ejecutará en GPU:

Para verificar si keras (> = 2.1.1) está usando GPU:

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

Todo lo mejor.

Vikash Singh
fuente
tendré que instalar Python 3.5 para esto, ¿verdad? ¿De lo contrario, tensorflow no funcionará?
Ryan
No es necesario. TF funciona con 2.7 y 3.5 ambos. Elija la versión correcta de TF, eso es todo.
Vikash Singh
bien, iré con 2.7, tengo problemas con la instalación de 3.5
Ryan
Me sale este error -Could not find any downloads that satisfy the requirement tensorflow in /usr/local/lib/python2.7/dist-packages Downloading/unpacking tensorflow Cleaning up... No distributions at all found for tensorflow in /usr/local/lib/python2.7/dist-packages Storing debug log for failure in /home/hyperworks/.pip/pip.log
Ryan
12
K.tensorflow_backend._get_available_gpus()no funciona en TensorFlow 2.0.
nbro
21

Por supuesto. Supongo que ya ha instalado TensorFlow para GPU.

Debe agregar el siguiente bloque después de importar keras. Estoy trabajando en una máquina que tiene una CPU de 56 núcleos y una 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)

Por supuesto, este uso impone los límites máximos de mis máquinas. Puede disminuir los valores de consumo de cpu y gpu.

Johncasey
fuente
1
Errormodule 'tensorflow' has no attribute 'ConfigProto'
Divyanshu Srivastava
¿Estás usando tensorflow 2? Lo probé para tf 1.X.
johncasey
13

2.0 Respuesta compatible : Si bien la respuesta mencionada anteriormente explica en detalle cómo usar GPU en el modelo Keras, quiero explicar cómo se puede hacer Tensorflow Version 2.0.

Para saber cuántas GPU están disponibles, podemos usar el siguiente código:

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

Para saber a qué dispositivos están asignados sus operaciones y tensores, colóquelo tf.debugging.set_log_device_placement(True)como la primera declaración de su programa.

Al habilitar el registro de ubicación de dispositivos, se imprimen las asignaciones u operaciones de Tensor. Por ejemplo, ejecutando el siguiente código:

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)

da la salida que se muestra a continuación:

Ejecutando op MatMul en dispositivo / trabajo: localhost / réplica: 0 / tarea: 0 / dispositivo: GPU: 0 tf.Tensor ([[22. 28.] [49. 64.]], shape = (2, 2), dtype = float32)

Para obtener más información, consulte este enlace.

Soporte de Tensorflow
fuente
1

Por supuesto. Si está ejecutando en backends de Tensorflow o CNTk, su código se ejecutará en sus dispositivos GPU de forma predeterminada. Pero si los backends de Theano, puede usar lo siguiente

Banderas de Theano:

"THEANO_FLAGS = dispositivo = gpu, floatX = float32 python my_keras_script.py"

Kevin Jarvis
fuente
0

Vea si su script está ejecutando GPU en el Administrador de tareas. De lo contrario, sospeche que su versión de CUDA es la correcta para la versión de tensorflow que está utilizando, como ya sugirieron las otras respuestas.

Además, se requiere una biblioteca CUDA DNN adecuada para la versión CUDA para ejecutar GPU con tensorflow. Descárguelo / extráigalo de aquí y coloque la DLL (por ejemplo, cudnn64_7.dll) en la carpeta bin de CUDA (por ejemplo, C: \ Archivos de programa \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin).

Tae-Sung Shin
fuente