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 Mašinsko učenje 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 Mašinsko učenje hanterar hela livscykeln för maskininlärningsprocessen, inklusive modellträning, modelldistribution och övervakning. Du kan använda Event Grid för att reagera på Händelser i Azure Mašinsko učenje, 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 Mašinsko učenje 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 deltagar- eller ägaråtkomst till den Azure-Mašinsko učenje 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 Mašinsko učenje 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 Mašinsko učenje Event Grid-schemat.

Prenumerationer för Azure Mašinsko učenje-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-Mašinsko učenje 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 Mašinsko učenje händelseschema finns i Azure Event Grid-händelseschemat för Azure Mašinsko učenje. 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 Mašinsko učenje händelser

Program som hanterar Mašinsko učenje 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-Mašinsko učenje-å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 Mašinsko učenje 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 Mašinsko učenje 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 Mašinsko učenje-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 Mašinsko učenje:

# 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-Mašinsko učenje-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 Mašinsko učenje tjänst 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 Mašinsko učenje-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 Mašinsko učenje SDK v1 eller Azure CLI-tillägget v1 för Azure Mašinsko učenje. Mer information finns i Vad är Azure Mašinsko učenje 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 Mašinsko učenje pipeline. Mer information om det här scenariot finns i hur du konfigurerar ett Mašinsko učenje 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 Mašinsko učenje-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 Mašinsko učenje studio.

Skärmbild som visar pipelineslutpunkter.

Nästa steg

Lär dig mer om Event Grid och ge Azure Mašinsko učenje händelser ett försök: