BlogPost 3 : Mise en production de ML Studio d'Azure (avancé) - adanba/Blog GitHub Wiki

Ceci notre dernier post de notre série sur Azure ML Studio, nous allons y aborder les créations d'un nouveau module et d'un Service Web.

Création d'un module avec R:

Cette rubrique explique comment créer un module R personnalisé dans Microsoft Azure Machine Learning. Elle explique ce qu'est un module R personnalisé, en détaillant les fichiers utilisés pour le définir. Par ailleurs, elle illustre la construction de ces fichiers et l'inscription du module à des fins de déploiement dans un espace de travail ML. Les éléments et attributs utilisés dans la définition du module personnalisé sont ensuite décrits plus en détail.

Qu'est-ce qu'un module R personnalisé ?

Un module personnalisé est un module défini par l'utilisateur, qui peut être chargé dans l'espace de travail d'un utilisateur et exécuté dans le cadre d'une expérience Microsoft Azure ML. Un module R personnalisé est un module exécutant une fonction R définie par l'utilisateur dans ML.

Les modules personnalisés peuvent être utilisés comme n'importe quel module classique. Ils peuvent être exécutés avec d'autres modules, inclus dans les expériences publiées, ou visualisés. Les utilisateurs contrôlent l'algorithme implémenté, les ports d'entrée et de sortie à utiliser, les paramètres de modélisation et divers autres comportements d'exécution.

Fichiers dans un module R personnalisé:

Un module R personnalisé est défini par un fichier .zip contenant au moins deux fichiers :

  1. un fichier qui implémente la fonction R exposée par le module ;
  2. un fichier de définition XML qui décrit le module personnalisé.

Des fichiers auxiliaires supplémentaires peuvent également être inclus dans le fichier .zip. Cette option est décrite ci-dessous.

Exemple de démarrage rapide:

Cet exemple explique comment créer les fichiers requis pour un module R personnalisé, les empaqueter dans un fichier .zip, puis enregistrer le module dans l'espace de travail ML.

Prenons l'exemple d'un module My Add Rows personnalisé, qui modifie l'implémentation standard du module Add Rows utilisé pour concaténer des lignes (observations) à partir de deux jeux de données (trames de données). Le module existant Add Rows ajoute les lignes du deuxième jeu de données d'entrée à la fin du premier. Notre fonction CustomAddRows personnalisée accepte deux jeux de données, mais également un paramètre d'échange booléen en entrée. Si le paramètre d'échange a la valeur FALSE, il renvoie le même jeu de données que l'implémentation standard. Par contre, s'il a la valeur TRUE, il ajoute des lignes du premier jeu de données d'entrée à la fin du deuxième jeu de données, au moyen de l'algorithme rbind. Le fichier qui implémente la fonction R CustomAddRows exposée par le module My Add Rows contient le code R suivant.

CustomAddRows <- function(dataset1, dataset2, swap=FALSE) 
{
    if (swap)
    {
        return (rbind(dataset2, dataset1));
    }
    else
    {
        return (rbind(dataset1, dataset2));
    } 
} 

Pour exposer la fonction CustomAddRows en tant que module ML studio, vous devez créer un fichier de définition XML, afin de définir l'apparence du module My Add Rows et son comportement.

<!-- Defined a module using an R Script -->
<Module name="Custom Add Rows">
    <Owner>Microsoft Corporation</Owner>
    <Description>Appends one dataset to another. Dataset 2 is concatenated to Dataset 1 when Swap is false, and vice versa when Swap is true.</Description>

<!-- Specify the base language, script file and R function to use for this module. -->      
    <Language name="R" sourceFile="CustomAddRows.R" entryPoint="CustomAddRows" />  

<!-- Define module input and output ports -->
<!-- Note: The values of the id attributes in the Input and Arg elements must match the parameter names in the R Function CustomAddRows defined in CustomAddRows.R. -->
    <Ports>
        <Input id="dataset1" name="Dataset 1" type="DataTable">
            <Description>First input dataset</Description>
        </Input>
        <Input id="dataset2" name="Dataset 2" type="DataTable">
            <Description>Second input dataset</Description>
        </Input>
        <Output id="dataset" name="Dataset" type="DataTable">
            <Description>Combined dataset</Description>
        </Output>
    </Ports>

<!-- Define module parameters -->
    <Arguments>
        <Arg id="swap" name="Swap" type="bool" >
            <Description>Swap input datasets.</Description>
        </Arg>
    </Arguments>
</Module>

Remarque : il est essentiel que le contenu de l'élément ID dans le fichier XML corresponde exactement au nom de la fonction.

