Déclenchement des applications, des processus et des workflows CI/CD en fonction d’événements Azure Machine Learning

Dans cet article, vous allez apprendre à configurer des applications, des processus ou des flux de travail CI/CD basés sur des événements Azure Machine Learning. Par exemple, les e-mails de notification d’échec ou les exécutions de pipeline ML, lorsque certaines conditions sont détectées en utilisant Azure Event Grid.

Azure Machine Learning gère l’intégralité du cycle de vie du processus d’apprentissage automatique, y compris l’apprentissage du modèle, le déploiement du modèle et la surveillance. Vous pouvez utiliser Event Grid pour réagir aux événements Azure Machine Learning, comme l’achèvement des exécutions d’apprentissage, l’enregistrement et le déploiement de modèles et la détection de la dérive de données, à l’aide d’architectures serverless modernes. Vous pouvez alors vous abonner et utiliser des événements tels que la modification de l’état d’exécution, la fin d’une exécution, l’inscription de modèles, le déploiement de modèles et la détection d’une dérive de données dans un espace de travail.

Quand utiliser Event Grid pour les actions pilotées par des événements :

  • Envoyer des e-mails à la fin d’une exécution et en cas d’échec d’exécution
  • Utiliser une fonction Azure après l’inscription d’un modèle
  • Événements de diffusion en continu d’Azure Machine Learning sur divers points de terminaison
  • Déclencher un pipeline ML quand une dérive est détectée

Important

Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. La préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Prérequis

Pour utiliser Event Grid, vous devez avoir un accès contributeur ou propriétaire à l’espace de travail Azure Machine Learning pour lequel vous allez créer des événements.

Modèle et types d’événements

Azure Event Grid lit les événements à partir de sources, comme Azure Machine Learning et d’autres services Azure. Ces événements sont ensuite envoyés à des gestionnaires d’événements tels qu’Azure Event Hubs, Azure Functions, Logic Apps et d’autres. Le diagramme suivant montre comment Event Grid connecte les sources et les descripteurs, mais ne constitue pas une liste complète des intégrations prises en charge.

Modèle Azure Event Grid fonctionnel

Pour plus d’informations sur les sources d’événements et les gestionnaires d’événements, consultez Qu’est-ce qu’Event Grid ?

Types d’événements pour Azure Machine Learning

Azure Machine Learning fournit des événements tout au long du cycle de vie de l’apprentissage automatique :

Type d'événement Description
Microsoft.MachineLearningServices.RunCompleted Déclenché lorsque l’exécution d’une expérience d’apprentissage automatique est terminée
Microsoft.MachineLearningServices.ModelRegistered (préversion) Déclenché lorsqu’un modèle d’apprentissage automatique est inscrit dans l’espace de travail
Microsoft.MachineLearningServices.ModelDeployed (préversion) Déclenché lorsqu’un déploiement du service d’inférence avec un ou plusieurs modèles est terminé
Microsoft.MachineLearningServices.DatasetDriftDetected (préversion) Déclenché lorsqu’un travail de détection de dérive de données pour deux jeux de données est terminé
Microsoft.MachineLearningServices.RunStatusChanged Déclenché quand un état d’exécution change

Filtrer les événements et s’y abonner

Ces événements sont publiés via Azure Event Grid. À l’aide du Portail Microsoft Azure, de PowerShell ou d'Azure CLI, les clients peuvent facilement s’abonner aux événements en spécifiant un ou plusieurs types d’événements, et en filtrant des conditions.

Lors de la configuration de vos événements, vous pouvez appliquer des filtres de manière à ce qu’ils ne se déclenchent que sur des données d’événements spécifiques. Dans l’exemple ci-dessous, pour les événements de modification de l’état d’exécution, vous pouvez filtrer par type d’exécution. L’événement se déclenche uniquement lorsque les critères sont satisfaits. Pour plus d’informations sur les données d’événement sur lesquelles vous pouvez filtrer, consultez le schémaAzure Machine Learning Event Grid.

