MARGO

Actualité

Introduction à TensorFlow sur le datalab de Google Cloud Platform

Découvrez TensorFlow et développez votre premier programme


04/05/2018

Qu’est-ce que TensorFlow ?

TensorFlow est une librairie logicielle, open source depuis 2015, de calcul numérique développée par Google. La particularité de TensorFlow est son utilisation des graphes de flux de données (data flow graphs).

TensorFlow a été développé par des chercheurs et des ingénieurs de Google afin de mener à bien des projets de recherche en apprentissage automatisé (machine learning) ainsi que sur le sujet des réseaux de neurones profonds (deep neural networks). Le système est néanmoins assez généraliste pour être applicable dans une large gamme de domaines d’application. TensorFlow permet notamment d’entraîner des modèles nécessitant de gros volumes de données (par exemple des banques d’images) de façon optimale.

L’architecture flexible de TensorFlow permet de déployer le calcul sur un ou plusieurs CPU/GPU sur un ordinateur personnel, un serveur etc. sans avoir à réécrire de code.

Google a également développé des Tensor Processing Units (ou TPU) construits spécialement pour l’apprentissage automatisé et pour être utilisés avec TensorFlow. Les TPU sont destinés à utiliser et tester des modèles plutôt qu’à les entraîner. Depuis Février 2018, les TPU sont disponibles sur la version beta de Google Cloud Platform.

TensorFlow est basé sur l’infrastructure DistBelief (Google 2011) et est doté d’une interface Python qui se présente sous une forme atypique bas niveau (plus adaptée à l’architecture machine) par rapport aux usages habituels de Python. Il ne faut donc pas paniquer si TensorFlow vous demande un certain temps d’adaptation !

De nombreuses entreprises et applications utilisent aujourd’hui TensorFlow. Parmi elles, Airbnb, Nvidia, Uber, Dropbox, Ebay, Google (bien sûr), Snapchat, Twitter…et bien d’autres encore !

Grâce au datalab, TensorFlow peut être utilisé sur la GCP, soit sur la configuration par défaut, soit en personnalisant une machine virtuelle : choix du nombre de cœurs, choix CPU/GPU etc.

 

Comment se présente TensorFlow ?

Comme indiqué un peu plus haut, TensorFlow représente les calculs sous la forme d’un graphe d’exécution.

Les nœuds du graphe représentent les opérations mathématiques, comme l’addition, la multiplication, la multiplication matricielle, la dérivation fonctionnelle etc.

Les arrêtes du graphe représentent les tenseurs, communicant entre les nœuds. Un tenseur peut être par exemple un entier, un vecteur, une image etc. Chaque nœud du graphe prend donc en entrée différents tenseurs, effectue son calcul, puis retourne de nouveaux tenseurs.

Exemple :

1+4=5

deriv(2x)=2

Le code associé à TensorFlow se divise en deux étapes principales, la construction et l’exécution. Pendant la phase de construction, les variables et les opérations du graphe sont définies et assemblées. La création du graphe est ensuite automatiquement gérée par TensorFlow afin de permettre l’optimisation et la parallélisation du code et de l’exécution.

La phase d’exécution utilise une session afin d’exécuter les opérations du graphe. Un graphe ne va exécuter les opérations qu’après création d’une session. Une session permet de placer les opérations du graphe dans des les composants (CPU/GPU/TPU) et met à disposition des méthodes pour les exécuter. Le lancement des opérations du graphe se fait via la méthode run() de la session comme nous le verrons un peu plus loin. Ce système d’exécution de graphe est une des propriétés fondamentales de TensorFlow et permet d’exécuter toutes les opérations du graphe en une seule fois.

TensorFlow possède de nombreuses options pour faire du Deep Learning, facilitant ainsi la construction d’un réseau de neurones, son utilisation et son entraînement de façon optimale.

 

Google Cloud Platform

Google Cloud Platform (ou GCP) est une plateforme en ligne développée par Google. Cette plateforme met à disposition des services de création de machines virtuelles et de réseaux.

