Recycler et déployer un modèle Machine Learning

S’APPLIQUE À :S’applique à Machine Learning Studio (classique) Ne s’applique pas à Azure Machine Learning

Important

Le support de Machine Learning Studio (classique) prend fin le 31 août 2024. Nous vous recommandons de passer à Azure Machine Learning avant cette date.

À partir du 1er décembre 2021, vous ne pourrez plus créer de nouvelles ressources Machine Learning Studio (classique). Jusqu’au 31 août 2024, vous pouvez continuer à utiliser les ressources Machine Learning Studio (classique) existantes.

La documentation ML Studio (classique) est en cours de retrait et ne sera probablement plus mise à jour.

Le recyclage représente un moyen de garantir que les modèles Machine Learning restent précis et qu’ils reposent sur les données les plus pertinentes. Cet article montre comment recycler et déployer un modèle Machine Learning sous la forme d’un nouveau service web dans Studio (classique). Pour recycler un service web classique, voir cet article guide pratique.

Cet article suppose qu’un service web prédictif est déjà déployé. Si vous n’en disposez pas, découvrez comment déployer un service web Studio (classique).

Pour recycler et déployer un nouveau service web Machine Learning, vous allez suivre ces étapes :

  1. Déployer un service web de recyclage.
  2. Effectuer l’apprentissage d’un nouveau modèle à l’aide du service web de recyclage.
  3. Mettre à jour l’expérience prédictive de façon à utiliser le nouveau modèle.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Déployez le service web de reformation

Un service web de recyclage permet de recycler un modèle avec un nouvel ensemble de paramètres, par exemple de nouvelles données, et de l’enregistrer pour plus tard. Lorsque vous connectez une Sortie de service web à un module Effectuer l’apprentissage du modèle, l’expérience d’apprentissage génère un nouveau modèle utilisable.

Suivez les étapes ci-dessous pour déployer un service web de recyclage :

  1. Connectez un module Entrée de service web à votre entrée de données. En règle générale, vous souhaitez vous assurer que vos données d’entrée sont traitées de la même manière que vos données de formation d’origine.

  2. Connectez un module Sortie de service web à la sortie de votre module Effectuer l’apprentissage du modèle.

  3. Si vous disposez d’un module Évaluer le modèle, vous pouvez connecter un module Sortie de service web pour obtenir les résultats de l’évaluation en sortie.

  4. Exécutez votre expérience.

    Après exécution de l’expérience, le workflow obtenu devrait se présenter ainsi :

    Workflow obtenu

    Vous allez maintenant déployer l’expérience de formation en tant que service web de recyclage produisant un modèle entraîné et les résultats de son évaluation.

  5. En bas du canevas de l’expérience, cliquez sur Configurer le service web.

  6. Sélectionnez Déployer le service web [Nouveau]. Le portail des services web Machine Learning s’ouvre sur la page Déployer le service web.

  7. Tapez le nom de votre service web et choisissez un plan de paiement.

  8. Sélectionnez Déployer.

Recycler le modèle

Pour cet exemple, nous utilisons le langage C# pour créer l’application de reformation. Pour accomplir cette tâche, vous pouvez également utiliser un code Python ou R.

Suivez les étapes ci-dessous pour appeler les API de recyclage :

  1. Créez une application console C# dans Visual Studio : Nouveau>Projet>Visual C#>Bureau classique Windows>Console App (.NET Framework) .
  2. Connectez-vous au portail des services web Azure Machine Learning.
  3. Cliquez sur le service web que vous utilisez.
  4. Cliquez sur Consommer.
  5. En bas de la page Utiliser, dans la section Exemple de code, cliquez sur Lot.
  6. Copiez l’exemple de code C# pour l’exécution par lot et collez-le dans le fichier Program.cs. Assurez-vous que l’espace de noms reste intact.

Ajoutez le package NuGet Microsoft.AspNet.WebApi.Client comme indiqué dans les commentaires. Pour ajouter la référence à Microsoft.WindowsAzure.Storage.dll, il peut se révéler nécessaire d’installer la bibliothèque de client pour les services de Stockage Azure.

La capture d’écran suivante montre la page Consommer du portail des services web Machine Learning.

Page Consommer

Mettre à jour la déclaration apiKey

Localisez la déclaration apikey:

const string apiKey = "abc123"; // Replace this with the API key for the web service

Dans la section Informations de base sur la consommation de la page Consommer, recherchez la clé primaire et copiez-la dans la déclaration apiKey.

Mettre à jour les informations Azure Storage

L’exemple de code BES charge un fichier d’un lecteur local (par exemple, « C:\temp\CensusInput.csv ») vers le Stockage Azure, le traite et réécrit les résultats dans le Stockage Azure.

  1. Se connecter au portail Azure
  2. Dans la colonne de navigation de gauche, cliquez sur Autres services, recherchez Comptes de stockage et sélectionnez-le.
  3. Dans la liste des comptes de stockage, sélectionnez-en un pour stocker le modèle reformé.
  4. Dans la colonne de navigation de gauche, cliquez sur Clés d’accès.
  5. Copiez et enregistrez la Clé d’accès primaire.
  6. Dans la colonne de navigation de gauche, cliquez sur Blobs.
  7. Sélectionnez un conteneur existant ou créez-en un et enregistrez le nom.

Localisez les déclarations StorageAccountName, StorageAccountKey et StorageContainerName, puis mettez à jour les valeurs que vous avez enregistrées à partir du portail.

const string StorageAccountName = "mystorageacct"; // Replace this with your Azure storage account name
const string StorageAccountKey = "a_storage_account_key"; // Replace this with your Azure Storage key
const string StorageContainerName = "mycontainer"; // Replace this with your Azure Storage container name

Vous devez également vous assurer que le fichier d’entrée est disponible à l’emplacement spécifié dans le code.

Spécifier l’emplacement de sortie

Lorsque vous spécifiez l’emplacement de sortie dans la Charge utile des demandes, l’extension du fichier spécifiée dans RelativeLocation doit être spécifiée en tant que valeur ilearner.

Outputs = new Dictionary<string, AzureBlobDataReference>() {
    {
        "output1",
        new AzureBlobDataReference()
        {
            ConnectionString = storageConnectionString,
            RelativeLocation = string.Format("{0}/output1results.ilearner", StorageContainerName) /*Replace this with the location you want to use for your output file and a valid file extension (usually .csv for scoring results or .ilearner for trained models)*/
        }
    },

Voici un exemple de sortie de recyclage :

Sortie du nouvel apprentissage.

Évaluer les résultats de la reformation

Lorsque vous exécutez l’application, la sortie inclut l’URL et le jeton de signature d’accès partagé (SAP) nécessaires pour accéder aux résultats de l’évaluation.

Pour consulter les résultats des performances du modèle recyclé, combinez BaseLocation, RelativeLocation et SasBlobToken dans les résultats de sortie de output2 et collez l’URL complète dans la barre d’adresse du navigateur.

Examinez les résultats pour déterminer si le nouveau modèle entraîné est plus performant que l’actuel.

Enregistrez BaseLocation, RelativeLocation et SasBlobToken dans les résultats de sortie.

Mettre à jour l’expérience prédictive

Se connecter à Azure Resource Manager

Tout d’abord, connectez-vous à votre compte Azure dans l’environnement PowerShell avec l’applet de commande Connect-AzAccount.

Obtenir l’objet Définition du service web

Ensuite, obtenez l’objet Définition du service web en appelant l’applet de commande Get-AzMlWebService.

$wsd = Get-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'

Pour déterminer le nom du groupe de ressources d’un service web existant, exécutez l’applet de commande Get-AzMlWebService sans paramètres pour afficher les services web dans votre abonnement. Recherchez le service web et examinez son ID de service web. Le nom du groupe de ressources est le quatrième élément de l’ID, juste après l’élément resourceGroups . Dans l’exemple suivant, le nom du groupe de ressources est Default-MachineLearning-SouthCentralUS.

Properties : Microsoft.Azure.Management.MachineLearning.WebServices.Models.WebServicePropertiesForGraph
Id : /subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237
Name : RetrainSamplePre.2016.8.17.0.3.51.237
Location : South Central US
Type : Microsoft.MachineLearning/webServices
Tags : {}

Pour déterminer le nom du groupe de ressources d’un service web existant, vous pouvez également vous connecter au portail des services web Machine Learning. Sélectionnez le service web. Le nom de groupe de ressources est le cinquième élément de l’URL du service web, juste après l’élément resourceGroups . Dans l’exemple suivant, le nom du groupe de ressources est Default-MachineLearning-SouthCentralUS.

https://services.azureml.net/subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237

Exporter l’objet Définition du service web en tant que JSON

Pour modifier la définition du modèle formé de manière à utiliser le modèle nouvellement formé, vous devez d’abord utiliser l’applet de commande Export-AzMlWebService pour l’exporter vers un fichier au format JSON.

Export-AzMlWebService -WebService $wsd -OutputFile "C:\temp\mlservice_export.json"

Mettre à jour la référence à l’objet blob ilearner

Dans les ressources, recherchez le [modèle formé], mettez à jour la valeur uri dans le nœud locationInfo avec l’URI de l’objet blob ilearner. L’URI est générée en combinant les valeurs BaseLocation et RelativeLocation de la sortie de l’appel de reformation BES.

"asset3": {
    "name": "Retrain Sample [trained model]",
    "type": "Resource",
    "locationInfo": {
        "uri": "https://mltestaccount.blob.core.windows.net/azuremlassetscontainer/baca7bca650f46218633552c0bcbba0e.ilearner"
    },
    "outputPorts": {
        "Results dataset": {
            "type": "Dataset"
        }
    }
},

Importer le JSON dans un objet Définition du service web

Utilisez l’applet de commande Import-AzMlWebService pour reconvertir le fichier JSON modifié en un objet de définition de service web permettant de mettre à jour l’expérience prédictive.

$wsd = Import-AzMlWebService -InputFile "C:\temp\mlservice_export.json"

Mise à jour du service web

Enfin, utilisez l’applet de commande Update-AzMlWebService pour mettre à jour l’expérience prédictive.

Update-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'

Étapes suivantes

Pour savoir comment gérer les services web ou effectuer le suivi de plusieurs exécutions d’expériences, voir les articles suivants :