Les abonnements pour les événements Azure Machine Learning sont protégés par le contrôle d’accès en fonction du rôle Azure (Azure RBAC). Seul le contributeur ou propriétaire d’un espace de travail peut créer, mettre à jour et supprimer des abonnements aux événements. Des filtres peuvent être appliqués aux abonnements aux événements pendant la création de l’abonnement aux événements ou ultérieurement.

  1. Accédez au Portail Azure, sélectionnez un nouvel abonnement ou un abonnement existant.

  2. Sélectionnez l’entrée Événements dans la zone de navigation gauche, puis sélectionnez + Abonnement aux événements.

  3. Sélectionnez l’onglet Filtres et faites défiler jusqu’à Filtres avancés. Pour les champs Clé et Valeur, fournissez les types de propriété par lesquels vous souhaitez filtrer. Ici, vous pouvez voir que l’événement se déclenche uniquement lorsque le type d’exécution est une exécution de pipeline ou une exécution d’étape de pipeline.

    Filtrer les événements

  • Filtrer par type d’événement : Un abonnement aux événements peut spécifier un ou plusieurs types d’événements Azure Machine Learning.

  • Filtrer par sujet d’événement : Azure Event Grid prend en charge les filtres de sujet reposant sur les correspondances commence par et se termine par, afin que les événements dont l’objet correspond soient remis à l’abonné. Des événements d’apprentissage automatique différents ont un format de sujet différent.

    Type d'événement Format du sujet Exemple de sujet
    Microsoft.MachineLearningServices.RunCompleted experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
    Microsoft.MachineLearningServices.ModelRegistered (préversion) models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed (préversion) endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected (préversion) datadrift/{data.DataDriftId}/run/{data.RunId} datadrift/4e694bf5-712e-4e40-b06a-d2a2755212d4/run/my_driftrun1_1550564444_fbbcdc0f
    Microsoft.MachineLearningServices.RunStatusChanged experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
  • Filtrage avancé : Azure Event Grid prend également en charge le filtrage avancé basé sur le schéma d’événement publié. D’avantage d’informations sur le schéma des événement Azure Machine Learning peuvent être trouvées dans Schéma des événements Azure Event Grid pour Azure Machine Learning. Pour l’événement Microsoft.MachineLearningServices.ModelRegistered, afin de filtrer la valeur de balise du modèle :

    --advanced-filter data.ModelTags.key1 StringIn ('value1')
    

    Pour en savoir plus sur l’application de filtres, consultez Filtrer des événements pour Event Grid.

Consommer des événements Machine Learning

Les applications qui gèrent des événements Machine Learning doivent suivre certaines pratiques recommandées :

  • Comme plusieurs abonnements peuvent être configurés pour acheminer les événements vers le même gestionnaire d’événements, il est important de ne pas considérer que les événements proviennent d’une source particulière, mais de vérifier le sujet du message pour vous assurer qu’il provient d’un espace de travail de Machine Learning que vous attendez.
  • De même, vérifiez que vous êtes prêt à traiter son eventType, et ne supposez pas que tous les événements reçus seront aux types que vous attendez.
  • Les messages pouvant arriver en désordre et après un certain temps, utilisez les champs etag pour comprendre si vos informations sur les objets sont toujours à jour. En outre, utilisez les champs de séquence pour comprendre l’ordre des événements sur un objet particulier.
  • Ignorez les champs que vous ne comprenez pas. Cette pratique vous aidera à prendre en charge les nouvelles fonctionnalités qui peuvent être ajoutées à l’avenir.
  • Les opérations Azure Machine Learning annulées ou ayant échoué ne déclenchent pas d’événement. Par exemple, en cas d’échec du déploiement d’un modèle, Microsoft.MachineLearningServices.ModelDeployed ne sera pas déclenché. Prenez en compte ce mode d’échec lors de la conception de vos applications. Vous pouvez toujours utiliser le Kit de développement logiciel (SDK), l’interface CLI ou le portail Azure Machine Learning pour vérifier l’état d’une opération et comprendre les raisons détaillées de l’échec.

Azure Event Grid permet aux clients de créer des gestionnaires de messages découplés, qui peuvent être déclenchés par des événements Azure Machine Learning. Voici quelques exemples notables de gestionnaires de messages :

  • Azure Functions
  • Azure Logic Apps
  • Hubs d'événements Azure
  • Pipeline Azure Data Factory
  • Webhooks génériques, qui peuvent être hébergés sur la plateforme Azure ou ailleurs

Configuré dans le portail Azure

  1. Ouvrez le Portail Azure et accédez à votre espace de travail Azure Machine Learning.

  2. Dans la barre de gauche, sélectionnez Événements puis sélectionnez Abonnements aux événements.

    Capture d'écran montrant la sélection de l'abonnement aux événements.

  3. Sélectionnez le type d’événement à consommer.

    Capture d'écran du formulaire Créer un abonnement à un événement.

  4. Sélectionnez le point de terminaison sur lequel publier l’événement. Dans la capture d’écran suivante, Event Hub est le point de terminaison sélectionné :

    Capture d’écran montrant le volet Créer un abonnement aux événements avec la boîte de dialogue Sélectionner un Event Hub ouverte.

Une fois que vous avez confirmé votre sélection, sélectionnez suivant. Après la configuration, ces événements seront envoyés à votre point de terminaison.

Configurer avec l’interface CLI

Vous pouvez installer la dernière version d’Azure CLI ou utiliser Azure Cloud Shell fourni dans le cadre de votre abonnement Azure.

Pour installer l’extension Event Grid, utilisez la commande suivante à partir de l’interface CLI :

az extension add --name eventgrid

L’exemple suivant montre comment sélectionner un abonnement Azure et créer un abonnement aux événements pour Azure Machine Learning :

# Select the Azure subscription that contains the workspace
az account set --subscription "<name or ID of the subscription>"

# Subscribe to the machine learning workspace. This example uses EventHub as a destination. 
az eventgrid event-subscription create --name {eventGridFilterName} \
  --source-resource-id /subscriptions/{subId}/resourceGroups/{RG}/providers/Microsoft.MachineLearningServices/workspaces/{wsName} \
  --endpoint-type eventhub \
  --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.EventHub/namespaces/n1/eventhubs/EH1 \
  --included-event-types Microsoft.MachineLearningServices.ModelRegistered \
  --subject-begins-with "models/mymodelname"

Exemples

Exemple : Envoyer des alertes par e-mail

Utilisez Azure Logic Apps pour configurer des e-mails pour tous vos événements. Personnalisez avec des conditions et spécifiez des destinataires pour permettre la collaboration et la sensibilisation entre les équipes travaillant ensemble.

  1. Dans la Portail Azure, accédez à votre espace de travail Azure Machine Learning et sélectionnez l’onglet Événements dans la barre de gauche. À partir de là, sélectionnez Applications logiques.

    Capture d'écran montrant la sélection de Logic Apps.

  2. Connectez-vous à l’interface utilisateur de l’application logique et sélectionnez le service Machine Learning comme type de rubrique.

    Capture d’écran montrant la boîte de dialogue Quand un événement de ressource se produit avec Machine Learning sélectionné comme type de ressource.

  3. Sélectionnez le ou les événements pour lesquels vous souhaitez recevoir des alertes. Par exemple, la capture d’écran suivante RunCompleted.

    Capture d'écran montrant le Machine Learning service comme type de ressource.

  4. Ensuite, ajoutez une étape pour utiliser cet événement et rechercher un e-mail. Il existe plusieurs comptes de messagerie différents que vous pouvez utiliser pour recevoir des événements. Vous pouvez également configurer des conditions sur le moment où envoyer une alerte par e-mail.

    Capture d’écran montrant la boîte de dialogue Choisir une action avec une adresse e-mail entrée dans la ligne de recherche.

  5. Sélectionnez Envoyer un e-mail et renseignez les paramètres. Dans l’objet, vous pouvez inclure le Type d’événement et la Rubrique pour aider à filtrer les événements. Vous pouvez également inclure un lien vers la page de l’espace de travail pour les exécutions dans le corps du message.

    Pour enregistrer cette action, sélectionnez Enregistrer sous dans le coin gauche de la page.

    Capture d’écran montrant la boîte de dialogue Envoyer un e-mail avec un objet et un type d’événement ajoutés à la ligne d’objet de la liste à droite.

