Kan ik het Keras-model op gpu draaien?

Ik gebruik een Keras-model, met een deadline voor indiening van 36 uur. Als ik mijn model op de cpu train, duurt het ongeveer 50 uur. Is er een manier om Keras op gpu te draaien?

Ik gebruik de Tensorflow-backend en voer deze uit op mijn Jupyter-notebook, zonder dat anaconda is geïnstalleerd.


Antwoord 1, autoriteit 100%

Ja, je kunt Keras-modellen op GPU draaien. Er zijn een paar dingen die u eerst moet controleren.

  1. uw systeem heeft GPU (Nvidia. Aangezien AMD nog niet werkt)
  2. U heeft de GPU-versie van tensorflow geïnstalleerd
  3. U hebt CUDA installatie-instructies
  4. geïnstalleerd

  5. Controleer of tensorflow actief is met GPU controleer of GPU werkt

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

voor TF > v2.0

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

(Bedankt @nbro en @Ferro voor het aangeven in de reacties)

OF

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

uitvoer zal ongeveer als volgt zijn:

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

Zodra dit alles is voltooid, draait uw model op GPU:

Om te controleren of keras(>=2.1.1) GPU gebruikt:

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

Het allerbeste.


Antwoord 2, autoriteit 12%

Natuurlijk. Ik neem aan dat je TensorFlow voor GPU al hebt geïnstalleerd.

Je moet het volgende blok toevoegen na het importeren van keras. Ik werk aan een machine met 56 core cpu en een 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)

Natuurlijk dwingt dit gebruik de maximale limieten van mijn machines af. U kunt de cpu- en gpu-verbruikswaarden verlagen.


Antwoord 3, autoriteit 10%

2.0-compatibel antwoord: hoewel bovenstaand antwoord in detail uitlegt hoe GPU op Keras Model te gebruiken, wil ik uitleggen hoe dit kan worden gedaan voor Tensorflow Version 2.0.

Om te weten hoeveel GPU’s er beschikbaar zijn, kunnen we de onderstaande code gebruiken:

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

Als u wilt weten aan welke apparaten uw bewerkingen en tensoren zijn toegewezen,
zet tf.debugging.set_log_device_placement(True)als eerste statement van je programma.

Als u logboekregistratie van apparaatplaatsingen inschakelt, worden eventuele Tensor-toewijzingen of bewerkingen afgedrukt. Voer bijvoorbeeld de onderstaande code uit:

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)

geeft de hieronder getoonde output:

Op MatMul uitvoeren in apparaat
/job:localhost/replica:0/task:0/device:GPU:0 tf.Tensor( [[22.28.]
[49. 64.]]], vorm = (2, 2), dtype = float32)

Raadpleeg voor meer informatie deze link


Antwoord 4

natuurlijk. Als u op TensorFlow of CNTK-backds gebruikt, wordt uw code uitgevoerd op uw GPU-apparaten. BUIT ALS DEAINO BACKSUITEN, kunt u het volgende

gebruiken

Theano vlaggen:

“theano_flags = apparaat = GPU, floatx = float32 python my_keras_script.py”


Antwoord 5

Ik gebruik Anaconda op Windows 10, met een GTX 1660 Super. Ik heb eerst de CUDA-omgeving geïnstalleerd na deze stap voor stap . Er is echter nu een keras-gpuMetapackage beschikbaar op Anaconda, die blijkbaar niet nodig is om de CUDA- en CUDNN-bibliotheken van tevoren te installeren (de mijne was al sowieso).

Dit is wat voor mij werkte om een ​​toegewijde omgeving te maken met de naam 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

Om toe te voegen aan @Johncase’s antwoord, maar voor Tensorflow 2.0 , het toevoegen van dit blok werkt voor mij:

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)

Dit berichtloste de set_session-fout op die ik kreeg: je moet de keras-backend gebruiken van het tensorflow-pad in plaats van keras zelf.


Antwoord 6

Controleer of uw script GPU draait in Taakbeheer. Als dat niet het geval is, vermoed dan dat uw CUDA-versie de juiste is voor de tensorflow-versie die u gebruikt, zoals de andere antwoorden al suggereerden.

Bovendien is een goede CUDA DNN-bibliotheek voor de CUDA-versie vereist om GPU met tensorflow uit te voeren. Download/pak het uit hieren plaats de DLL (bijv. cudnn64_7.dll) in CUDA bin-map (bijv. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin).

Other episodes