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.
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.
Wechseln Sie zum Azure-Portal, und wählen Sie ein neues oder ein vorhandenes Abonnement aus.
Wählen Sie im linken Navigationsbereich den Eintrag „Ereignisse“ und dann + Ereignisabonnement aus.
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 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
Öffnen Sie das Azure-Portal, und navigieren Sie zu Ihrem Azure Machine Learning-Arbeitsbereich.
Wählen Sie in der linken Leiste die Option Ereignisse aus, und wählen Sie dann Ereignisabonnements aus.
Wählen Sie den Typ des zu nutzenden Ereignisses aus.
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:
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.
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.
Melden Sie sich bei der Benutzeroberfläche für Logik-Apps an, und wählen Sie „MachineLearningServices“ als Thementyp aus.
Wählen Sie das Ereignis aus, für das eine Benachrichtigung erfolgen soll. Im folgenden Screenshot ist beispielsweise RunCompleted ausgewählt.
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.
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.
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:
- Einrichten einer Datasetüberwachung zum Erkennen von Datendrift (SDK/CLI v1) in einem Arbeitsbereich
- Erstellen einer veröffentlichten Azure Data Factory-Pipeline
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.
Beginnen Sie mit dem Erstellen der Logik-App. Wechseln Sie zum Azure-Portal, suchen Sie nach „Logik-Apps“, und wählen Sie „Erstellen“ aus.
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.
Nachdem Sie die Logik-App erstellt haben, wählen Sie Bei Auftreten eines Event Grid-Ressourcenereignisses aus.
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.
Fügen Sie einen neuen Schritt hinzu, und suchen Sie nach Azure Data Factory. Wählen Sie Pipelineausführung erstellen aus.
Melden Sie sich an, und geben die veröffentlichte Azure Data Factory-Pipeline an, die ausgeführt werden soll.
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.
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.
Nächste Schritte
Erfahren Sie mehr über Event Grid, und probieren Sie Azure Machine Learning-Ereignisse aus: