Microsoft Windows10 Subsystem Linux & Google Tensorflow

Tensorflow

Tensorflow est l’outillage open source de deep learning de Google. Les bibliothèques de calcul sont compilées et s’activent via des appels en python ou en C. La différence principale avec des outils comparables comme Theano est, en simplifiant, que Tensorflow permet de créer des enchaînements de travaux sous forme de graphes ( des batchs, donc !) ce qui évitent aux données de remonter vers l’appelant avant de redescendre pour le traitement suivant : On y gagne des performances significatives.

Travailler en python avec anaconda

Pepinno a fait le choix de travailler en python. En ‘open data science’, on conseille volontiers de travailler avec anaconda qui est un ensemble de bibliothèques python et R pour le traitement des données (exemple : numpy), associé avec un configurateur, conda, permettant d’isoler différents environnements en gérant les dépendances personnelles de chacun. Cela permet entre autres de pouvoir jouer avec plusieurs versions python sans se mélanger les octets.

Va donc pour une première installation de Anaconda directement sur Windows 10 (64bits).

Pas de soucis en suivant les docs en ligne d’Anaconda . On peut créer des environnements dédiés à une version pour un sujet  (on  prépare par exemple un lieu d’accueil par : conda create -n mytensorflow python=2.7  ) . Excellent pour travailler en python.

Pas de tensorflow pour Windows

On s’apprête à installer Tensorflow mais, au moment de télécharger les outils,  🙁 grosse déception :
Tensorflow n’a pas de version pour Windows ! 
( RTFM before, next time )

WSL : Windows Subsystem Linux

N’ayant pas envie de monter une Virtual Machine Ubuntu, ou d’utiliser un Docker (qui lui-même nécessitera une mini VM Linux d’amorce) et restant joueur, on est tombé sur la bêta de WSL Windows Subsystem for Linux  qui permet d’avoir un environnement Bash linux directement géré par Windows ( une sorte de Cygwin nativement supporté ).

Pas de problème particulier en suivant la documentation d’activation de WSL , et après un reboot, on a désormais une belle icône disponible :

Windows WSL

Windows WSL

qui lance directement un bash :

Console Bash sous Windows

A bien noter qu’il ne s’agit que d’un Ubuntu « système » et qu’il n’est pas possible d’aller y mettre un bureau KDE ou autres : on travaillera en ligne de commandes, le reste … restant Windows.

Par exemple, on n’aura pas de navigateur disponible en Linux et on utilisera son navigateur windows pour les downloads (si on ne veut pas passer par curl, bien sûr).

Mais, comme c’est bien intégré, on retrouvera le contenu de toute sa machine windows en passant par

/mnt/<drive letter> .

Exemple :

wsl-bash2

Quand à l’installation du noyau Linux sous Windows, il se trouve en :

C:\Users\<your name>\AppData\Local\lxss 

Attention : ce répertoire n’est pas visible dans l’explorateur (même en activant la visibilité des fichiers cachés). Il faut en taper le chemin :

wsl-windows

 

Voilà pour cette étape. On va pouvoir réviser les commandes Linux 😉

La prochaine étape: installation de Anaconda sous ce WSL- Linux, suivi de l’installation de Tensorflow lui-même

Installation de Anaconda – python – sous WSL

Après avoir installé WSL, on y ajoute Anaconda  pour Linux, mais qu’on télécharge avec son navigateur sous Windows faute de bureau Linux. On retrouve ce fichier  dans
c:\users\<yourName>\Downloads ,  ce qui se retrouve en linux dans :
/mnt/c/Users/<yourName>/Downloads  (attention à la casse sous Linux).

Pour cet essai, nous avons téléchargé une version  python 2.7.2.

On exécute le download de la version Linux sous le shell WSL-Ubuntu :

/mnt/c/Users/plaurent/Downloads/Anaconda2-4.2.0-Linux-x86_64.sh

On accepte la licence et l’installation se déroule avec le dépôt d’environ 200 packages. La création d’un path bash pour de futurs appels permettra d’appeler directement  anaconda.

Il faut relancer un terminal après installation et on peut déjà vérifier que c’est en place, par exemple avec un $ conda list qui affichera la liste des packages (de l’environnement conda courant ).

Installation de Tensorflow via Anaconda

On suit les instructions du site ici  et on commence par créer un environnement isolé par :

$ conda create -n tensorflow python=2.7 

anaconda-3

A noter une petite restriction précisée par le site :« Only the CPU version of TensorFlow is available at the moment« , on ne pourra donc pas utiliser l’accélération GPU de la machine à ce stade.

On se place dans l’environnement qu’on vient de créer :

$ source activate tensorflow 

( en Linux la commande nécessite le mot-clé « source » ). On voit le changement d’environnement par un préfixe devant le prompt. On peut alors installer Tensorflow:

conda install -c conda-forge tensorflow

(une première fois se passe mal avec une runtime error de connexion. Comme on peut soupçonner un problème de réseau, on recommence et cette fois ça semble ok . Toujours insister…)

anaconda-5

Test de l’installation Tensorflow sous WSL

On suit les instructions données pour tester  ici .

Les appels à tensorflow sous python fonctionnent et on peut passer au premier demo model qui se trouve chargé avec les outils et qui se trouve sous le chemin suivant, dû à l’isolation de l’environnement anaconda :/

home/<yourName>/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow

Apprentissage des chiffres manuscrits MNIST

Ce test MNIST est un peu le « hello world » du deep learning et sert à tester les algorithmes.

Plus de détails sur Wikipédia ici .

Chiffres manuscrits

Chiffres manuscrits

Pour éviter de taper le chemin complet, on peut lancer l’exemple en laissant python rechercher le chemin tout seul par -m :

$ python -m tensorflow.models.image.mnist.convolutional

tensor_0

ça tourne, ça tourne…

On laisse tourner sans connaitre exactement la clause de fin et après environ 30 mn et 8500 itérations dans notre cas, on voit la fin de l’apprentissage avec des taux d’erreurs inférieurs à 1% :

tensor_1

On en profite pour rappeler qu’il faut toujours 3 jeux de données : les données d’apprentissage, les données de validation (extraits des données d’apprentissage) et les données de tests (données n’ayant pas participé à l’apprentissage) . ( cf cours d’IA de Stanford par exemple )

Conclusions

Le portage d’un noyau Linux par Microsoft nativement dans WIN10, WSL, permet de choisir de faire tourner du python sous Windows ou sous Linux.

L’outillage « Data analysis » Anaconda s’installe indifféremment dans les deux environnements. (Ils ont seulement  quelques différences dans les commandes).

Tensorflow de Google, packages systèmes appelables par du python, n’existe aujourd’hui qu’en version Linux. Son installation sous WSL et Anaconda fonctionne correctement.


 

Annexe : jupyter

Certains tutoriaux proposés par Google utilise le REPL ( read–eval–print loop ) iPython présent dans  jupyter,  La bonne nouvelle est que jupyter est installé par défaut par anaconda et qu’il suffit de le lancer (dans la console Ubuntu de WSL) par :

Jupyter Notebook

puis de se rendre à l’url :

http://localhost:8888/ 

On dispose alors des commodités d’un browser de fichiers :

jupyter

et d’un browser des environnements Conda,  où on retrouve notre tensorflow avec tous les détails.

jupyter

Une prochaine étape avortée : charger un tutorial tensorflow dans jupyter.

Si le tutorial se charge bien, l’exécution du notebook dans jupyter part dans le mur. Le problème est identifié mais pas résolu : WSL ne dispose pas d’une fonction système utilisée par un des packages nécessaires. A suivre …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*