Utlös program, processer eller CI/CD-arbetsflöden baserat på Azure Machine Learning-händelser

I den här artikeln får du lära dig hur du konfigurerar händelsedrivna program, processer eller CI/CD-arbetsflöden baserat på Azure Machine Learning-händelser. Till exempel körs e-postmeddelanden om misslyckade meddelanden eller ML-pipelinekörningar när vissa villkor identifieras med Hjälp av Azure Event Grid.

Azure Machine Learning hanterar hela livscykeln för maskininlärningsprocessen, inklusive modellträning, modelldistribution och övervakning. Du kan använda Event Grid för att reagera på Azure Machine Learning-händelser, till exempel slutförande av träningskörningar, registrering och distribution av modeller och identifiering av dataavvikelser med hjälp av moderna serverlösa arkitekturer. Du kan sedan prenumerera på och använda händelser som ändrad körningsstatus, slutförande av körning, modellregistrering, modelldistribution och identifiering av dataavvikelser på en arbetsyta.

När du ska använda Event Grid för händelsedrivna åtgärder:

  • Skicka e-postmeddelanden vid körningsfel och slutföra körning
  • Använda en Azure-funktion när en modell har registrerats
  • Strömma händelser från Azure Machine Learning till olika slutpunkter
  • Utlösa en ML-pipeline när drift identifieras

Viktigt!

Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Förhandsversionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Förutsättningar

Om du vill använda Event Grid behöver du deltagare eller ägare åtkomst till den Azure Machine Learning-arbetsyta som du skapar händelser för.

Händelsemodellen och typerna

Azure Event Grid läser händelser från källor, till exempel Azure Machine Learning och andra Azure-tjänster. Dessa händelser skickas sedan till händelsehanterare som Azure Event Hubs, Azure Functions, Logic Apps och andra. Följande diagram visar hur Event Grid ansluter källor och hanterare, men inte är en omfattande lista över integreringar som stöds.

Funktionsmodell för Azure Event Grid

Mer information om händelsekällor och händelsehanterare finns i Vad är Event Grid?

Händelsetyper för Azure Machine Learning

Azure Machine Learning aktiverar händelser vid olika punkter i livscykeln för maskininlärning:

Händelsetyp Beskrivning
Microsoft.MachineLearningServices.RunCompleted Aktiveras när en maskininlärningsexperimentkörning har slutförts
Microsoft.MachineLearningServices.ModelRegistered (förhandsgranskning) Aktiveras när en maskininlärningsmodell registreras på arbetsytan
Microsoft.MachineLearningServices.ModelDeployed (förhandsgranskning) Aktiveras när distributionen av en inferenstjänst med en eller flera modeller har slutförts
Microsoft.MachineLearningServices.DatasetDriftDetected (förhandsgranskning) Aktiveras när ett jobb för identifiering av dataavvikelser för två datauppsättningar har slutförts
Microsoft.MachineLearningServices.RunStatusChanged Utlöses när en körningsstatus ändras

Filtrera och prenumerera på händelser

Dessa händelser publiceras via Azure Event Grid. Från Azure-portalen, PowerShell eller Azure CLI kan du enkelt prenumerera på händelser genom att ange en eller flera händelsetyper och filtreringsvillkor.

När du konfigurerar dina händelser kan du använda filter för att endast utlösa specifika händelsedata. I följande exempel kan du filtrera efter körningstyper för ändrade körningsstatushändelser. Händelsen utlöses bara när kriterierna uppfylls. Mer information om de händelsedata som du kan filtrera på finns i Azure Machine Learning Event Grid-schemat.

