Auslösen von Anwendungen, Prozessen oder CI/CD-Workflows basierend auf Azure Machine Learning-Ereignissen

In diesem Artikel erfahren Sie, wie Sie ereignisgesteuerte Anwendungen, Prozesse oder CI/CD-Workflows basierend auf Azure Machine Learning-Ereignissen einrichten. Beispiel: E-Mails zur Fehlerbenachrichtigung oder Ausführungen der ML-Pipeline, wenn bestimmte Bedingungen mithilfe von Azure Event Grid erkannt werden.

Azure Machine Learning verwaltet den gesamten Lebenszyklus von Prozessen für maschinelles Lernen, wozu Modelltraining, Modellimplementierung und Überwachung gehören. Sie können Event Grid zum Reagieren auf Azure Machine Learning-Ereignisse, z. B. das Abschließen von Trainingsausführungen, das Registrieren und Bereitstellen von Modellen und das Erkennen von Datendrift, mithilfe moderner serverloser Architekturen verwenden. Anschließend können Sie Ereignisse wie einen geänderten Ausführungsstatus, den Abschluss einer Ausführung, Modellregistrierungen, Modellimplementierungen und Datendrifterkennungen in einem Arbeitsbereich abonnieren und verarbeiten.

Szenarien für die Verwendung von Event Grid für ereignisgesteuerte Aktionen:

  • Senden von E-Mails nach fehlerhafter und abgeschlossener Ausführung
  • Verwenden einer Azure-Funktion nach dem Registrieren eines Modells
  • Streaming von Ereignissen aus Azure Machine Learning an verschiedene Endpunkte
  • Auslösen einer ML-Pipeline bei Drifterkennung

Wichtig

Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Die Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Voraussetzungen

Für die Verwendung von Event Grid benötigen Sie Zugriff für Mitwirkende oder Besitzer*innen auf den Azure Machine Learning-Arbeitsbereich, für den Sie Ereignisse erstellen.

Das Ereignismodell und die Ereignistypen

Azure Event Grid liest Ereignisse aus Quellen, z. B. Azure Machine Learning und andere Azure-Dienste. Diese Ereignisse werden dann an Ereignishandler wie Azure Event Hubs, Azure Functions, Logic Apps und weitere gesendet. Das folgende Diagramm zeigt, wie Event Grid Quellen und Handler verbindet; dieses Diagramm ist jedoch keine vollständige Liste der unterstützten Integrationen.

Azure Event Grid – funktionales Modell

Weitere Informationen über Ereignisquellen und Ereignisbehandler finden Sie unter Was ist ein Ereignisraster?

Ereignistypen für Azure Machine Learning

Azure Machine Learning stellt Ereignisse an den verschiedenen Punkten eines Lebenszyklus für maschinelles Lernen bereit:

Ereignistyp BESCHREIBUNG
Microsoft.MachineLearningServices.RunCompleted Wird ausgelöst, wenn eine Ausführung eines Experiments für maschinelles Lernen abgeschlossen ist
Microsoft.MachineLearningServices.ModelRegistered (Vorschau) Wird ausgelöst, wenn ein Machine Learning-Modell im Arbeitsbereich registriert wird
Microsoft.MachineLearningServices.ModelDeployed (Vorschau) Wird ausgelöst, wenn eine Bereitstellung eines Rückschlussdiensts mit mindestens einem Modell abgeschlossen ist
Microsoft.MachineLearningServices.DatasetDriftDetected (Vorschau) Wird ausgelöst, wenn ein Datendrifterkennungsauftrag für zwei Datasets abgeschlossen ist
Microsoft.MachineLearningServices.RunStatusChanged Wird ausgelöst, wenn sich ein Ausführungsstatus ändert.

Filtern und Abonnieren von Ereignissen

Diese Ereignisse werden über Azure Event Grid veröffentlicht. Über das Azure-Portal, PowerShell oder Azure CLI können Sie ganz einfach Ereignisse abonnieren, indem sie mindestens einen Ereignistyp sowie Filterbedingungen angeben.

Beim Einrichten von Ereignissen können Sie Filter anwenden, damit nur bei bestimmten Ereignisdaten eine Auslösung erfolgt. Im folgenden Beispiel können Sie bei Ereignissen mit geändertem Ausführungsstatus nach Ausführungstypen filtern. Das Ereignis wird nur ausgelöst, wenn die Kriterien erfüllt sind. Weitere Informationen zu den Ereignisdaten, nach denen Sie filtern können, finden Sie im Event Grid-Schema für Azure Machine Learning.

