Python, l’autre nouveau venu sur Azure ML avec R :-)

Rappelez-vous : nous avions consacré le billet Les premiers pas en Machine Learning avec R et Python à la présentation de deux des langages les plus utilisés pour appliquer des méthodes d’apprentissage en #MachineLearning. Nous y avions présenté dans ce contexte les possibilités de la bibliothèque sous licence libre scikit-learn, conçue en Python pour l’apprentissage automatique et disponible dans les packages Anaconda ou WinPython.

Python est aujourd’hui utilisé dans toutes les phases d’une modélisation de type Machine Learning, en commençant par l’ingestion des données, leurs retraitements puis l’entrainement, la validation et le déploiement des modèles.

A travers ce billet, nous souhaitons vous présenter le champ des possibles d’un nouveau venu dans l’environnement de développement visuel et collaboratif Azure ML Studio : le module Execute Python Script, module que nous avions succinctement introduit ici.

Nous vous proposons d’aborder les raisons d’utiliser ce module et de voir quand l’utiliser ainsi que les règles de conception et d’usage qui lui sont associées. Nous profiterons également de ce billet illustrer quelques retraitements et la méthode à adopter pour importer des modules Python dans l’environnement Azure ML Studio. Vous verrez ainsi qu’à l’instar du module Execute R Script, ce module permet non seulement de réaliser des retraitements sur vos données mais également d’appeler des algorithmes d’apprentissage automatique mettant ainsi d’accord la population des scientifiques des données (data scientist) partagés entre les partisans de R et ceux de Python.

clip_image002

Pourquoi et quand utiliser ce module ?

Cette question vous a peut-être effleuré l’esprit et rassurez-vous, il est tout à fait légitime de se la poser. Ce nouvel arrivant dans l’environnement Azure ML Studio présente quelques avantages par rapport au traditionnel IPython, désormais le polyglotte "Jupyter" agnostique en termes de langages, un environnement simple et interactif de type RPEL (read–eval–print loop).

Ce module Execute Python Script est :

  • Accessible depuis un service géré dans le Cloud, procurant un environnement Python robuste et fiable n’importe où et n’importe quand.
  • Capable d’utiliser les données d’un stockage Azure dans le Cloud. Il est ainsi aisé de stocker et/ou d’aller chercher ses (larges volumes de) données dans des blobs Azure alors qu’iPython se contente d’interagir seulement avec les données stockées dans le disque local.
  • Supporte dans ce fait la gestion des mégadonnées (Big Data) (Rappelez-vous ici de la règle des 3V mentionnée les premiers billets de ce blog : Volume, Variété, Vélocité)
  • Prend en charge l’exécution de jobs Python sur différentes instances.
  • Compatible avec les services web, tout comme l’est également, au passage, le langage R dans cet environnement.

Quelques principes de conception

Le module Execute Python Script constitue la première interface Python dans l’environnement Azure ML Studio. Le code Python à exécuter est à spécifier au niveau du point d’entrée de la fonction azureml_main.

Voici quelques principes de conception clés que nous souhaitons partager pour mettre en œuvre ce module :

  • La plupart des utilisateurs de Python constituent leurs codes sous forme de fonctions à l’intérieur de modules. Par conséquent, dans Azure ML Studio, à la place d’avoir une suite d’instructions comme on l’aurait avec les modules R, nous avons des scripts Python organisés en fonctions. Les objets manipulés sont de types standards aux bibliothèques Python comme des trames de données (dataframes) Pandas et tableaux NumPy.
  • Les exécutions locales et dans l’environnement Azure sont compatibles. Le « back-end » utilisé pour exécuter le code Python est basé sur Anaconda 2.1, une plateforme de distribution de Python largement répandue et disposant de 200 paquets différents.
  • Le module Execute Python Script accepte comme entrées (input) et sorties (output) les jeux de données standards d’Azure ML. Cela permet de l’utiliser conjointement avec les modules R et SQL de l’environnement Azure ML Studio.

Ces quelques éléments étant listés, venons-en aux règles d’utilisation.

Des règles d’utilisation

Comme évoqués ci-avant, tous les « inputs » entrants dans un module Python sont interprétés comme des data frames de type Panda.

La fonction doit retourner une seule trame de données (dataframe) de type Panda à l’intérieur d’une séquence comme par exemple un tuple, une liste ou un tableau NumPy.

C’est le premier élément de la séquence qui est ensuite retourné dans le port de sortie du module.

clip_image004

Quelques exemples de retraitement

Voici quelques exemples de scripts vous permettant de manipuler vos trames de données.

Nous utilisons ici le jeu de données Breast Cancer Data, disponible à tous dans Azure ML Studio. Vous le trouverez facilement parmi les jeux de données sauvegardés (Saved Datasets) , puis dans Samples.

clip_image006

Le jeu de données contient 683 lignes et 10 colonnes.

La première colonne indique si la patiente est atteinte du cancer du sein ou non (1 : malade, 0 : saine). Les colonnes 2 à 10 sont des variables telles que la catégorie d’âge, d’état de ménopause etc.

Illustrons à présent comment réaliser 2 retraitements sur Azure ML : i) renommer les colonnes et ii) réaliser un filtre sur les lignes.

Renommer les colonnes

Commençons donc par renommer les colonnes avec le code suivant :

clip_image008

clip_image010

clip_image012

Réaliser un filtre sur les lignes

Si, à présent, nous souhaitons par exemple sélectionner uniquement les personnes de sexe féminin malades, voici comment faire très simplement.

clip_image014

clip_image015

clip_image017

L’importation de paquets et de modules .zip

Comme pour le langage R, il est possible d’incorporer des scripts Python dans l’environnement Azure ML Studio.

Au lieu de copier et coller l’ensemble de vos scripts Python déjà existants dans une boite de script dédiée, vous pouvez utiliser avantageusement le troisième port du module Execute Python Script.

Il vous suffit alors en effet de rassembler vous modules Python dans un fichier, de le zipper puis de l’importer dans ML Studio en tant que jeu de données (dataset).

Pour utiliser les modules ainsi contenus dans le jeu de données, vous devez donc connecter celui-ci au troisième port du module Execute Python Script comme souligné ci-avant, A l’exécution, le fichier est automatiquement dé-zippé et son contenu est alors ajouté au chemin de la bibliothèque de l’interpréteur Python. La fonction azureml_main peut alors importer directement ces modules :-)

Pour celles et ceux qui débutent avec Python, vous trouverez ici un cours Microsoft Virtual Academy (MVA) réalisé par Susan Ibach, développeur technique au sein de Microsoft Canada et Christopher Harrison, responsable de développement de contenus Microsoft.

Par ailleurs, en tapant « Execute Python Script » dans le cadre de recherche de la nouvelle galerie pilotée par la communauté, vous trouverez une expérience complète éponyme montrant comment utiliser le module Execute Python Script pour effectuer un traitement de segmentation à partir d’une collection d’avis et notes déposés par les clients d’Amazon.

clip_image019

Intéressant non ?!

En tapant « Execute Python » toujours dans cette même Galerie Azure, vous pourrez également voir avec l’expérience éponyme comment exécuter sur Azure ML Studio un script Python avec scikit-learn.

 clip_image021

L’expérience proposée s’appuie sur les éléments décrits ici. Ceci ne représente que deux des multiples exemples d’ores et déjà mis à disposition par la communauté.

Nous espérons que ce billet vous aura donné l’envie de vous lancer avec Python et d’en apprendre plus le cas échéant !

Pour conclure ce billet sur Python, nous souhaitons enfin mentionner la version préliminaire de la bibliothèque cliente Azure Machine Learning Python disponible ici sur la forge communautaire GitHub.

Cette dernière vous permet d'accéder à vos jeux de données Azure ML depuis votre environnement local Python.

Vous pouvez alors télécharger les jeux de données qui sont disponibles dans votre espace de travail de ML, ou des jeux de données intermédiaires des expériences qui ont été exécutées. Vous pouvez télécharger vers Azure ML de nouveaux jeux de données ou encore mettre à jour des jeux de données existants. Les données peuvent être optionnellement converties vers/depuis une trame de données (dataframe) Pandas.

Il s'agit d'une version préliminaire de la technologie. A ce titre, il convient de mentionner que les APIs exposées par la bibliothèque et les points de terminaison REST auxquelles cette dernière se connecte sont sujet à changement.

Nous en avons terminé avec ce billet.