Enregistrez ces deux fichiers en tant qu'éléments CustomAddRows.R et CustomAddRows.xml, puis compressez-les ensemble au sein d'un fichier CustomAddRows.zip.

Pour les enregistrer dans l'espace de travail ML, accédez à votre espace de travail dans ML Studio, cliquez sur le bouton + NOUVEAU situé sur la partie inférieure de la fenêtre et choisissez MODULE -> À PARTIR DU PACKAGE ZIP pour charger le nouveau module My Add Rows personnalisé.

Importation du module personnalisé

Le module My Add Rows peut désormais être ouvert par les expériences ML.

Création d'un Web Service

Dans ce post nous allons transformer le modèle prédictif pour le challenge Kaggle en un Web Service. L'intérêt de cette démarche est de mettre à disposition le modèle créé à d'autres personnes via une API Web Service sur Azure.

Pour cela, nous devons :

  • préparer l'expérience pour la publication (c'est déjà fait dans le dernier blog post);
  • la publier sur un serveur intermédiaire où nous pouvons la tester;
  • la transférer sur le serveur en activité lorsque nous pensons qu'elle est prête.

Avant de continuer, on préfère créer une copie de notre expérience à modifier. nous pouvons ainsi revenir à notre expérience d'apprentissage à tout moment pour continuer à travailler sur nos modèles.

Cliquez sur Enregistrer sous sous la zone de dessin. Donnez à la copie un nom significatif. Par défaut, " - Copy " est ajouté au nom d'origine de l'expérience. Dans notre cas, appelons-la " Démo Blog Post Avancé Optimisé - Web Service ". Cliquez sur OK.

L'expérience d'origine et la copie sont affichées dans la liste Expériences de ML Studio.

Sélection de l'entrée et de la sortie du service dans Web Service >

In-put et Out-put pour le Web Service

Remarque : vous vous demandez peut-être pourquoi nous avons laissé le jeu de données Test.csv et les modules associés dans le workflow final. Ce service va utiliser les données de l'utilisateur et non le jeu de données d'origine : pourquoi les laisser connectés ?

Il est vrai que ce service n'a pas besoin des données de Test.csv. Mais il a besoin du schéma pour ces données, incluant des informations telles que le nombre de colonnes et lesquelles sont numériques. Ces informations sur le schéma sont indispensables pour interpréter les données de l'utilisateur. Nous laissons ces composants connectés de façon à ce que le module de notation comporte le schéma du jeu de données lorsque le service est en cours d'exécution. Les données ne sont pas utilisées, uniquement le schéma.

Publication du service web:

Pour publier un service web dérivé de notre expérience, cliquez sur PUBLIER LE SERVICE WEB dans la barre inférieure (sous le canevas) et cliquez sur OUI lorsque vous y êtes invité. ML Studio publie l'expérience en tant que service web sur le serveur intermédiaire ML et vous amène au tableau de bord du service.

Vous pouvez configurer le service en cliquant sur l'onglet CONFIGURATION. Vous pouvez modifier le nom du service (il s'agit par défaut du nom de l'expérience) et lui attribuer une description. Vous pouvez également attribuer des étiquettes plus significatives aux colonnes d'entrée et de sortie.

Configuration du Web Service

Test du service web:

Dans la page TABLEAU DE BORD, cliquez sur le lien Test sous Services intermédiaires. Une boîte de dialogue vous demande d'entrer les données du service. Les colonnes sont identiques à celles du jeu de données d'origine du fichier Test.csv.

Entrez un jeu de données, puis cliquez sur OK.

Test du Web Service

Les résultats générés par le service web sont affichés au bas du tableau de bord. D'après la manière dont nous avons configuré le service.

Transfert du service web sur le serveur en activité

Jusqu'à présent, le service s'exécutait sur le serveur intermédiaire ML. Lorsque vous êtes prêt à le mettre en activité, vous pouvez demander qu'il soit promu sur le serveur en activité.

Sous l'onglet CONFIGURATION, cliquez sur OUI à côté de PRÊT POUR LA PRODUCTION ? Cette action signale à votre administrateur informatique que ce service web est prêt à entrer en activité. L'administrateur peut alors le transférer sur le serveur en activité.

Test du Web Service

Le Web Service peut être facilement utilisé en R, Python ou C#.

Conclusion:

Comme nous l'avons appris à travers cette série de posts, ML Studio nous permet de créer des applications intelligentes de bout-en-bout. Bien que l'utilisation soit très facile et complète avec les modules de base, il est également possible de développer des algorithmes beaucoup plus poussés grâce notamment à l'intégration de Scripts personnalisés en R ou Python.

⚠️ **GitHub.com Fallback** ⚠️