Azure Machine Learning Workbench : première prise en main

Introduction

Le but d’Azure Machine Learning est d’analyser des données, puis de développer et d’implémenter des modèles statistiques à l’aide de différents outils.

L’un de ces outils se nomme Azure Machine Learning Workbench. Il est constitué d’une application de bureau (cela s’apparente à Power BI Desktop) ainsi que d’outils en ligne de commande. Il vous permet de gérer des solutions d’apprentissage automatique dans l’intégralité du cycle de vie des sciences des données.

Pour l’installation, on peut suivre le tutorial suivant :

https://docs.microsoft.com/fr-fr/azure/machine-learning/preview/quickstart-installation

Remarque : Lors de la création du service Azure Machine Learning Expérimentation. Il est impératif que notre espace de stockage soit dans la même région que ce dernier.

Ingestion et préparation des données

 

On commence par créer un nouveau projet. Pour cela, il suffit de cliquer sur la croix et d’appuyer sur new project comme représenté ci-dessous :

Par la suite, on renseigne le nom du projet. On peut sauvegarder ce dernier et faire du versionning dans un Repo Git si on le souhaite. Dans le search Project Templates, nous disposons de plusieurs types de projet préprogrammer, nous avons un exemple connu : le projet Iris. Dans notre cas, nous allons choisir blank project.

Après avoir créé notre projet, on va charger un fichier CSV à partir d’un répertoire local. On se positionne sur l’onglet vue de données :

On clique sur la croix en haut à gauche puis sur add a datasource :

Par la suite, nous chargeons notre fichier en déroulant les étapes indiquées sur la fenêtre (on dispose de 6 étapes). Dans l’étape 3 par exemple, on peut avoir une première visualisation de notre fichier et décider du séparateur de colonne…etc. L’étape 4 nous permet d’observer le type de données dont on dispose et de pouvoir changer ce type si l’on souhaite. Une fois les étapes terminées, on peut cliquer sur finish, ce qui nous donne :

 

Le bouton Metrics (en bleu dans l’image ci-dessus), nous permet de visualiser les statistiques descriptives des colonnes de notre fichier :

Après avoir observé ces dernières, on peut se pencher sur la préparation de nos données pour notre modèle. En appuyant sur l’icône Data, on revient à notre tableau de données. il nous suffit de cliquer sur prepare et new data prepare package et nommer ce dernier :

On voit ainsi, dans la partie data préparation, un nouveau package prêt à être transformer et nettoyer :

En cliquant droit sur une colonne, on trouve différentes fonctionnalités. Cette partie est similaire à la partie préparation de données dans Power BI. Une alternative existe, il s’agit de passer via le langage python.

Développement des modèles et gestion des expérimentations

Une fois nos données prêtent, on peut développer notre modèle. Il suffit de cliquer droit sur notre dataset dans le volet data preparation et re- cliquer sur generate acces data file, ce qui nous créer automatiquement une page de code Python :

De l’image, on peut remarquer que cela nous créer un onglet .py et automatiquement notre dataframe. On peut générer notre code python. On peut aussi créer un jupyter notebook pour tester notre code. On va sur l’icône qui représente un livre, on clique sur plus et on nomme notre notebook :

Remarque : On peut aussi le faire en cliquant droit sur prepare data. Cela nous crée bien un notebook jupyter. Cependant, on ne peut pas tester notre code.

Une fois qu’on a vérifié que notre code fonctionne, on peut le rajouter dans fenêtre. Afin de compiler ce dernier, on appuie sur le bouton RUN :

On peut observer à droite qu’une fenêtre nommer Jobs s’ouvre et on observer que note code est en train de s’exécuter.

Remarque : On peut observer aussi qu’on a un onglet se nommant Arguments. On trouve son utilité avec les variables sys.arg dans Python. Il peut être utiliser pour une régression logistique par exemple.

On peut s’amuser à relancer et changer la valeur de nos variables (Arguments par exemple). Une fois qu’on l’a exécuté (plusieurs fois). On peut cliquer sur l’historique (carré rouge dans l’image ci-dessous) et observer quelques metrics sur ce dernier :

On peut aussi filtrer sur une exécution. Cela va nous permettre de tester les différents temps d’exécution de notre programme et d’affiner ce dernier par la suite.

Déploiement des modèles dans différents environnements cibles

Afin de réaliser le déploiement, dans un premier temps, on va exécuter notre script dans un environnement local, ce qui va nous générer un fichier JSON qui va capturer le schéma d’entrée de données requis par le modèle. Une fois cela fait, on va récupérer notre fichier JSON et un fichier du modèle se nommant model.pkl qui aura été enregistré dans notre répertoire du projet :

A l’aide d’une commande, on va créer un environnement local et enregistrer les fichiers récupérer au pare avant dans ce dernier. Cela va nous permettre de créer notre service web en temps réel. Pour réaliser cela, il nous suffit de taper la commande suivante :

az ml service create realtime -f mtcars prepare.py –model-file model.pkl -s service_schema.json -n irisapp -r python –collect-model-data true -c aml_config\conda_dependencies.yml

Cette commande génère un ID du service Web qu’on pourra utiliser plus tard.

Remarque : Le nom du service doit être en minuscule.

Lorsque vous exécutez la commande, le modèle et le fichier de notation sont chargés sur le compte de stockage que vous avez créé lors de la configuration de l’environnement. Le processus de déploiement crée une image Docker contenant le fichier de modèle, de schéma et de notation, puis la place dans le registre de conteneurs Azure : <ACR_name>.azureacr.io/<imagename>:<version>.

La commande extrait l’image localement sur votre ordinateur, à partir de laquelle il démarre un conteneur Docker. Dans le cadre du déploiement, un point de terminaison HTTP REST pour le service web est créé sur votre machine locale. Après quelques minutes, la commande doit se terminer avec un message de réussite, votre service web est alors opérationnel.

Conclusion

Cette outil représente un bon environnement pour commencer à faire des analyses statistiques et des modèles prédictifs. Cependant, il reste assez limité pour l’instant, par exemple, on ne peut utiliser qu’une seule version de Python et les packages disponibles (on peut télécharger de nouveau packages mais cela risque de poser problème lors du déploiement vers Azure étant donné la version dont on dispose). A ce jour, nos projets sont restreints à 25Mo si la taille de nos fichiers sont volumineux. Il existe bien sûr des solutions alternatives sous certaines conditions :

https://docs.microsoft.com/fr-fr/azure/machine-learning/preview/how-to-read-write-files

Nous suivrons le développement de cette offre très prometteuse, actuellement en préversion, dans de prochains articles.

Article rédigé par Amar ADGHAR