Tensorflow, le framework d’intelligence artificielle de Google, se décline en deux versions : la première utilise votre processeur pour faire les calculs (c’est la version de base), tandis que la seconde s’appuie sur votre carte graphique (c’est la version GPU).

On va voir aujourd’hui comment les installer (car y arriver du premier coup relève de l’exploit pour le GPU) sans difficulté !

NB : vous trouverez en fin d’article un diagramme résumant l’installation de Tensorflow GPU.

ATTENTION : j’ai beaucoup de retours par mail sur le fait que dans certains cas ça ne marche pas. Voici les configurations testées et validées, si vous voulez tenter autre chose, allez-y mais pensez d’abord à vérifier que ça marche avec ce qui suit… :

  • Tensorflow GPU 1.10.0 ou 1.12.0 avec Python entre 3.5 et 3.6.5
  • Tensorflow GPU 1.13.1 avec Anaconda 3 (configuration peu recommandée pour un premier test)

=> Tensorflow GPU 1.13 ne marchera pas avec Python pur, et Python 3.7 ne marchera pas avec Tensorflow GPU (la librairie n’est pas encore compatible).

Tensorflow CPU vs GPU : quelle version choisir ?

Dans un ordinateur, le processeur (aussi appelé le CPU = Central Processing Unit) est le composant le plus important car c’est là où sont traitées et exécutées toutes les instructions.

La carte graphique (GPU = Graphic Processing Unit), pour sa part, est utilisée dans le rendu graphique de Windows et des applications, de par sa très forte capacité à calculer (additions, multiplications, etc…) en parallèle.

Or, la très (très) grande majorité des algorithmes d’intelligence artificielle et de deep learning sont, justement, distribués : des calculs en parallèles permettent d’en arriver à bout plus rapidement ! L’écart entre un CPU et un GPU qui traitent le même algorithme peut être de 90% en temps !

Dans la suite nous allons donc voir comment installer les deux versions de Tensorflow suivant vos besoins, mais pour vous donner quelques exemples :

  • Entraîner une IA de génération de tableaux dans le style de Van Gogh = 20h sur CPU, 1h sur GPU
  • Générer un tableau de Van Gogh = 7min sur CPU et 7s sur GPU
  • Détecter une personne avec une caméra (reconnaissance faciale) = 17s sur CPU et 0.3s sur GPU

Tensorflow GPU est en moyenne 10x plus rapide que cpu dans 99% des cas

Remarques :

  • Pour l’entraînement comme pour l’utilisation (prédiction), la version GPU est la plus rapide
  • Nous vous conseillons donc d’installer Tensorflow GPU (si possible)
  • Mais attention, toutes les cartes graphiques ne fonctionnent pas avec Tensorflow GPU, donc vous serez peut-être contraints d’utiliser Tensorflow CPU !

Quelques pré-requis

Installer Python

Que ferait-on sans Python ? Pour la suite nous allons utiliser Python 3, qui est probablement installé sur votre ordinateur.

Si ce n’est pas le cas, cliquez simplement sur « Download Python 3.6.7 » (le numéro de la version sera probablement supérieur pour vous), depuis le site suivant.

ATTENTION : les mises à jour de Tensorflow sont décallées par rapport aux sorties des versions de Python. A l’heure où j’écris ce tutoriel, Tensorflow n’est pas encore compatible avec Python 3.7. Pensez à vérifier quelle est la dernière version gérée (peut-être supérieure à 3.6 lorsque vous lirez ces lignes) 🙂 En général, la version supportée de Python est la dernière principale (2e chiffre) – 1. Si la dernière release de Python est 3.7.X alors la version 3.6.Y sera supportée par tensorflow mais pas la 3.7.Z (peu importe Z).

Ensuite, installez-le normalement en cochant bien la case « ajouter Python au PATH » (sinon, il faudra l’ajouter vous-même en allant dans les variables d’environnement système et en modifiant le PATH pour y ajouter le chemin de python/bin).

Ouvrez une console et écrivez

python

si tout se passe bien vous devriez avoir quelque chose comme ça :

console python
(crédit : Lambert Rosique)

On voit donc que j’utilise la version 3.6.6, et les trois > indiquent que je peux saisir du code Python ici. Dans la suite de ce tutoriel, lorsqu’on écrira « import tensorflow », ce sera justement après ces >>>.

Est-ce que votre carte graphique est compatible ?

cuda gpu
Quelques exemples de cartes compatibles (crédit : Nvidia GeForce)

Pour commencer, seules les cartes NVIDIA sont compatibles avec Tensorflow GPU.

Ensuite, seules les cartes de la page suivante le sont : CUDA GPU. En ce qui me concerne, j’utilise une GeForce GTX 970.

Pour connaître votre modèle de carte graphique, dans la barre de recherche Windows (en bas à gauche) écrivez « exécuter », puis dans la fenêtre qui s’ouvre, tapez « dxdiag ».

Vous devriez alors avoir une fenêtre dans laquelle vous trouverez le nom de la carte graphique :

dxdiag
(crédit : Lambert Rosique)

Si votre carte n’a pas été mise à jour depuis longtemps, nous vous conseillons de le faire, soit en téléchargeant vous-même les pilotes qui conviennent, soit grâce à Nvidia GeForce Experience. Il s’agit d’un logiciel qui vous demandera un compte (gratuit) Nvidia et qui se chargera des mise à jour de votre carte graphique.

Installation sous Windows de Tensorflow GPU (carte graphique)

1) Désinstallation de Tensorflow

Il est probable que vous n’ayez rien à faire dans cette partie, mais pour éviter tout conflit, le mieux est de s’assurer qu’il n’y a pas déjà Tensorflow sur votre ordinateur.

  • Ouvrez une invite de commande et lancez les deux lignes suivantes :
pip uninstall tensorflow-gpu
pip uninstall tensorflow
  • Ouvrez la liste des programmes de votre ordinateur, et désinstallez tout ce qui s’appelle « NVIDIA CUDA … ». Par exemple, Development, Documentation, Runtime, Samples, Visual Studio Integration…

Remarque : tensorflow et tensorflow-gpu ne sont pas incompatibles, mais pour éviter un certain nombre d’erreurs, il vaut mieux les désinstaller tous les deux, quitte à réinstaller tensorflow une fois tensorflow-gpu opérationnel.

2) Installation de Tensorflow GPU

Dans l’invite de commande, lancez cette fois

pip install tensorflow-gpu

Une fois le module installé, vous avez tensorflow GPU !!

Mais ne crions pas victoire, pour qu’il marche, il va falloir installer « cuda » et « cudnn » qui lui permettront de prendre le contrôle de la carte graphique et d’effectuer les calculs d’intelligence artificielle.

Seulement voilà… il est très compliqué d’installer les bonnes versions de ces logiciels (versions qui dépendent de votre version de tensorflow et de votre carte graphique). Heureusement, les erreurs Tensorflow vont nous guider…

3) Vers votre première erreur : CUDA

Dans l’invite de commande, saisissez et validez :

python

Puis après les trois chevrons >>> écrivez et validez :

import tensorflow

Vous devriez avoir l’erreur suivante « ImportError: DLL load failed: Le module spécifié est introuvable. »

Cela signifie simplement que CUDA n’est pas installé.

Installation de CUDA

A l’heure actuelle, il y a deux versions principales de CUDA : la 9 et la 10. On va commencer par essayer d’installer la 10, mais il faut savoir qu’elle ne marche qu’avec les toutes dernières cartes graphiques. Par exemple, ma GTX970 ne marche qu’avec CUDA 9, donc pour gagner du temps, installez la version 9 si vous pensez bien faire, sinon testez la 10 et vous verrez bien (cf partie suivante) !

Allez sur le site de NVIDIA et téléchargez CUDA 9.0 ou 10.0 (NDLR 20/11/19 : la version 10.2 n’est pas encore compatible avec TensorFlow). Les installeurs pèsent environ 1Go (vous pouvez extraire n’importe où, mais le répertoire d’installation est important car il faut éviter les caractères accentués, spéciaux et les espaces dans le chemin !).

Dans la suite, on va supposer que vous avez installé CUDA dans D:\Tools\CUDA\v9.0 (si vous avez CUDA 10, pensez à bien changer les chemins dans la suite).

Variables d’environnement

Dans les variables d’environnement système, ajoutez à la fin du PATH :

D:\Tools\CUDA\v9.0\bin
D:\Tools\CUDA\v9.0\libnvvp
D:\Tools\CUDA\v9.0\extras\CUPTI\libx64

Ajoutez également deux variables CUDA_PATH et CUDA_PATH_V9_0 dont la valeur est :

D:\Tools\CUDA\v9.0

Vérification de l’installation

Dans une nouvelle invite de commande (vous pouvez fermer l’ancienne), écrivez simplement

cuda-memcheck -V

Vous obtiendrez alors une ligne semblable à « CUDA-MEMCHECK version 9.0.176 ID:(44) »

Autres erreurs possibles

Dans quelques cas, il est possible que vous ayez une autre erreur. Sans pouvoir être exhaustif, je vais vous donner les deux plus probables (pour les autres, il faudra chercher sur Internet ou Stack Overflow).

  1. AttributeError: module ‘tensorflow’ has no attribute ‘Session’ : votre installation de tensorflow est corrompue. Il suffit de désinstaller complètement tensorflow et tensorflow-gpu, puis de réinstaller tensorflow-gpu
  2. Problème générique, probablement en rapport avec tensorboard : tensorflow utilise tensorboard, qui peut se montrer « capricieux » parfois. Il faut impérativement avoir tensorboard dans la même version que tensorflow, et désinstaller les versions postérieures ! Le plus simple est donc de faire, si vous avez la version 1.10.0 de tensorflow (gpu ou non) :
pip uninstall tensorboard
pip install tensorboard==1.10.0

4) Vers votre deuxième erreur

Ouvrez une invite de commande et tapez « python » puis « import tensorflow ». Plusieurs erreurs sont possibles à ce niveau-là…

ImportError: DLL load failed: Le module spécifié est introuvable.

Soit CUDA n’a pas été installé (mais si le memcheck a marché, ce n’est pas ça) soit… la version de tensorflow GPU installée n’est pas compatible.

La solution est simple : désinstaller tensorflow-gpu et mettre une version antérieure à la place.

Pour désinstaller, faites :

pip uninstall tensorflow-gpu

Puis pour mettre une version précise (par exemple la 1.10.0 que j’utilise et qui marche bien) :

pip install tensorflow-gpu==1.10.0

Vous pouvez alors relancer python et faire import tensorflow pour avoir une autre erreur !

ImportError: Could not find ‘cudart64_90.dll’

La version de CUDA installée n’est pas compatible avec votre ordinateur. Lorsque j’ai eu cette erreur, j’avais mis CUDA 10, et Tensorflow me dit qu’il faut CUDA 9.0 en 64bits !

Vous pouvez donc désinstaller complètement CUDA puis installer la version indiquée dans la console (ici, la 9 en 64 bits). Pensez à bien changer les variables d’environnement avec la nouvelle installation.

Vous pouvez alors relancer python et faire import tensorflow pour avoir une autre erreur !

Voici le message d’erreur complet de ce paragraphe :

ImportError: Could not find 'cudart64_90.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Download and install CUDA 9.0 from this URL: https://developer.nvidia.com/cuda-90-download-archive

ImportError: Could not find ‘cudnn64_7.dll’

On y est presque, c’est la dernière erreur possible ! Elle vous indique que vous n’avez pas installé cuDNN, ce qui est justement notre prochaine action. Notez, c’est indiqué dans le message d’erreur, qu’il vous faudra la version 7 en 64bits…

Allez sur le site de NVIDIA et connectez-vous à votre compte (ou créez-en un gratuit).

Choisissez la version de cuDNN qui correspond à votre version de CUDA (la 9.0 pour ma part), ainsi qu’à votre système d’exploitation (Windows 10 par exemple).

cudnn
Téléchargement de cuDNN 7 pour CUDA 9.0 (crédit : Nvidia cuDNN)

Une fois le zip téléchargé, il va falloir le fusionner avec votre répertoire CUDA.

Ouvrez le répertoire d’installation de CUDA : D:\Tools\CUDA\v9.0

Dans le zip, vous avez le répertoire « cuda » qui contient les sous-répertoires bin, includes et lib. Prenez ces 3 répertoires du zip et décompressez-les dans le dossier d’installation de CUDA. L’objectif est de fusionner ces 3 répertoires avec ceux de CUDA (s’il y a des conflits, prenez la version du zip).

Une fois ceci fait, vous pouvez ouvrir une console, saisir « python » puis « import tensorflow » et, après quelques secondes, les 3 chevrons >>> devraient réapparaître sans erreur !

python avec tensorflow
Tensorflow est chargé par Python (crédit : Lambert Rosique)

Vous pouvez vous rendre à la dernière partie pour valider que tout est OK !

Voici le message d’erreur complet de ce paragraphe :

ImportError: Could not find 'cudnn64_7.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Note that installing cuDNN is a separate step from installing CUDA, and this DLL is often found in a different directory from the CUDA DLLs. You may install the necessary DLL by downloading cuDNN 7 from this URL: https://developer.nvidia.com/cudnn

Résumé de l’installation de Tensorflow GPU

tensorflow gpu flowchart
(crédit : Lambert Rosique – tous droits réservés)

Installation sous Windows de Tensorflow CPU (processeur)

Comparé à la version ci-dessus, pour installer Tensorflow CPU c’est très simple.

Ouvrez une invite de commande et lancez

pip install tensorflow

et voilà !

Tester la version de Tensorflow utilisée

Félicitations ! Vous avez réussi à installer Tensorflow !

Maintenant, la question se pose : est-ce que vous utilisez Tensorflow CPU ou Tensorflow GPU ?

Pour savoir, ouvrez une invite de commande et saisissez

python

Ensuite, après les trois chevrons >>> importez tensorflow (en lui donnant un alias pour simplifier l’écriture) :

import tensorflow as tf

Enfin, lancez la commande suivante qui permettra d’afficher ce qu’utilise Tensorflow pour tourner sur votre machine :

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

Si vous avez la version GPU, vous devriez avoir les informations suivantes :

tensorflow gpu device found
La carte graphique est détectée (et utilisée) par Tensorflow (crédit : Lambert Rosique)

Sinon, vous aurez un message concernant votre CPU.

Pour conclure, si vous voulez forcer Tensorflow a utiliser le CPU ou le GPU (et que les deux versions sont installées), voici la commande (pour désactiver le GPU par exemple), qui repose sur le « device_count » :

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True,device_count = {'GPU': 0}))

Crédit de l’image de couverture : image modifiée à partir des logos de Tensorflow, Windows 7, Windows 10, Nvidia CUDA et Nvidia cuDNN