Exemple : La dérive de données déclenche la reformation

Important

Cet exemple s’appuie sur une fonctionnalité (dérive de données) disponible uniquement lors de l’utilisation du Kit de développement logiciel (SDK) Azure Machine Learning v1 ou de l’extension Azure CLI v1 pour Azure Machine Learning. Pour plus d’informations, consultez Qu’est-ce qu’Azure Machine Learning CLI et SDK v2.

Les modèles deviennent obsolètes au fil du temps et ne restent pas fonctionnels dans le contexte dans lequel ils s’exécutent. Pour savoir s’il est temps de reformer le modèle, vous pouvez détecter la dérive des données.

Cet exemple illustre comment utiliser Event Grid avec Application logique Azure pour déclencher la reformation. L’exemple déclenche un pipeline Azure Data Factory lorsqu’une dérive de données se produit entre les jeux de données de formation et de service d’un modèle.

Avant de commencer, effectuez les étapes suivantes :

Dans cet exemple, un pipeline Data Factory simple est utilisé pour copier des fichiers dans un magasin d’objets blob et exécuter un pipeline Machine Learning publié. Pour plus d’informations sur ce scénario, découvrez comment configurer une étape de Machine Learning dans Azure Data Factory.

Capture d'écran montrant le pipeline de formation dans Azure Data Factory.

  1. Commencez par créer l’application logique. Accédez au Portail Azure, recherchez Applications logiques, puis sélectionnez Créer.

    search-logic-app

  2. Entrez les informations demandées. Pour simplifier l’expérience, utilisez le même abonnement et le même groupe de ressources que votre pipeline Azure Data Factory et votre espace de travail Azure Machine Learning.

    Capture d’écran montrant le volet de création d’application logique.

  3. Une fois que vous avez créé l’application logique, sélectionnez Quand un événement lié à une ressource Event Grid se produit.

    Capture d’écran montrant le Concepteur Logic Apps avec les options Démarrer avec un déclencheur courant, notamment Quand un événement lié à une ressource Event Grid se produit.

  4. Connectez-vous et renseignez les détails de l’événement. Définissez le Nom de la ressource sur le nom de l’espace de travail. Définissez le type d’événement sur DatasetDriftDetected.

    Capture d'écran montrant l'élément de type événement de dérive des données.

  5. Ajoutez une nouvelle étape, et recherchez Azure Data Factory. Sélectionnez Créer une exécution du pipeline.

    Capture d’écran montrant le volet Choisir une action avec l’option Créer une exécution du pipeline sélectionnée.

  6. Connectez-vous et spécifiez le pipeline Azure Data Factory publié à exécuter.

    Capture d’écran montrant le volet Créer une exécution de pipeline avec différentes valeurs.

  7. Enregistrez et créez l’application logique à l’aide du bouton Enregistrer en haut à gauche de la page. Pour afficher votre application, accédez à votre espace de travail dans le Portail Azure et cliquez sur Événements.

    Capture d’écran montrant des événements avec Logic App en surbrillance.

Désormais, le pipeline Data Factory est déclenché lorsque la dérive se produit. Consultez les détails de votre exécution de dérive de données et du pipeline Machine Learning dans Studio Azure Machine Learning.

Capture d’écran montrant les points de terminaison de pipeline.

Étapes suivantes

En savoir plus sur Event Grid et essayer les événements Azure Machine Learning :