Abonnements für Azure Machine Learning-Ereignisse werden durch rollenbasierte Zugriffssteuerung von Azure (Azure Role-Based Access Control, Azure RBAC) geschützt. Nur ein Mitwirkender oder Besitzer eines Arbeitsbereichs kann Ereignisabonnements erstellen, aktualisieren und löschen. Auf Ereignisabonnements können während der Erstellung des Ereignisabonnements oder zu einem späteren Zeitpunkt Filter angewendet werden.

  1. Wechseln Sie zum Azure-Portal, und wählen Sie ein neues oder ein vorhandenes Abonnement aus.

  2. Wählen Sie im linken Navigationsbereich den Eintrag „Ereignisse“ und dann + Ereignisabonnement aus.

  3. Wählen Sie die Registerkarte „Filter“ aus, und scrollen Sie zu „Erweiterte Filter“. Geben Sie unter Schlüssel und Wert die Eigenschaftstypen an, nach denen Sie filtern möchten. Hier können Sie sehen, dass das Ereignis nur ausgelöst wird, wenn der Ausführungstyp eine Ausführung der Pipeline oder eine Ausführung eines Pipeline-Schritts ist.

    Filtern von Ereignissen

  • Filtern nach Ereignistyp: In einem Ereignisabonnement können ein oder mehrere Azure Machine Learning-Ereignistypen angegeben sein.

  • Filtern nach Ereignisgegenstand: Azure Event Grid unterstützt Gegenstandsfilter auf Grundlage von beginnt mit- und endet mit-Übereinstimmungen, sodass Ereignisse mit einem übereinstimmenden Gegenstand an den Abonnenten übermittelt werden. Unterschiedliche Machine Learning-Ereignisse haben unterschiedliche Gegenstandsformate.

    Ereignistyp Gegenstandsformat Beispielgegenstand
    Microsoft.MachineLearningServices.RunCompleted experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
    Microsoft.MachineLearningServices.ModelRegistered (Vorschau) models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed (Vorschau) endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected (Vorschau) 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
  • Erweiterte Filterung: Azure Event Grid unterstützt auch erweitertes Filtern anhand eines veröffentlichten Ereignisschemas. Ausführliche Informationen zum Azure Machine Learning-Ereignisschema finden Sie unter Azure Event Grid-Ereignisschema für Azure Machine Learning. Für das Microsoft.MachineLearningServices.ModelRegistered-Ereignis Filtern des Tagwerts eines Modells:

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

    Weitere Informationen zum Anwenden von Filtern finden Sie unter Filtern von Ereignissen für Event Grid.

Nutzen von Machine Learning-Ereignissen

Anwendungen, die Machine Learning-Ereignisse behandeln, sollten einigen empfohlene Vorgehensweisen entsprechen:

  • Da mehrere Abonnements zum Weiterleiten von Ereignissen an den gleichen Ereignishandler konfiguriert werden können, ist es wichtig, nicht davon auszugehen, dass Ereignisse von einer bestimmten Quelle stammen, sondern das Thema der Nachricht zu überprüfen, um sicherzugehen, dass es aus dem erwarteten Machine Learning-Arbeitsbereich stammt.
  • Überprüfen Sie auf ähnliche Weise, ob Sie auf die Verarbeitung des eventType vorbereitet sind, und gehen Sie nicht davon aus, dass alle Ereignisse, die Sie empfangen, den von Ihnen erwarteten Typen entsprechen.
  • Da Nachrichten in falscher Reihenfolge und mit Verzögerung eintreffen können, verwenden Sie die etag-Felder, um zu verstehen, ob Ihre Informationen zu Objekten weiterhin auf dem neuesten Stand ist. Verwenden Sie auch die sequencer-Felder, um die Reihenfolge der Ereignisse für ein bestimmtes Objekt zu verstehen.
  • Ignorieren Sie Felder, die Sie nicht verstehen. So müssen Sie sich nicht mit neuen Features auseinandersetzen, die in der Zukunft hinzugefügt werden könnten.
  • Fehlgeschlagene oder abgebrochene Azure Machine Learning-Vorgänge lösen kein Ereignis aus. Wenn beispielsweise bei einer Modellimplementierung ein Fehler auftritt, wird Microsoft.MachineLearningServices.ModelDeployed nicht ausgelöst. Berücksichtigen Sie solche Fehlermodi, wenn Sie Ihre Anwendungen entwerfen. Sie können jederzeit über das Azure Machine Learning SDK, die CLI oder das Portal den Status eines Vorgangs überprüfen und die detaillierten Fehlerursachen ermitteln.

