Posso eseguire il modello Keras su gpu?


125

Sto utilizzando un modello Keras, con una scadenza per l'invio di 36 ore, se addeno il mio modello sulla CPU ci vorranno circa 50 ore, c'è un modo per eseguire Keras su GPU?

Sto usando il backend Tensorflow e lo sto eseguendo sul mio notebook Jupyter, senza anaconda installato.


Ho trovato questo: medium.com/@kegui/… Sembra che qui si possano esaminare domande molto apprezzate in un campo ristretto, quindi fare una "risposta" completa su Medium e guadagnare denaro reale dalle visualizzazioni.
EngrStudent

Per GPU AMD. Vedi questo post. stackoverflow.com/a/60016869/6117565
bikram

Risposte:


175

Sì, puoi eseguire i modelli keras su GPU. Poche cose dovrai controllare prima.

  1. il tuo sistema ha GPU (Nvidia. Dato che AMD non funziona ancora)
  2. Hai installato la versione GPU di tensorflow
  3. Hai installato le istruzioni di installazione di CUDA
  4. Verifica che tensorflow sia in esecuzione con la GPU controlla se la GPU funziona

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

O

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

l'output sarà qualcosa del genere:

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

Una volta fatto tutto questo, il tuo modello verrà eseguito su GPU:

Per verificare se keras (> = 2.1.1) utilizza la GPU:

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

Ti auguro il meglio.


dovrò installare python 3.5 per questo diritto? altrimenti tensorflow non funzionerà?
Ryan

Non necessario. TF funziona con 2.7 e 3.5 entrambi. Scegli la versione corretta di TF il gioco è fatto.
Vikash Singh

va bene, malato con 2.7, problemi di havig con l'installazione di 3.5
Ryan

Ottengo questo errore -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()non funziona in TensorFlow 2.0.
nbro

21

Sicuro. Suppongo che tu abbia già installato TensorFlow per GPU.

È necessario aggiungere il seguente blocco dopo aver importato keras. Sto lavorando su una macchina che ha 56 core cpu e 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)

Ovviamente questo utilizzo impone i limiti massimi delle mie macchine. È possibile ridurre i valori di consumo della CPU e della GPU.


1
Erroremodule 'tensorflow' has no attribute 'ConfigProto'
Divyanshu Srivastava il

Stai usando tensorflow 2? L'ho testato per tf 1.X.
johncasey

13

2.0 Risposta compatibile : mentre la risposta sopra menzionata spiega in dettaglio come utilizzare la GPU sul modello Keras, voglio spiegare come può essere fatto Tensorflow Version 2.0.

Per sapere quante GPU sono disponibili, possiamo utilizzare il codice seguente:

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

Per scoprire a quali dispositivi sono assegnate le tue operazioni e i tuoi tensori, inserisci tf.debugging.set_log_device_placement(True)come prima istruzione del tuo programma.

L'abilitazione della registrazione del posizionamento del dispositivo causa la stampa di qualsiasi allocazione o operazione di Tensor. Ad esempio, eseguendo il codice seguente:

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)

fornisce l'output mostrato di seguito:

Esecuzione di op MatMul in device / job: localhost / replica: 0 / task: 0 / device: GPU: 0 tf.Tensor ([[22. 28.] [49. 64.]], shape = (2, 2), dtype = float32)

Per ulteriori informazioni, fare riferimento a questo collegamento


1

Ovviamente. se si esegue su backend Tensorflow o CNTk, il codice verrà eseguito sui dispositivi GPU in modo predefinito, ma se si eseguono backend Theano, è possibile utilizzare quanto segue

Bandiere di Theano:

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


0

Verifica se il tuo script esegue GPU in Task Manager. In caso contrario, sospetta che la tua versione CUDA sia quella giusta per la versione di tensorflow che stai utilizzando, come già suggerito dalle altre risposte.

Inoltre, è necessaria una libreria CUDA DNN adeguata per la versione CUDA per eseguire GPU con tensorflow. Scaricalo / estrailo da qui e inserisci la DLL (ad esempio, cudnn64_7.dll) nella cartella bin CUDA (ad esempio, C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.