Qu’est-ce qu’on peut y faire ?

  • calculer
  • stocker
  • faire de l’apprentissage automatisé/apprentissage profond
  • et bien plus encore !

Dans ce mini-tutoriel, nous allons vous apprendre comment :

  • ouvrir un compte gratuit sur GCP
  • utiliser datalab sur GCP via un ordinateur personnel sous GNU/Linux
  • écrire votre premier programme en TensorFlow

 

Création d’un compte sur GCP

Comment accéder à la GCP ?

Vous avez accès à un crédit gratuit d’environ 300$/250€ offert sur la plateforme valable un an. On vous demandera de remplir les informations relatives à votre carte bancaire. Votre compte ne sera PAS débité. Il s’agit d’une mesure de précaution à l’encontre d’une utilisation abusive de la GCP.

Ensuite,

  • cliquez sur Découvrir la console. Un didacticiel se met en route pour accompagner votre prise en main de la plateforme.
  • créez/sélectionnez un projet
  • suivez les instructions
  • cliquez sur Go to console

Créez (ou sélectionnez) un projet sur GCP en cliquant sur

https://console.cloud.google.com/cloud-resource-manager

 

Cliquez sur le lien suivant pour activer Google Compute Engine and Cloud Source Repositories APIs pour le projet choisi :

https://console.cloud.google.com/flows/enableapi?apiid=compute,sourcerepo.googleapis.com

 

Installation de gcloud sur votre ordinateur

Nous allons maintenant installer Google Cloud SDK sur votre ordinateur. Google Cloud SDK ne marche pas avec Python 3 pour le moment. Vérifiez que vous disposez d’une version de Python 2 de type Python 2.7.9 ou plus récente sur votre ordinateur en utilisant la commande

      python2 –V

 

Si besoin, mettez votre Python à niveau

      sudo apt-get install python2.7

 

A présent, téléchargez l’un des paquets suivants en fonction de l’architecture de votre machine:

Plateforme Lien Taille
Linux 64-bit (x86_64) https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-187.0.0-linux-x86_64.tar.gz 18.5 MB
Linux 32-bit (x86) https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-187.0.0-linux-x86.tar.gz 18.1 MB

Vous pouvez extraire le fichier où vous voulez dans votre système de fichier.

      tar zxvf nom_du_fichier.tar.gz

 

Tapez ensuite les deux lignes de commandes suivantes

      source ‘./google-cloud-sdk/path.bash.inc’

      source ‘./google-cloud-sdk/completion.bash.inc’

 

Exécutez enfin gcloud init pour initialiser le SDK.

      ./google-cloud-sdk/bin/gcloud init

 

Suivre les instructions de configuration : choisir/créer un projet, choisir une zone etc.

Vous pouvez maintenant accéder à l’aide :

      gcloud –help

 

Accès au datalab

 

A présent, mettez à jour gcloud

gcloud components update

 

Installez maintenant  gcloud datalab component.

gcloud components install datalab

 

Créez à présent une instance Cloud Datalab. Le nom de l’instance doit commencer avec une lettre minuscule, suivie par un maximum de 63 lettres minuscules, chiffres ou traits d’union.

Attention !  Le nom de l’instance ne peut pas se terminer par un trait d’union.

datalab create nom_de_votre_instance

 

Suivez les instructions. Choisissez un secteur géographique proche de l’endroit où vous vous trouvez. Vous devez entrer une phrase pour générer une clé publique.

Attention ! Si le processus est trop long ou échoue, n’hésitez pas à recommencer la création de l’instance. Lors de cette étape, il y a souvent des problèmes de connexion.

Si vous retournez sur votre tableau de bord GCP, et que vous cliquez sur les 3 barres en haut à gauche, puis sur Compute Engine, votre instance apparaît comme active.

Enfin, lorsque la connexion au datalab est ouvrez la page d’accueil du Cloud Datalab dans votre navigateur grâce au lien suivant: http://localhost:8081

Vous avez ainsi accès à un notebook Jupyter. Créez un nouveau Jupyter notebook en cliquant sur le symbole ‘+’ à gauche de Notebook.

