148 votes

Puis-je exécuter un modèle Keras sur un processeur graphique ?

J'exécute un modèle Keras, avec une date limite de soumission de 36 heures. Si j'entraîne mon modèle sur le cpu, cela prendra environ 50 heures, y a-t-il un moyen d'exécuter Keras sur le gpu ?

J'utilise le backend Tensorflow et l'exécute sur mon Jupyter notebook, sans qu'anaconda soit installé.

2 votes

J'ai trouvé ça : medium.com/@kegui/ On a l'impression que l'on pourrait parcourir des questions très bien notées dans un domaine étroit ici, puis faire une "réponse" complète sur Medium, et gagner de l'argent grâce aux vues.

1 votes

Pour les GPU AMD. Voir cet article. stackoverflow.com/a/60016869/6117565

201voto

Vikash Singh Points 6103

Oui, vous pouvez exécuter des modèles keras sur GPU. Vous devez d'abord vérifier quelques points.

  1. votre système est équipé d'un GPU (Nvidia, car AMD ne fonctionne pas encore).
  2. Vous avez installé la version GPU de tensorflow.
  3. Vous avez installé CUDA instructions de montage
  4. Vérifiez que tensorflow fonctionne avec le GPU. vérifier si le GPU fonctionne

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

pour TF > v2.0

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

(Merci à @nbro et @Ferro de l'avoir signalé dans les commentaires).

OU

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

La sortie sera quelque chose comme ceci :

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

Une fois que tout cela est fait, votre modèle fonctionnera sur le GPU :

Pour vérifier si keras(>=2.1.1) utilise le GPU :

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

Tous les meilleurs.

0 votes

Je dois installer python 3.5 pour cela, n'est-ce pas ? sinon tensorflow ne fonctionnera pas ?

0 votes

Ce n'est pas nécessaire. TF fonctionne avec 2.7 et 3.5 à la fois. Choisissez la bonne version de TF, c'est tout.

0 votes

D'accord, je vais prendre la 2.7, j'ai des problèmes avec l'installation de la 3.5.

23voto

johncasey Points 180

Bien sûr. Je suppose que vous avez déjà installé TensorFlow pour GPU.

Vous devez ajouter le bloc suivant après l'importation de keras. Je travaille sur une machine qui possède un processeur 56 cœurs et un processeur graphique.

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)

Bien sûr, cette utilisation applique les limites maximales de ma machine. Vous pouvez diminuer les valeurs de consommation de cpu et de gpu.

4 votes

Erreur module 'tensorflow' has no attribute 'ConfigProto'

0 votes

Vous utilisez tensorflow 2 ? Je l'ai testé pour tf 1.X.

1 votes

La seule réponse qui indique réellement que l'utilisation de keras sur un gpu nécessite l'installation d'une autre pile de logiciels, depuis le pilote nvidia jusqu'au build '-gpu' de keras lui-même, en plus de l'installation et de la liaison correcte de cudnn et cuda.

22voto

Tensorflow Support Points 1706

2.0 Réponse compatible : Si les réponses ci-dessus expliquent en détail comment utiliser le GPU sur le modèle Keras, je veux expliquer comment cela peut être fait pour le modèle Keras. Tensorflow Version 2.0 .

Pour savoir combien de GPUs sont disponibles, nous pouvons utiliser le code ci-dessous :

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

Pour savoir à quels dispositifs vos opérations et tenseurs sont affectés, mettez tf.debugging.set_log_device_placement(True) comme première déclaration de votre programme.

L'activation de la journalisation du placement des périphériques entraîne l'impression de toutes les allocations ou opérations de Tensor. Par exemple, en exécutant le code ci-dessous :

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)

donne la sortie montrée ci-dessous :

Exécution de l'opération MatMul dans le périphérique /job:localhost/replica:0/task:0/device:GPU:0 tf.Tensor( [[22. 28.]] [49. 64.]], shape=(2, 2), dtype=float32)

Pour plus d'informations, voir ce lien

0 votes

Il y a maintenant des XLA_GPU qui ne sont pas affichés si je ne liste que 'GPU'. C'est peut-être aussi la raison pour laquelle Keras ne semble pas voir mon GPU.

2voto

Kevin Jarvis Points 21

Bien sûr, si vous utilisez les backends Tensorflow ou CNTk, votre code s'exécutera par défaut sur vos GPU, mais si vous utilisez les backends Theano, vous pouvez utiliser la méthode suivante

Les drapeaux Theano :

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

1voto

MonkeyBack Points 51

J'utilise Anaconda sous Windows 10, avec une GTX 1660 Super. J'ai d'abord installé l'environnement CUDA en suivant ce qui suit étape par étape . Cependant, il existe maintenant un keras-gpu métapackage disponible sur Anaconda qui apparemment ne nécessite pas l'installation préalable des bibliothèques CUDA et cuDNN (les miennes étaient déjà installées de toute façon).

C'est ce qui a fonctionné pour moi pour créer un environnement dédié nommé. 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

Pour ajouter à la réponse de @johncasey mais pour TensorFlow 2.0 l'ajout de ce bloc fonctionne pour moi :

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)

Ce poste a résolu le set_session erreur que j'ai obtenue : vous devez utiliser le backend keras du chemin tensorflow au lieu de keras lui-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X