web-dev-qa-db-fra.com

Comment puis-je vérifier si keras/tensorflow utilise cuDNN?

J'ai installé CUDA et CUDNN, mais le dernier ne fonctionnait pas, donnant beaucoup de messages d'erreur dans theeano. Maintenant, je suis en train de former des réseaux de navigation profonde de taille moyenne dans Keras/Tensorflow, sans recevoir de message d’erreur CUDNN. Comment puis-je vérifier si le CuDNN est maintenant utilisé?

2
hirschme

tl; dr: Si tensorflow-gpu fonctionne, alors CuDNN est utilisé.

Les fichiers binaires prédéfinis de TensorFlow (au moins depuis la version 1.3) sont liés à la bibliothèque CuDNN. Si CuDNN est manquant, un message d'erreur vous indiquera ImportError: Could not find 'cudnn64_7.dll'. TensorFlow requires that this DLL be installed....

Selon la documentation d'installation de TensorFlow pour la version 1.5 , CuDNN doit être installé pour la prise en charge du processeur graphique, même si vous le construisez à partir des sources. Le code TensorFlow présente encore beaucoup de solutions de repli dans le cas où CuDNN n’est pas disponible - pour autant que je sache, jadis, il était facultatif dans les versions précédentes.

Voici deux lignes de la source TensorFlow qui indiquent et forcent explicitement que CuDNN est requis pour l'accélération gpu .

Une version GPU spéciale de TensorFlow doit être installée pour pouvoir utiliser le GPU (et CuDNN). Assurez-vous que le package python installé est tensorflow-gpu et pas seulement tensorflow.

Vous pouvez lister les paquets contenant "tensorflow" avec conda list tensorflow (ou tout simplement pip list, si vous n'utilisez pas anaconda), mais assurez-vous que le bon environnement est activé.

Lorsque vous exécutez vos scripts avec le support GPU, ils commencent comme suit:

Using TensorFlow backend.

2018- ... C:\tf_jenkins\...\gpu\gpu_device.cc:1105] Found device 0 with properties:
name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.7845

Pour le tester, tapez simplement dans la console:

import tensorflow as tf
tf.Session()

Pour vérifier si vous "voyez" le numéro CuDNN de votre environnement python et validez ainsi une variable PATH correcte, vous pouvez essayer ceci:

import ctypes
ctypes.WinDLL("cudnn64_7.dll") # use the file name of your cudnn version here.
5
Thomas Jochmann

Vous voudrez peut-être aussi vous pencher sur les couches Keras optimisées pour le GPU.

  • CuDNNLSTM
  • CuDNNGRU

Ils sont nettement plus rapides: https://keras.io/layers/recurrent/#cudnnlstm

Nous avons constaté une amélioration 10 fois supérieure des couches Keras de LSTM à CuDNNLSTM.

Remarque: Nous avons également constaté une augmentation de 10 fois l’utilisation de VMS (mémoire virtuelle) sur la machine. Donc, il y a des compromis à considérer.

0
data_sci_guy