Prenumerationer för Azure Machine Learning-händelser skyddas av rollbaserad åtkomstkontroll i Azure (Azure RBAC). Endast deltagare eller ägare av en arbetsyta kan skapa, uppdatera och ta bort händelseprenumerationer. Filter kan tillämpas på händelseprenumerationer antingen när händelseprenumerationen skapas eller vid ett senare tillfälle.

  1. Gå till Azure-portalen och välj en ny prenumeration eller en befintlig.

  2. Välj posten Händelser i det vänstra navigeringsområdet och välj sedan + Händelseprenumeration.

  3. Välj fliken Filter och rulla ned till Avancerade filter. Ange de egenskapstyper som du vill filtrera efter för nyckel och värde. Här kan du se händelseutlösare när körningstypen är en pipelinekörning eller pipelinestegkörning.

    filtrera händelser

  • Filtrera efter händelsetyp: En händelseprenumeration kan ange en eller flera Azure Machine Learning-händelsetyper.

  • Filtrera efter händelseämne: Azure Event Grid stöder ämnesfilter baserat på börjar med och slutar med matchningar, så att händelser med ett matchande ämne levereras till prenumeranten. Olika maskininlärningshändelser har olika ämnesformat.

    Händelsetyp Ämnesformat Exempelämne
    Microsoft.MachineLearningServices.RunCompleted experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
    Microsoft.MachineLearningServices.ModelRegistered (förhandsgranskning) models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed (förhandsgranskning) endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected (förhandsgranskning) 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
  • Avancerad filtrering: Azure Event Grid stöder även avancerad filtrering baserat på publicerat händelseschema. Information om Azure Machine Learning-händelseschema finns i Azure Event Grid-händelseschemat för Azure Machine Learning. För Microsoft.MachineLearningServices.ModelRegistered händelse, för att filtrera modellens taggvärde:

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

    Mer information om hur du använder filter finns i Filtrera händelser för Event Grid.

Använda Machine Learning-händelser

Program som hanterar Machine Learning-händelser bör följa några rekommenderade metoder:

  • Eftersom flera prenumerationer kan konfigureras för att dirigera händelser till samma händelsehanterare är det viktigt att inte anta att händelser kommer från en viss källa, utan att kontrollera meddelandets ämne för att säkerställa att det kommer från den maskininlärningsarbetsyta som du förväntar dig.
  • På samma sätt kontrollerar du att eventType är en som du är beredd att bearbeta och anta inte att alla händelser som du får är de typer du förväntar dig.
  • Eftersom meddelanden kan komma i fel ordning och efter en viss fördröjning använder du etag-fälten för att förstå om din information om objekt fortfarande är uppdaterad. Använd också sekvenseringsfälten för att förstå ordningen på händelser på ett visst objekt.
  • Ignorera fält som du inte förstår. Den här metoden hjälper dig att hålla dig motståndskraftig mot nya funktioner som kan läggas till i framtiden.
  • Misslyckade eller avbrutna Azure Machine Learning-åtgärder utlöser inte en händelse. Om en modelldistribution till exempel misslyckas utlöses inte Microsoft.MachineLearningServices.ModelDeployed. Överväg sådant felläge när du utformar dina program. Du kan alltid använda Azure Machine Learning SDK, CLI eller portalen för att kontrollera statusen för en åtgärd och förstå de detaljerade felorsakerna.

Med Azure Event Grid kan kunder skapa frikopplade meddelandehanterare, som kan utlösas av Azure Machine Learning-händelser. Några exempel på meddelandehanterare är:

  • Azure Functions
  • Azure Logic Program-program
  • Azure Event Hubs
  • Azure Data Factory-pipeline
  • Generiska webhooks, som kan finnas på Azure-plattformen eller någon annanstans

Konfigurera i Azure-portalen

  1. Öppna Azure-portalen och gå till din Azure Machine Learning-arbetsyta.

  2. I det vänstra fältet väljer du Händelser och sedan Händelseprenumerationer.

    Skärmbild som visar val av händelseprenumeration.

  3. Välj den händelsetyp som ska användas.

    Skärmbild av formuläret Skapa händelseprenumeration.

  4. Välj den slutpunkt som händelsen ska publiceras till. I följande skärmbild är Händelsehubb den valda slutpunkten:

    Skärmbild som visar fönstret Skapa händelseprenumeration med Välj händelsehubb öppen.

När du har bekräftat ditt val väljer du Skapa. Efter konfigurationen skickas dessa händelser till slutpunkten.

Konfigurera med CLI

Du kan antingen installera den senaste Azure CLI eller använda Azure Cloud Shell som tillhandahålls som en del av din Azure-prenumeration.

Om du vill installera Event Grid-tillägget använder du följande kommando från CLI:

az extension add --name eventgrid

I följande exempel visas hur du väljer en Azure-prenumeration och skapar en ny händelseprenumeration för 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"

Exempel

Exempel: Skicka e-postaviseringar

Använd Azure Logic Apps för att konfigurera e-postmeddelanden för alla dina händelser. Anpassa med villkor och ange mottagare för att möjliggöra samarbete och medvetenhet mellan team som arbetar tillsammans.

  1. I Azure-portalen går du till din Azure Machine Learning-arbetsyta och väljer fliken händelser i det vänstra fältet. Härifrån väljer du Logikappar.

    Skärmbild som visar valet av Logic Apps.

  2. Logga in på logikappens användargränssnitt och välj Machine Learning Service som ämnestyp.

    Skärmbild som visar dialogrutan När en resurshändelse inträffar med maskininlärning vald som resurstyp.

  3. Välj vilken händelse som ska meddelas för. Till exempel följande skärmbild RunCompleted.

    Skärmbild som visar Machine Learning-tjänsten som resurstyp.

  4. Lägg sedan till ett steg för att använda den här händelsen och söka efter e-post. Det finns flera olika e-postkonton som du kan använda för att ta emot händelser. Du kan också konfigurera villkor för när en e-postavisering ska skickas.

    Skärmbild som visar dialogrutan Välj en åtgärd med e-post angiven på sökraden.

  5. Välj Skicka ett e-postmeddelande och fyll i parametrarna. I ämnet kan du inkludera händelsetypen och ämnet för att filtrera händelser. Du kan också inkludera en länk till arbetsytans sida för körningar i meddelandetexten.

    Spara den här åtgärden genom att välja Spara som i det vänstra hörnet på sidan.

    Skärmbild som visar dialogrutan Skicka ett e-postmeddelande med Ämne och Händelsetyp som lagts till på ämnesraden från listan till höger.

Exempel: Omträning av dataavvikelseutlösare

Viktigt!

Det här exemplet förlitar sig på en funktion (dataavvikelse) som endast är tillgänglig när du använder Azure Machine Learning SDK v1 eller Azure CLI-tillägget v1 för Azure Machine Learning. Mer information finns i Vad är Azure Machine Learning CLI och SDK v2.

Modeller blir inaktuella över tid och är inte användbara i den kontext som körs i. Ett sätt att se om det är dags att träna om modellen är att identifiera dataavvikelser.

Det här exemplet visar hur du använder Event Grid med en Azure Logic App för att utlösa omträning. Exemplet utlöser en Azure Data Factory-pipeline när dataavvikelse inträffar mellan en modells träning och servering av datamängder.

Innan du börjar utför du följande åtgärder:

I det här exemplet används en enkel Data Factory-pipeline för att kopiera filer till ett bloblager och köra en publicerad Machine Learning-pipeline. Mer information om det här scenariot finns i hur du konfigurerar ett Machine Learning-steg i Azure Data Factory.

Skärmbild som visar träningspipelinen i Azure Data Factory.

  1. Börja med att skapa logikappen. Gå till Azure-portalen, sök efter Logic Apps och välj skapa.

    search-logic-app

  2. Fyll i den begärda informationen. För att förenkla upplevelsen använder du samma prenumeration och resursgrupp som din Azure Data Factory Pipeline och Azure Machine Learning-arbetsyta.

    Skärmbild som visar fönstret Skapa logikapp.

  3. När du har skapat logikappen väljer du När en Event Grid-resurshändelse inträffar.

    Skärmbild som visar Logic Apps Designer med Start med vanliga utlösaralternativ, inklusive När en Event Grid-resurshändelse inträffar.

  4. Logga in och fyll i informationen för händelsen. Ange resursnamnet till arbetsytans namn. Ange Händelsetyp till DatasetDriftDetected.

    Skärmbild som visar objektet för händelsetypen dataavvikelse.

  5. Lägg till ett nytt steg och sök efter Azure Data Factory. Välj Skapa en pipelinekörning.

    Skärmbild som visar fönstret Välj en åtgärd med Skapa en pipelinekörning markerad.

  6. Logga in och ange den publicerade Azure Data Factory-pipelinen som ska köras.

    Skärmbild som visar fönstret Skapa en pipelinekörning med olika värden.

  7. Spara och skapa logikappen med hjälp av knappen Spara längst upp till vänster på sidan. Om du vill visa din app går du till din arbetsyta i Azure-portalen och väljer Händelser.

    Skärmbild som visar händelser med logikappen markerad.

Nu utlöses datafabrikspipelinen när driften inträffar. Visa information om din dataavvikelsekörning och maskininlärningspipeline i Azure Machine Learning-studio.

Skärmbild som visar pipelineslutpunkter.

Nästa steg

Lär dig mer om Event Grid och ge Azure Machine Learning-händelser ett försök: