Tutoriel : (concepteur) Déployer un modèle Machine Learning

Utilisez le concepteur pour déployer un modèle de Machine Learning afin de prédire le prix des voitures. Ce tutoriel est le deuxième d’une série de deux.

Notes

Le concepteur prend en charge deux types de composants, les composants prédéfinis classiques (v1) et les composants personnalisés (v2). Ces deux types de composants ne sont PAS compatibles.

Les composants prédéfinis classiques fournissent principalement des composants prédéfinis utilisés pour le traitement des données et les tâches de Machine Learning traditionnelles telles que la régression et la classification. Ce type de composant continue d’être pris en charge, mais aucun nouveau composant n’est ajouté.

Les composants personnalisés vous permettent d’encapsuler votre propre code en tant que composant. Ils vous permettent de partager des composants dans des espaces de travail et de créer en toute transparence dans des interfaces Studio, CLI v2 et le Kit de développement logiciel (SDK) v2.

Pour les nouveaux projets, nous vous suggérons vivement d’utiliser un composant personnalisé et compatible avec AzureML V2 qui va continuer à recevoir de nouvelles mises à jour.

Cet article s’applique aux composants classiques, prédéfinis et non compatibles avec l’interface CLI v2 et le kit de développement logiciel (SDK) v2.

Dans la première partie du tutoriel, vous avez formé un modèle de régression linéaire sur les prix des voitures. Dans la deuxième partie, vous déployez le modèle pour permettre aux autres utilisateurs de l’utiliser. Dans ce tutoriel, vous allez :

  • Créez un pipeline d’inférence en temps réel.
  • Créez un cluster d’inférence.
  • Déployez le point de terminaison en temps réel.
  • Testez le point de terminaison en temps réel.

Prérequis

Suivez la première partie du tutoriel pour découvrir comment entraîner et évaluer un modèle Machine Learning dans le concepteur.

Important

Si vous ne voyez pas les éléments graphiques mentionnés dans ce document, tels que les boutons dans Studio ou le concepteur, vous ne disposez peut-être pas du niveau d’autorisations approprié pour l’espace de travail. Contactez votre administrateur d’abonnement Azure pour vérifier que le niveau d’accès est correct. Pour plus d’informations, consultez Gérer les utilisateurs et les rôles.

Créer un pipeline d’inférence en temps réel

Pour déployer votre pipeline, vous devez d’abord convertir le pipeline d’entraînement en pipeline d’inférence en temps réel. Ce processus supprime les composants de formation et ajoute les entrées et sorties de service web pour gérer les demandes.

Notes

Créer un pipeline d’inférence prend uniquement en charge les pipelines de formation qui contiennent uniquement les composants intégrés du concepteur et doivent avoir un composant comme Le modèle d’apprentissage qui génère le modèle entraîné.

Créer un pipeline d’inférence en temps réel

  1. Sur la page des détails du travail de pipeline, au-dessus du canevas de pipeline, sélectionnez Créer un pipeline d’inférence>Pipeline d’inférence en temps réel.

    Capture d’écran illustrant la création d’un pipeline d’inférence sur la page des détails du travail de pipeline.

    Votre nouveau pipeline ressemblera au suivant :

    Capture d’écran illustrant la configuration attendue du pipeline après sa préparation pour le déploiement.

    Quand vous sélectionnez Créer un pipeline d’inférence, plusieurs choses se produisent :

    • Le modèle formé est stocké sous la forme d’un composant Jeux de données dans la palette de composants. Vous pouvez le trouver sous Mes modèles.
    • Des composants de formation, comme Effectuer l’apprentissage du modèle et Fractionner les données sont supprimés.
    • Le modèle entraîné enregistré est rajouté au pipeline.
    • Les composants Entrée du service web et Sortie du service web sont ajoutés. Ces composants montrent l’emplacement où les données utilisateur entrent dans le pipeline ainsi que l’emplacement où ces données sont renvoyées.

    Notes

    Par défaut, le composant Entrée du service web attend le même schéma de données que les données de sortie du composant qui se connectent au même port en aval qu’elle. Dans cet exemple, le composant Entrée du service web et le jeu de données Données sur le prix des véhicules automobiles (brutes) se connectent au même composant en aval. Par conséquent, le composant Entrée du service web attend le même schéma de données que le jeu de données Données sur le prix des véhicules automobiles (brutes) et la colonne variable cible price est incluse dans le schéma. Toutefois, quand vous attribuez un score aux données, vous ne connaissez pas les valeurs des variables cibles. Dans ce cas, vous pouvez supprimer la colonne variable cible dans le pipeline d’inférence à l’aide du composant Sélectionner des colonnes dans le jeu de données. Vérifiez que la sortie du composant Sélectionner des colonnes dans le jeu de données supprimant la colonne variable cible est connectée au même port que la sortie du composant Entrée du service web.

  2. Sélectionnez Envoyer, puis utilisez la même cible de calcul et la même expérience que durant la première partie.

    S’il s’agit du premier travail, l’exécution de votre pipeline peut prendre 20 minutes. Les paramètres de calcul par défaut ont une taille de nœud minimale de 0, ce qui signifie que le concepteur doit allouer des ressources après une période d’inactivité. Les travaux de pipeline répétés prennent moins de temps dans la mesure où les ressources de calcul sont déjà allouées. Par ailleurs, le concepteur utilise les résultats mis en cache pour chaque composant afin d’améliorer l’efficacité.

  3. Accédez au détail du travail du pipeline d’inférence en temps réel en sélectionnant le lien Détails du travail dans le volet gauche.

  4. Sélectionnez Déployer sur la page des détails du travail.

    Capture d’écran illustrant le déploiement sur la page des détails du travail.

Créer un cluster d’inférence

Dans la boîte de dialogue qui s’affiche, vous pouvez sélectionner n’importe quel cluster AKS (Azure Kubernetes Service) existant sur lequel déployer votre modèle. Si vous n’avez pas de cluster AKS, utilisez les étapes suivantes pour en créer un.

  1. Dans la boîte de dialogue qui s’affiche, sélectionnez Calculer pour accéder à la page Calculer.

  2. Dans le ruban de navigation, sélectionnez Clusters d’inférence>+ Nouveau.

    Capture d’écran montrant comment accéder au volet Nouveau cluster d’inférence.

  3. Dans le volet Cluster d’inférence, configurez un nouveau service Kubernetes.

  4. Entrez aks-compute pour Nom du calcul.

  5. Sélectionnez une région proche disponible pour Région.

  6. Sélectionnez Create (Créer).

    Notes

    La création d’un service AKS prend environ 15 minutes. Vous pouvez vérifier l’état de provisionnement dans la page Clusters d’inférence.

Déployer le point de terminaison en temps réel

Une fois le provisionnement du service AKS terminé, revenez au pipeline d’inférence en temps réel pour terminer le déploiement.

  1. Sélectionnez Déployer au-dessus du canevas.

  2. Sélectionnez Déployer un nouveau point de terminaison en temps réel.

  3. Sélectionnez le cluster AKS que vous avez créé.

    Capture d’écran montrant comment configurer un nouveau point de terminaison en temps réel.

    Vous pouvez également changer le paramètre Avancé pour votre point de terminaison en temps réel.

    Paramètre avancé Description
    Activer les diagnostics et la collecte de données Application Insights Indique s’il faut activer Azure Application Insights pour collecter des données à partir des points de terminaison déployés.
    Par défaut : false.
    Délai d’expiration du scoring Délai d’expiration en millisecondes à appliquer pour les appels de scoring au service web.
    Par défaut : 60 000.
    Mise à l’échelle automatique activée Indique s’il faut activer la mise à l’échelle automatique pour le service web.
    Par défaut : true.
    Nb min. de réplicas Nombre minimal de conteneurs à utiliser lors de la mise à l’échelle automatique de ce service web.
    Par défaut : 1.
    Nb max. de réplicas Nombre maximal de conteneurs à utiliser lors de la mise à l’échelle automatique de ce service web.
    Par défaut : 10.
    Utilisation cible Utilisation cible (en pourcentage sur 100) que la mise à l’échelle automatique doit tenter de gérer pour ce service web.
    Par défaut : 70.
    Période d’actualisation Fréquence (en secondes) à laquelle la mise à l’échelle automatique tente de mettre à l’échelle ce service web.
    Par défaut : 1.
    Capacité de réserve de processeur Nombre de cœurs de processeur à allouer pour ce service web.
    Par défaut : 0,1.
    Capacité de réserve de mémoire Quantité de mémoire (en Go) à allouer à ce service web.
    Par défaut : 0,5.
  4. Sélectionnez Déployer.

    Une notification de réussite provenant du cente de notification s’affiche une fois le déploiement effectué. Cela peut prendre quelques minutes.

    Capture d’écran montrant la notification du déploiement.

Conseil

Vous pouvez également effectuer le déploiement sur Azure Container Instance (ACI) si vous sélectionnez Azure Container Instances comme Type de calcul dans la zone des paramètres de point de terminaison en temps réel. Le paramètre Azure Container Instances est utilisé à des fins de test ou de développement. Utilisez ACI pour les charges de travail à faible échelle basées sur le processeur qui nécessitent moins de 48 Go de RAM.

Tester le point de terminaison en temps réel

Une fois le déploiement effectué, vous pouvez afficher votre point de terminaison en temps réel en accédant à la page Points de terminaison.

  1. Dans la page Points de terminaison, sélectionnez le point de terminaison que vous avez déployé.

    Sous l’onglet Détails, vous pouvez obtenir plus d’informations, telles que l’URI REST, la définition Swagger, l’état et les étiquettes.

    Sous l’onglet Consommer, vous trouverez un exemple de code de consommation et des clés de sécurité, et pouvez définir des méthodes d’authentification.

    Sous l’onglet Journaux de déploiement, vous trouverez les journaux de déploiement détaillés de votre point de terminaison en temps réel.

  2. Pour tester votre point de terminaison, accédez à l’onglet Tester. À partir de là, vous pouvez entrer des données de test et sélectionner Tester afin de vérifier la sortie de votre point de terminaison.

Mettre à jour le point de terminaison en temps réel

Vous pouvez mettre à jour le point de terminaison en ligne avec le nouveau modèle entraîné dans le concepteur. Sur la page des détails du point de terminaison en ligne, recherchez votre travail de pipeline d’apprentissage précédent et votre travail de pipeline d’inférence.

  1. Vous pouvez rechercher et modifier directement votre brouillon de pipeline d’apprentissage sur la page d’accueil du concepteur.

    Vous pouvez également ouvrir le lien de travail du pipeline d’apprentissage, puis le cloner dans un nouveau brouillon de pipeline pour poursuivre les modifications.

    Capture d’écran présentant le lien d’accès au travail d’apprentissage sur la page des détails du point de terminaison.

  2. Après avoir envoyé le pipeline d’apprentissage modifié, accédez à la page des détails du travail.

  3. Une fois le travail terminé, cliquez avec le bouton droit sur Entraîner le modèle et sélectionnez Inscrire les données.

    Capture d’écran illustrant l’inscription d’un modèle formé en tant que jeu de données.

    Entrez un nom et sélectionnez le type Fichier.

    Capture d’écran d’Inscrire en tant que, avec l’option Nouvelle ressource de données sélectionnée.

  4. Une fois le jeu de données inscrit, ouvrez votre brouillon de pipeline d’inférence ou clonez le travail de pipeline d’inférence précédent dans un nouveau brouillon. Dans le brouillon du pipeline d’inférence, remplacez le modèle entraîné précédent affiché en tant que nœud MD-XXXX connecté au composant Modèle de score par le jeu de données qui vient d’être inscrit.

    Capture d’écran montrant comment modifier le pipeline d’inférence.

  5. Si vous devez mettre à jour la partie de prétraitement des données dans votre pipeline d’apprentissage et que vous souhaitez mettre à jour cette partie dans le pipeline d’inférence, le traitement est similaire aux étapes ci-dessus.

    Vous devez simplement inscrire le résultat de la transformation du composant de transformation comme jeu de données.

    Ensuite, remplacez manuellement le composant TD- dans le pipeline d’inférence par le jeu de données inscrit.

    Capture d’écran montrant comment remplacer le composant de transformation.

  6. Après avoir modifié votre pipeline d’inférence avec le modèle ou la transformation nouvellement entraînée, envoyez-le. Une fois le travail terminé, déployez-le sur le point de terminaison en ligne existant déployé précédemment.

    Capture d’écran montrant comment remplacer le point de terminaison en temps réel existant.

Limites

  • En raison de la limitation de l’accès au magasin de données, si votre pipeline d’inférence contient un composant Importer des données ou Exporter des données, il est automatiquement supprimé lors du déploiement sur le point de terminaison en temps réel.

  • Si vous avez des jeux de données dans le pipeline d’inférence en temps réel et que vous souhaitez le déployer sur un point de terminaison en temps réel, ce flux prend uniquement en charge les jeux de données inscrits à partir du magasin de données Blob. Si vous souhaitez utiliser des jeux de données d’autres types de magasins de données, vous pouvez utiliser Select Column pour vous connecter à votre jeu de données initial avec les paramètres de sélection de toutes les colonnes, inscrire les sorties de Select Column en tant que jeu de données de fichier, puis remplacer le jeu de données initial dans le pipeline d’inférence en temps réel par ce jeu de données nouvellement inscrit.

  • Si votre graphique d’inférence contient le composant « Enter Data Manually » qui n’est pas connecté au même port que le composant « Web service Input », le composant « Enter Data Manually » ne sera pas exécuté pendant le traitement des appels HTTP. Une solution de contournement consiste à inscrire les sorties du composant « Enter Data Manually » en tant que jeu de données, puis dans le brouillon du pipeline d’inférence, de remplacer le composant « Enter Data Manually » par le jeu de données inscrit.

    Capture d’écran montrant comment modifier le pipeline d’inférence contenant le composant Entrer manuellement des données.

Nettoyer les ressources

Important

Vous pouvez utiliser les ressources que vous avez créées comme prérequis pour d’autres didacticiels et articles de guides pratiques Azure Machine Learning.

Tout supprimer

Si vous n’avez pas l’intention d’utiliser les éléments que vous avez créés, supprimez l’intégralité du groupe de ressources pour éviter des frais.

  1. Dans le portail Azure, sélectionnez Groupes de ressources sur le côté gauche de la fenêtre.

    Supprimer un groupe de ressources dans le portail Azure

  2. Dans la liste, sélectionnez le groupe de ressources créé.

  3. Sélectionnez Supprimer le groupe de ressources.

La suppression du groupe de ressources supprime également toutes les ressources créées dans le concepteur.

Supprimer des ressources individuelles

Dans le concepteur où vous avez créé votre expérience, supprimez des ressources individuelles en les sélectionnant, puis en sélectionnant le bouton Supprimer.

La cible de calcul que vous avez créée ici est automatiquement mise à l’échelle sur zéro nœud quand elle n’est pas utilisée. Cette action est effectuée pour réduire les frais. Si vous souhaitez supprimer la cible de calcul, procédez comme suit :

Supprimer des ressources

Vous pouvez désinscrire des jeux de données de votre espace de travail en sélectionnant chaque jeu de données, puis Annuler l’enregistrement.

Désinscrire le jeu de données

Pour supprimer un jeu de données, accédez au compte de stockage à l’aide du portail Azure ou de l’Explorateur Stockage Azure et supprimez manuellement ces ressources.

Étapes suivantes

Dans ce tutoriel, vous avez découvert les étapes clés de la création, du déploiement et de la consommation d’un modèle Machine Learning dans le concepteur. Pour en savoir plus sur la façon dont vous pouvez utiliser le concepteur, consultez les liens suivants :