Note: pour relancer une instance après l’avoir quittée

datalab connect nom_de_votre_instance

 

Nous vous proposons maintenant un micro-tutoriel d’introduction à TensorFlow sur la Google Cloud Platform.

 

Mon premier programme en TensorFlow sur GCP

    1) Hello world !

Tapez les lignes de commande suivantes dans votre Jupyter notebook. Pour valider une cellule, tapez Shift+Entrée.

      import tensorflow as tf           # Importation de la librairie TensorFlow
bonjour = tf.constant(‘Bonjour!’) # Définition d’une constante bonjour contenant la chaîne de caractère ‘Bonjour!’

 

Si vous tapez bonjour dans votre notebook,  vous obtenez

            <tf.Tensor ‘Const:0’ shape=() dtype=string>

C’est normal, il manque une brique fondamentale de TensorFlow que nous avons évoqué plus tôt dans cet article, la session via la fonction tf.Session() de TensorFlow
session = tf.Session()           # Création d’une session

Un message d’erreur peut apparaître, n’en tenez pas compte.

 

session.run(bonjour)             # Exécution de la session

 

‘Bonjour!’

Ce petit exemple introduit deux éléments essentiels pour tout programme en TensorFlow, les fonction Session() et run().

 

    2) Opérations mathématiques de base

 

x = tf.constant(3)                      # Définition de la constante x=3

      y = tf.constant(2)                      # Définition de la constante x=2

 

X = tf.constant([1,0], shape=(2,1))     # Définition du vecteur constant X

M = tf.constant([1,1,2,2], shape=(2,2)) # Définition de la matrice constante M

 

      resultat_1 = tf.add(x, y)               # Addition

      resultat_2 = tf.multiply(x, y)          # Multiplication

resultat_3 = tf.matmul(M, X)            # Multiplication matricielle

 

      session = tf.Session()                  # Création d’une session

 

      session.run(resultat_1)                 # Exécution de la session

      session.run(resultat_2)                 # Exécution de la session

session.run(resultat_3)                 # Exécution de la session

 

Comme précédemment, n’oubliez pas d’exécuter la session !

 

    3) Variables et initialisation

 

Dans TensorFlow, les variables sont définies et manipulées grâce à  tf.Variable().

x=tf.Variable(0)

 

Une variable représente un tenseur dont la valeur peut changer en exécutant un calcul.

      x = tf.constant(0)

      y = tf.Variable(x + 1)

 

Remarque : les variables doivent être initialisées avant que le graphe puisse les utiliser. On utilise pour cela la fonction tf.global_variables_initializer().

Petit exemple de programme :

import tensorflow as tf

 

      x = tf.constant(0)

      y = tf.Variable(x + 1)

 

      initialisation = tf.global_variables_initializer() # Initialisation des variables

 

      with tf.Session() as session:

      session.run(initialisation)

      print(session.run(y))

Exemple d’utilisation : une Variable peut être utilisée pour contenir les poids w d’un réseau de neurones, et est donc mise à jour au cours de l’entraînement du modèle.

 

    4) Placeholders

 

Un Placeholder est un Tenseur créé via la méthode tf.placeholder(). Lors de sa création, on n’assigne aucune valeur précise au Placeholder, on spécifie uniquement le type de données et leur dimension

x = tf.placeholder(tf.float32, shape=(1024, 1024)) # création du placeholder x de type float32 et de dimension (1024, 1024)

 

Un Placeholder peut être vu comme une Variable qui ne recevra ses données que plus tard dans le programme, pendant la partie exécution. La valeur est fixée grâce pendant le run d’un calcul.

      x = tf.placeholder(tf.float32, shape=(1024, 1024)) # création du placeholder x

      y = tf.matmul(x, x) #

 

      with tf.Session() as sess:

             rand_array = np.random.rand(1024, 1024) # définition de rand_array

print(sess.run(y, feed_dict={x: rand_array}))  # on donne à x la valeur rand_array pendant l’exécution

 

Exemple d’utilisation : à chaque itération de l’entraînement d’un réseau de neurones, on utilise un Placeholder afin alimenter le modèle avec un nouveau batch d’images.

 