Mit Azure Event Grid können Kund*innen entkoppelte Meldungshandler erstellen, die durch Azure Machine Learning-Ereignisse ausgelöst werden können. Einige relevante Beispiele für Meldungshandler sind:

  • Azure-Funktionen
  • Azure Logic Apps
  • Azure Event Hubs
  • Azure Data Factory-Pipeline
  • Generische Webhooks, die möglicherweise auf der Azure-Plattform oder an anderer Stelle gehostet werden

Einrichtung im Azure-Portal

  1. Öffnen Sie das Azure-Portal, und navigieren Sie zu Ihrem Azure Machine Learning-Arbeitsbereich.

  2. Wählen Sie in der linken Leiste die Option Ereignisse aus, und wählen Sie dann Ereignisabonnements aus.

    Screenshot: die Ereignisabonnement-Auswahl.

  3. Wählen Sie den Typ des zu nutzenden Ereignisses aus.

    Screenshot: das Formular „Ereignisabonnement erstellen“.

  4. Wählen Sie den Endpunkt aus, für den das Ereignis veröffentlicht werden soll. Im folgenden Screenshot ist Event Hub der ausgewählte Endpunkt:

    Screenshot: Bereich „Ereignisabonnement erstellen“ mit geöffnetem Fenster „Event Hub-Instanz auswählen“

Nachdem Sie Ihre Auswahl bestätigt haben, wählen Sie Erstellen aus. Nach der Konfiguration werden diese Ereignisse per Pushvorgang an ihren Endpunkt übermittelt.

Einrichtung mit der CLI

Sie können entweder die neueste Azure CLI installieren oder die Azure Cloud Shell verwenden, die als Bestandteil Ihres Azure-Abonnements bereitgestellt wird.

Um die Event Grid-Erweiterung zu installieren, verwenden Sie den folgenden Befehl in der CLI (Command-Line Interface, Befehlszeilenschnittstelle):

az extension add --name eventgrid

Im folgenden Beispiel wird veranschaulicht, wie Sie ein Azure-Abonnement auswählen und dann ein neues Ereignisabonnement für Azure Machine Learning erstellen:

# 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"

Beispiele

Beispiel: Senden von E-Mail-Benachrichtigungen

Verwenden Sie Azure Logic Apps, um E-Mails für Ihre Ereignisse zu konfigurieren. Passen Sie diese mit Bedingungen an, und geben Sie Empfänger an, um die Zusammenarbeit und Beachtung zwischen Teams zu ermöglichen, die zusammenarbeiten.

  1. Wechseln Sie im Azure-Portal zu Ihrem Azure Machine Learning-Arbeitsbereich, und wählen Sie in der linken Leiste die Registerkarte „Ereignisse“ aus. Wählen Sie dort die Option Logik-Apps aus.

    Screenshot: die Logic Apps-Auswahl.

  2. Melden Sie sich bei der Benutzeroberfläche für Logik-Apps an, und wählen Sie „MachineLearningServices“ als Thementyp aus.

    Screenshot: Dialogfeld „When a resource event occurs“ (Bei Auftreten eines Ressourcenereignisses), bei dem Machine Learning als Ressourcentyp ausgewählt ist

  3. Wählen Sie das Ereignis aus, für das eine Benachrichtigung erfolgen soll. Im folgenden Screenshot ist beispielsweise RunCompleted ausgewählt.

    Screenshot: der Machine Learning Service als der Ressourcentyp.

  4. Fügen Sie nun einen Schritt hinzu, um dieses Ereignis zu nutzen und nach E-Mails zu suchen. Es gibt mehrere unterschiedliche E-Mail-Konten, die Sie zum Empfangen von Ereignissen verwenden können. Außerdem können Sie Bedingungen dazu festlegen, wann eine E-Mail-Benachrichtigung gesendet werden soll.

    Screenshot: Dialogfeld „Aktion auswählen“ mit „E-Mail“ im Suchfeld

  5. Wählen Sie E-Mail senden aus, und geben Sie Werte für die Parameter ein. In den Betreff können Sie den Ereignistyp und das Thema einfügen, um das Filtern von Ereignissen zu vereinfachen. Sie können auch in den Nachrichtentext einen Link zur Arbeitsbereichsseite für Ausführungen einfügen.

    Um diese Aktion zu speichern, wählen Sie Speichern unter in der linken Ecke der Seite aus.

    Screenshot: Dialogfeld „E-Mail senden“, bei dem „Thema“ und „Ereignistyp“ aus der Liste rechts in der Betreffzeile hinzugefügt wurden

Beispiel: Erneutes Trainieren von Datendriftauslösern

Wichtig

Dieses Beispiel stützt sich auf ein Feature (Datendrift), das nur verfügbar ist, wenn Sie Azure Machine Learning SDK v1 oder die Azure CLI-Erweiterung v1 für Azure Machine Learning verwenden. Weitere Informationen finden Sie unter Azure Machine Learning-CLI und SDK v2.

Modelle werden im Laufe der Zeit veraltet, sodass sie in dem Kontext, in dem sie ausgeführt werden, nicht länger nützlich sind. Eine Möglichkeit zum Feststellen, ob es an der Zeit ist, das Modell erneut zu trainieren, ist das Erkennen von Datendrift.

In diesem Beispiel wird gezeigt, wie Event Grid mit einer Azure-Logik-App verwendet werden kann, um ein erneutes Trainieren auszulösen. Im Beispiel wird eine Azure Data Factory-Pipeline ausgelöst, wenn Datendrift zwischen dem Trainings- und dem Nutzungsdataset eines Modells auftritt.

Führen Sie zur Vorbereitung zunächst die folgenden Aktionen aus:

In diesem Beispiel wird eine einfache Data Factory-Pipeline verwendet, um Dateien in einen Blobspeicher zu kopieren und eine veröffentlichte Machine Learning-Pipeline auszuführen. Weitere Informationen zu diesem Szenario finden Sie unter Einrichten eines Machine Learning-Schritts in Azure Data Factory.

Screenshot: die Trainingspipeline in Azure Data Factory.

  1. Beginnen Sie mit dem Erstellen der Logik-App. Wechseln Sie zum Azure-Portal, suchen Sie nach „Logik-Apps“, und wählen Sie „Erstellen“ aus.

    search-logic-app

  2. Geben Sie die erforderlichen Informationen ein. Um die Umgebung zu vereinfachen, verwenden Sie dasselbe Abonnement und dieselbe Ressourcengruppe wie Ihre Azure Data Factory-Pipeline und Ihr Azure Machine Learning-Arbeitsbereich.

    Screenshot: Bereich „Erstellen“ für Logik-Apps

  3. Nachdem Sie die Logik-App erstellt haben, wählen Sie Bei Auftreten eines Event Grid-Ressourcenereignisses aus.

    Screenshot: Designer für Logik-Apps mit Optionen für „Starten Sie mit einem gängigen Trigger“ einschließlich „Bei Auftreten eines Event Grid-Ressourcenereignisses“

  4. Melden Sie sich an, und geben Sie die Details für das Ereignis ein. Legen Sie Ressourcenname auf den Namen des Arbeitsbereichs fest. Legen Sie Ereignistyp auf DatasetDriftDetected fest.

    Screenshot: das Element Datendrift-Ereignistyp.

  5. Fügen Sie einen neuen Schritt hinzu, und suchen Sie nach Azure Data Factory. Wählen Sie Pipelineausführung erstellen aus.

    Screenshot: Bereich „Aktion auswählen“ mit ausgewählter Option „Create a pipeline run“ (Pipelineausführung erstellen)

  6. Melden Sie sich an, und geben die veröffentlichte Azure Data Factory-Pipeline an, die ausgeführt werden soll.

    Screenshot: Bereich „Create a pipeline run“ (Pipelineausführung erstellen) mit verschiedenen Werten

  7. Speichern und erstellen Sie die Logik-App über die Speichern-Schaltfläche oben links auf der Seite. Um Ihre App anzuzeigen, wechseln Sie im Azure-Portal zu Ihrem Arbeitsbereich, und wählen Sie Ereignisse aus.

    Screenshot: Ereignisse mit hervorgehobener Logik-App

Ab jetzt wird die Data Factory-Pipeline ausgelöst, wenn eine Datendrift auftritt. Sehen Sie sich Details zu Ihrem Datendrift und der Pipeline für maschinelles Lernen in Azure Machine Learning Studio an.

Screenshot: Pipelineendpunkte.

Nächste Schritte

Erfahren Sie mehr über Event Grid, und probieren Sie Azure Machine Learning-Ereignisse aus: