Dela via


Konfigurera MLOps med Azure DevOps

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Med Azure Mašinsko učenje kan du integrera med Azure DevOps-pipelinen för att automatisera maskininlärningslivscykeln. Några av de åtgärder som du kan automatisera är:

  • Distribution av Azure Mašinsko učenje-infrastruktur
  • Förberedelse av data (extrahera, transformera, läsa in åtgärder)
  • Träna maskininlärningsmodeller med utskalning på begäran och uppskalning
  • Distribution av maskininlärningsmodeller som offentliga eller privata webbtjänster
  • Övervaka distribuerade maskininlärningsmodeller (till exempel för prestandaanalys)

I den här artikeln lär du dig hur du använder Azure Mašinsko učenje för att konfigurera en MLOps-pipeline från slutpunkt till slutpunkt som kör en linjär regression för att förutsäga taxipriser i NYC. Pipelinen består av komponenter som var och en betjänar olika funktioner, som kan registreras med arbetsytan, versionshanteras och återanvändas med olika indata och utdata. Du kommer att använda den rekommenderade Azure-arkitekturen för LÖSNINGsacceleratorn MLOps och AzureMLOps (v2) för att snabbt konfigurera ett MLOps-projekt i Azure Mašinsko učenje.

Dricks

Vi rekommenderar att du förstår några av de rekommenderade Azure-arkitekturerna för MLOps innan du implementerar någon lösning. Du måste välja den bästa arkitekturen för ditt maskininlärningsprojekt.

Förutsättningar

Kommentar

Git version 2.27 eller senare krävs. Mer information om hur du installerar Git-kommandot https://git-scm.com/downloads finns i och välj ditt operativsystem

Viktigt!

CLI-kommandona i den här artikeln har testats med Bash. Om du använder ett annat gränssnitt kan det uppstå fel.

Konfigurera autentisering med Azure och DevOps

Innan du kan konfigurera ett MLOps-projekt med Azure Mašinsko učenje måste du konfigurera autentisering för Azure DevOps.

Skapa tjänstens huvudnamn

För att kunna använda demonstrationen krävs skapandet av en eller två tjänstprinciper, beroende på hur många miljöer du vill arbeta med (Dev eller Prod eller Båda). Dessa principer kan skapas med någon av följande metoder:

  1. Starta Azure Cloud Shell.

    Dricks

    Första gången du startar Cloud Shell uppmanas du att skapa ett lagringskonto för Cloud Shell.

  2. Om du uppmanas till det väljer du Bash som den miljö som används i Cloud Shell. Du kan också ändra miljöer i listrutan i det övre navigeringsfältet

    Skärmbild av listrutan cloud shell-miljö.

  3. Kopiera följande bash-kommandon till datorn och uppdatera variablerna projectName, subscriptionId och miljö med värdena för projektet. Om du skapar både en Dev- och Prod-miljö måste du köra skriptet en gång för varje miljö och skapa ett huvudnamn för tjänsten för var och en. Det här kommandot ger också rollen Deltagare till tjänstens huvudnamn i den angivna prenumerationen. Detta krävs för att Azure DevOps ska kunna använda resurser i den prenumerationen korrekt.

    projectName="<your project name>"
    roleName="Contributor"
    subscriptionId="<subscription Id>"
    environment="<Dev|Prod>" #First letter should be capitalized
    servicePrincipalName="Azure-ARM-${environment}-${projectName}"
    # Verify the ID of the active subscription
    echo "Using subscription ID $subscriptionID"
    echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes     /subscriptions/$subscriptionId"
    az ad sp create-for-rbac --name $servicePrincipalName --role $roleName --scopes /subscriptions/$subscriptionId
    echo "Please ensure that the information created here is properly save for future use."
    
  4. Kopiera dina redigerade kommandon till Azure Shell och kör dem (Ctrl + Skift + v).

  5. När du har kört dessa kommandon visas information om tjänstens huvudnamn. Spara den här informationen på en säker plats. Den kommer att användas senare i demonstrationen för att konfigurera Azure DevOps.

    {
       "appId": "<application id>",
       "displayName": "Azure-ARM-dev-Sample_Project_Name",
       "password": "<password>",
       "tenant": "<tenant id>"
    }
    
  6. Upprepa steg 3 om du skapar tjänstens huvudnamn för Dev- och Prod-miljöer. För den här demonstrationen skapar vi bara en miljö, som är Prod.

  7. Stäng Cloud Shell när tjänstens huvudnamn har skapats.

Konfigurera Azure DevOps

  1. Gå till Azure DevOps.

  2. Välj skapa ett nytt projekt (Namnge projektet mlopsv2 för den här självstudien).

    Skärmbild av ADO-projekt.

  3. I projektet under Projektinställningar (längst ned till vänster på projektsidan) väljer du Tjänstanslutningar.

  4. Välj Skapa tjänstanslutning.

    Skärmbild av knappen Ny tjänstanslutning för ADO.

  5. Välj Azure Resource Manager, välj Nästa, välj Tjänstens huvudnamn (manuell), välj Nästa och välj Prenumeration på omfångsnivå.

    • Prenumerationsnamn – Använd namnet på prenumerationen där tjänstens huvudnamn lagras.
    • Prenumerations-ID – Använd du subscriptionId som prenumerations-ID i steg 1-indata
    • Tjänstens huvudnamn-ID – Använd appId utdata från steg 1 som tjänstens huvudnamns-ID
    • Nyckel för tjänstens huvudnamn – Använd password utdata från steg 1 som tjänstens huvudnamnsnyckel
    • Klientorganisations-ID – Använd tenant utdata från steg 1 som klientorganisations-ID
  6. Ge tjänstanslutningen namnet Azure-ARM-Prod.

  7. Välj Bevilja åtkomstbehörighet till alla pipelines och välj sedan Verifiera och Spara.

Installationen av Azure DevOps har slutförts.

Konfigurera källlagringsplats med Azure DevOps

  1. Öppna projektet som du skapade i Azure DevOps

  2. Öppna avsnittet Lagringsplatser och välj Importera lagringsplats

    Skärmbild av Azure DevOps-importrepo första gången.

  3. Ange https://github.com/Azure/mlops-v2-ado-demo i fältet Klona URL. Välj importera längst ned på sidan

    Skärmbild av azure devops importera MLOps demo lagringsplats.

  4. Öppna Project-inställningarna längst ned i det vänstra navigeringsfönstret

  5. Under avsnittet Lagringsplatser väljer du Lagringsplatser. Välj den lagringsplats som du skapade i föregående steg Välj fliken Säkerhet

  6. Under avsnittet Användarbehörigheter väljer du mlopsv2 Build Service-användaren . Ändra behörigheten Contribute-behörighet till Tillåt och behörigheten Skapa gren till Tillåt. Skärmbild av Azure DevOps-behörigheter.

  7. Öppna avsnittet Pipelines i det vänstra navigeringsfönstret och välj de tre lodräta punkterna bredvid knappen Skapa pipelines. Välj Hantera säkerhet

    Skärmbild av pipelinesäkerhet.

  8. Välj mlopsv2 Build Service-kontot för projektet under avsnittet Användare. Ändra behörigheten Redigera bygg-pipeline till Tillåt

    Skärmbild av Lägg till säkerhet.

Kommentar

Detta avslutar avsnittet med förhandskraven och distributionen av lösningsacceleratorn kan ske i enlighet med detta.

Distribuera infrastruktur via Azure DevOps

Det här steget distribuerar träningspipelinen till den Azure Mašinsko učenje-arbetsyta som skapades i föregående steg.

Dricks

Se till att du förstår lösningsacceleratorns arkitekturmönster innan du checkar ut MLOps v2-lagringsplatsen och distribuerar infrastrukturen. I exempel använder du den klassiska ML-projekttypen.

Köra Azure-infrastrukturpipeline

  1. Gå till lagringsplatsen mlops-v2-ado-demooch välj filen config-infra-prod.yml .

    Viktigt!

    Kontrollera att du har valt huvudgrenen för lagringsplatsen.

    Skärmbild av lagringsplatsen i ADO.

    Den här konfigurationsfilen använder namnområdet och postfixvärdena namnen på artefakterna för att säkerställa unikhet. Uppdatera följande avsnitt i konfigurationen efter behov.

     namespace: [5 max random new letters]
     postfix: [4 max random new digits]
     location: eastus
    

    Kommentar

    Om du kör en Deep Learning-arbetsbelastning som CV eller NLP kontrollerar du att GPU-beräkningen är tillgänglig i distributionszonen.

  2. Välj Checka in och push-kod för att hämta dessa värden till pipelinen.

  3. Gå till avsnittet Pipelines

    Skärmbild av ADO-pipelines.

  4. Välj Skapa pipeline.

  5. Välj Azure Repos Git.

    Skärmbild av ADO Var är din kod.

  6. Välj den lagringsplats som du klonade i från föregående avsnitt mlops-v2-ado-demo

  7. Välj befintlig YAML-fil för Azure Pipelines

    Skärmbild av sidan Azure DevOps Pipeline i konfigurationssteget.

  8. Välj grenen main och välj mlops/devops-pipelines/cli-ado-deploy-infra.ymloch välj sedan Fortsätt.

  9. Kör pipelinen. det tar några minuter att slutföra. Pipelinen bör skapa följande artefakter:

    • Resursgrupp för din arbetsyta, inklusive lagringskonto, containerregister, Application Insights, Keyvault och själva Azure Mašinsko učenje-arbetsytan.
    • På arbetsytan skapas även ett beräkningskluster.
  10. Nu distribueras infrastrukturen för ditt MLOps-projekt. Skärmbild av skärmen ADO Infra Pipeline.

    Kommentar

    Det går inte att flytta och återanvända den befintliga lagringsplatsen till de platsvarningar som krävs.

Exempel på tränings- och distributionsscenario

Lösningsacceleratorn innehåller kod och data för ett exempel på en maskininlärningspipeline från slutpunkt till slutpunkt som kör en linjär regression för att förutsäga taxipriser i NYC. Pipelinen består av komponenter som var och en betjänar olika funktioner, som kan registreras med arbetsytan, versionshanteras och återanvändas med olika indata och utdata. Exempelpipelines och arbetsflöden för scenarierna Visuellt innehåll och NLP har olika steg och distributionssteg.

Den här träningspipelinen innehåller följande steg:

Förbereda data

  • Den här komponenten tar flera taxidatauppsättningar (gul och grön) och sammanfogar/filtrerar data och förbereder datauppsättningarna train/val och evaluation.
  • Indata: Lokala data under ./data/ (flera .csv filer)
  • Utdata: Enkel förberedd datauppsättning (.csv) och tränings-/val-/testdatauppsättningar.

Train Model (Träningsmodell)

  • Den här komponenten tränar en linjär regressor med träningsuppsättningen.
  • Indata: Träningsdatauppsättning
  • Utdata: Tränad modell (pickle-format)

Utvärdera modell

  • Den här komponenten använder den tränade modellen för att förutsäga taxipriser på testuppsättningen.
  • Indata: ML-modell och testdatauppsättning
  • Utdata: Prestanda för modellen och en distributionsflagga om du vill distribuera eller inte.
  • Den här komponenten jämför modellens prestanda med alla tidigare distribuerade modeller på den nya testdatauppsättningen och avgör om modellen ska höjas upp eller inte till produktion. Att marknadsföra modellen till produktion sker genom att modellen registreras på AML-arbetsytan.

Registrera modell

  • Den här komponenten poängsätter modellen baserat på hur exakta förutsägelserna är i testuppsättningen.
  • Indata: Tränad modell och distributionsflaggan.
  • Utdata: Registrerad modell i Azure Mašinsko učenje.

Distribuera modellträningspipeline

  1. Gå till ADO-pipelines

    Skärmbild av ADO-pipelines.

  2. Välj Ny pipeline.

    Skärmbild av knappen Ny pipeline för ADO.

  3. Välj Azure Repos Git.

    Skärmbild av ADO Var är din kod.

  4. Välj den lagringsplats som du klonade i från föregående avsnitt mlopsv2

  5. Välj befintlig YAML-fil för Azure Pipelines

    Skärmbild av sidan ADO-pipeline vid konfigurationssteget.

  6. Välj main som en gren och välj /mlops/devops-pipelines/deploy-model-training-pipeline.ymloch välj sedan Fortsätt.

  7. Spara och kör pipelinen

Kommentar

Nu konfigureras infrastrukturen och prototyploopen för MLOps-arkitekturen distribueras. du är redo att gå över till vår tränade modell till produktion.

Distribuera den tränade modellen

Det här scenariot innehåller fördefinierade arbetsflöden för två metoder för att distribuera en tränad modell, batchbedömning eller distribution av en modell till en slutpunkt för bedömning i realtid. Du kan köra något av eller båda dessa arbetsflöden för att testa modellens prestanda på din Azure ML-arbetsyta. I det här exemplet använder vi realtidsbedömning.

Distribuera ML-modellslutpunkt

  1. Gå till ADO-pipelines

    Skärmbild av ADO-pipelines.

  2. Välj Ny pipeline.

    Skärmbild av knappen Ny pipeline för ADO för slutpunkten.

  3. Välj Azure Repos Git.

    Skärmbild av ADO Var är din kod.

  4. Välj den lagringsplats som du klonade i från föregående avsnitt mlopsv2

  5. Välj befintlig YAML-fil för Azure Pipelines

    Skärmbild av sidan Azure DevOps Pipeline i konfigurationssteget.

  6. Välj main som en gren och välj Hanterad onlineslutpunkt /mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml och välj sedan Fortsätt.

  7. Onlineslutpunktsnamn måste vara unika, så ändra taxi-online-$(namespace)$(postfix)$(environment) till ett annat unikt namn och välj sedan Kör. Du behöver inte ändra standardvärdet om det inte misslyckas.

    Skärmbild av Azure DevOps batchdistributionsskript.

    Viktigt!

    Om körningen misslyckas på grund av ett befintligt onlineslutpunktsnamn återskapar du pipelinen enligt beskrivningen tidigare och ändrar [ditt slutpunktsnamn] till [ditt slutpunktsnamn (slumptal)]

  8. När körningen är klar visas utdata som liknar följande bild:

    Skärmbild av resultatsidan för batchkörning i ADO Pipeline.

  9. Om du vill testa den här distributionen går du till fliken Slutpunkter i AzureML-arbetsytan, väljer slutpunkten och klickar på fliken Test . Du kan använda exempelindata som finns i den klonade lagringsplatsen vid /data/taxi-request.json för att testa slutpunkten.

Rensa resurser

  1. Om du inte kommer att fortsätta att använda din pipeline tar du bort ditt Azure DevOps-projekt.
  2. Ta bort resursgruppen och Azure Mašinsko učenje-instansen i Azure-portalen.

Nästa steg