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

Dans cet article, vous allez apprendre à configurer des applications, des processus ou des workflows CI/CD basés sur des événements Azure Machine Learning, comme des e-mails de notification d’échec ou des exécutions de pipeline ML, lorsque certaines conditions sont détectées par 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

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 Déclenché lorsqu’un modèle d’apprentissage automatique est inscrit dans l’espace de travail
Microsoft.MachineLearningServices.ModelDeployed Déclenché lorsqu’un déploiement du service d’inférence avec un ou plusieurs modèles est terminé
Microsoft.MachineLearningServices.DatasetDriftDetected 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 changeait ; actuellement déclenché uniquement quand l’état d’exécution a la valeur « failed »

Filtrer les événements et s’y abonner

Ces événements sont publiés via Azure Event Grid. À l’aide du portail 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 en savoir plus sur les données d’événement que vous pouvez filtrer, reportez-vous au schéma Event Grid pour Azure Machine Learning.

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’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 models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected 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. Voici quelques exemples de filtres avancés que vous pouvez effectuer :

    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.

    select-events-in-workspace.png

  3. Sélectionnez le type d’événement à consommer. Par exemple, la capture d’écran suivante a sélectionné Modèle inscrit, Modèle déployé, Exécution terminée et Dérive de jeu de données détectée :

    add-event-type

  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, cliquez sur Créer. 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 add extension --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 une page d’événements de l’espace de travail Machine Learning avec 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 la boîte de dialogue Quand un événement de ressource se produit avec un type d’événement sélectionné.

  4. Vous pouvez utiliser la méthode de filtrage de la section précédente ou ajouter des filtres pour déclencher uniquement l’application logique sur un sous-ensemble de types d’événements. Dans la capture d’écran suivante, un filtre de préfixe de /datadriftID/runs/ est utilisé.

    filter-events

  5. 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.

  6. 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.

    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.

  7. Pour enregistrer cette action, sélectionnez Enregistrer sous dans le coin gauche de la page. Dans la barre de droite qui s’affiche, confirmez la création de cette action.

    Capture d’écran montrant les boutons Enregistrer sous et Créer dans le Concepteur Logic Apps.

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

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 montre comment utiliser Event Grid avec une 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 d’apprentissage dans Ressources Factory avec Copy data1 alimentant ML Execute Pipeline1.

  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 la fenêtre Quand un événement de ressource se produit avec un Élément de type d’événement sélectionné.

  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. Affichez les détails de l’exécution de la dérive de données et du pipeline d’apprentissage automatique sur le nouveau portail d’espace de travail.

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

Exemple : Déployer un modèle basé sur des balises

Un objet de modèle Azure Machine Learning contient des paramètres sur lesquels vous pouvez baser les déploiements, tels que le nom du modèle, la version, la balise et la propriété. L’événement d’inscription du modèle peut déclencher un point de terminaison et vous pouvez utiliser une fonction Azure pour déployer un modèle en fonction de la valeur de ces paramètres.

Pour obtenir un exemple, consultez le référentiel https://github.com/Azure-Samples/MachineLearningSamples-NoCodeDeploymentTriggeredByEventGrid et suivez les étapes dans le fichier readme.

Étapes suivantes

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