Conclusion

 

Vous avez à présent un crédit de 250€ sur GCP et vous savez également accéder au datalab à partir de votre ordinateur. Enfin, vous avez écrit vos premières lignes de code en TensorFlow et vous avez les bases pour comprendre des codes avancés écrits dans ce langage.

Pour aller plus loin, vous trouverez dans le datalab de GCP des exemples plus complexes d’application de TensorFlow, ainsi que d’autres tutoriels d’apprentissage automatisé.

Bonne exploration !

 

Références et sources

 


Big Data
Data
Google
Actualité

Mener à bien un projet data : une route encore semée d'embûches

En 2020, les investissements des entreprises dans les projets data devraient dépasser les 203 milliards de dollars au niveau mondial. Mais à l'heure où beaucoup se revendiquent être des Data Driven Companies, nombre de projets data se soldent encore par un échec.

15/10/2018 Découvrir 
Actualité

Tutoriel : Quelques bases en python pour la prédiction de séries temporelles

Dans ce tutoriel, nous introduisons quelques concepts élémentaires en séries temporelles afin de pouvoir effectuer “rapidement” des prédictions de valeurs futures sur des données temporelles. Loin d’être exhaustif, ce premier tutoriel présente quelques outils de base en Python permettant d’effectuer de premiers traitements. Le code permettant de retrouver ces résultats est ici : https://gitlab.com/margo-group/public/SeriesTemporelles.

11/09/2018 Découvrir 
Actualité

Kaggle Challenge : Ad Tracking fraud detection pour TalkingData

TalkingData est la plus grande plateforme indépendante de services Big Data en Chine, couvrant plus de 70% des appareils mobiles actifs dans tout le pays. Ils traitent 3 milliards de clics par jour, dont 90% sont potentiellement frauduleux. Afin de garder une longueur d'avance sur les fraudeurs, ils se sont tournés vers la communauté Kaggle pour obtenir de l'aide dans le développement de leur solution. Le sujet du challenge : créer un algorithme qui prédit si un utilisateur va télécharger une application après avoir cliqué sur une annonce d'application mobile.

31/05/2018 Découvrir 
Actualité

La Data Science appliquée au monde du retail : les 10 use-cases incontournables

La Data Science impacte de plus en plus les business model dans toutes les industries, et notamment dans la vente de détail. Selon IBM, 62% des détaillants déclarent que l'utilisation de techniques relatives au Big Data leur donne un sérieux avantage compétitif. Savoir ce que veut votre client et à quel moment est aujourd’hui à portée de main grâce à la data science. Pour cela il suffit d’avoir les bons outils et les bons processus en place pour les utiliser. Nous présentons dans cet article 10 applications essentielles de la data science au domaine du retail.

18/05/2018 Découvrir 
Actualité

Introduction aux systèmes réactifs

Les systèmes réactifs sont un style d’architecture permettant à de multiples applications individuelles de se fondre en une seule unité, en réagissant à leur environnement, tout en restant conscientes les unes des autres. La première formalisation de ce terme a vu le jour avec la création du « Reactive Manifesto » en 2013 par Jonas Boner qui, en rassemblant certains des esprits les plus brillants dans l’industrie des systèmes distribués, souhaitait clarifier la confusion autour de la réactivité (qui est devenu un « buzz-word ») et construire une base solide pour un style de développement viable.

04/05/2018 Découvrir 
Actualité

Mise en place d'une plateforme centralisée de gestion des logs avec la suite Elastic

Les cas d’usage de la suite elastic sont nombreux. Nous citons à titre d’exemple la correction d’un dysfonctionnement applicatif par la récupération des erreurs explicites (exception, message d’erreur ..etc) et le suivi de la charge d’une application (mémoire consommée, CPU ..etc), ce qui permet d’avoir une vision globale de la production. De même au niveau métier, il est possible d’exploiter la suite pour valider une chaîne de workflow par l’extraction des données spécifiques et leurs analyses.

04/05/2018 Découvrir