Czy mogę uruchomić model Keras na GPU?

125

Używam modelu Keras, z terminem składania 36 godzin, jeśli trenuję mój model na procesorze, zajmie to około 50 godzin, czy jest sposób, aby uruchomić Keras na GPU?

Używam zaplecza Tensorflow i uruchamiam go na moim notebooku Jupyter bez zainstalowanej anakondy.

Ryan
źródło
Znalazłem to: medium.com/@kegui/… Wydaje się, że można tu przeczytać wysoko oceniane pytania w wąskim polu, a następnie udzielić pełnej „odpowiedzi” na Medium i zarabiać na wyświetleniach.
EngrStudent
Do karty graficznej AMD. Zobacz ten post. stackoverflow.com/a/60016869/6117565
bikram

Odpowiedzi:

175

Tak, możesz uruchamiać modele keras na GPU. Kilka rzeczy, które będziesz musiał najpierw sprawdzić.

  1. twój system ma GPU (Nvidia. Ponieważ AMD jeszcze nie działa)
  2. Zainstalowałeś wersję tensorflow dla GPU
  3. Zainstalowałeś CUDA instrukcje instalacji
  4. Sprawdź, czy tensorflow działa z GPU, sprawdź, czy działa GPU

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

LUB

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

wynik będzie wyglądał mniej więcej tak:

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

Gdy to wszystko zostanie zrobione, Twój model będzie działał na GPU:

Aby sprawdzić, czy keras (> = 2.1.1) korzysta z GPU:

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

Wszystkiego najlepszego.

Vikash Singh
źródło
będę musiał zainstalować Pythona 3.5 do tego, prawda? W przeciwnym razie tensorflow nie będzie działać?
Ryan
Niekoniecznie. TF działa z 2,7 i 3,5. Wybierz odpowiednią wersję TF i to wszystko.
Vikash Singh
w porządku, źle idę z 2.7, mam duże problemy z instalacją 3.5
Ryan
Otrzymuję ten błąd -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
13
K.tensorflow_backend._get_available_gpus()nie działa w TensorFlow 2.0.
nbro
21

Pewnie. Przypuszczam, że już zainstalowałeś TensorFlow dla GPU.

Musisz dodać następujący blok po zaimportowaniu keras. Pracuję na maszynie, która ma 56 rdzeni procesora i procesor graficzny.

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)

Oczywiście to użycie wymusza maksymalne limity na moich komputerach. Możesz zmniejszyć wartości zużycia procesora i procesora graficznego.

johncasey
źródło
1
Błądmodule 'tensorflow' has no attribute 'ConfigProto'
Divyanshu Srivastava
Używasz tensorflow 2? Przetestowałem to dla tf 1.X.
johncasey
13

Zgodna odpowiedź 2.0 : Chociaż powyższa odpowiedź wyjaśnia szczegółowo, jak używać GPU w modelu Keras, chcę wyjaśnić, jak można to zrobić Tensorflow Version 2.0.

Aby dowiedzieć się, ile procesorów graficznych jest dostępnych, możemy skorzystać z poniższego kodu:

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

Aby dowiedzieć się, do jakich urządzeń są przypisane twoje operacje i tensory, wstaw tf.debugging.set_log_device_placement(True) jako pierwszą instrukcję programu.

Włączenie rejestrowania rozmieszczenia urządzeń powoduje wydrukowanie wszelkich alokacji lub operacji Tensora. Na przykład uruchomienie poniższego kodu:

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)

daje wynik pokazany poniżej:

Wykonywanie op MatMul w urządzeniu / zadaniu: localhost / replica: 0 / zadanie: 0 / urządzenie: GPU: 0 tf.Tensor ([[22. 28.] [49. 64.]], shape = (2, 2), dtype = float32)

Aby uzyskać więcej informacji, skorzystaj z tego łącza

Wsparcie Tensorflow
źródło
1

Oczywiście. jeśli korzystasz z backendów Tensorflow lub CNTk, Twój kod będzie domyślnie działał na urządzeniach GPU, ale jeśli korzystasz z zaplecza Theano, możesz użyć następujących

Flagi Theano:

„THEANO_FLAGS = urządzenie = gpu, floatX = float32 python my_keras_script.py”

Kevin Jarvis
źródło
0

Sprawdź, czy Twój skrypt działa na GPU w Menedżerze zadań. Jeśli nie, podejrzewaj, że Twoja wersja CUDA jest odpowiednia dla używanej wersji tensorflow, jak sugerowały już inne odpowiedzi.

Ponadto do uruchomienia GPU z tensorflow wymagana jest odpowiednia biblioteka CUDA DNN dla wersji CUDA. Pobierz / wyodrębnij go stąd i umieść DLL (np. Cudnn64_7.dll) w folderze bin CUDA (np. C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin).

Tae-Sung Shin
źródło