Konfigurera MLOps med Azure DevOps
GÄLLER FÖR:Azure CLI ml extension v2 (current)
Python SDK azure-ai-ml v2 (aktuell)
Med Azure Machine Learning 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 Machine Learning-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 Machine Learning 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 MLOps- och AzureMLOps-lösningsacceleratorn (v2) för att snabbt konfigurera ett MLOps-projekt i Azure Machine Learning.
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
- En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar. Prova den kostnadsfria eller betalda versionen av Azure Machine Learning.
- En Azure Machine Learning-arbetsyta.
- Git körs på din lokala dator.
- En organisation i Azure DevOps.
- Azure DevOps-projekt som ska vara värd för källlagringsplatser och pipelines.
- Terraform-tillägget för Azure DevOps om du använder Azure DevOps + Terraform för att starta infrastrukturen
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 Machine Learning 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:
-
Dricks
Första gången du startar Cloud Shell uppmanas du att skapa ett lagringskonto för Cloud Shell.
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
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."
Kopiera dina redigerade kommandon till Azure Shell och kör dem (Ctrl + Skift + v).
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>" }
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.
Stäng Cloud Shell när tjänstens huvudnamn har skapats.
Konfigurera Azure DevOps
Gå till Azure DevOps.
Välj skapa ett nytt projekt (Namnge projektet
mlopsv2
för den här självstudien).I projektet under Projektinställningar (längst ned till vänster på projektsidan) väljer du Tjänstanslutningar.
Välj Skapa tjänstanslutning.
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
Ge tjänstanslutningen namnet Azure-ARM-Prod.
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
Öppna projektet som du skapade i Azure DevOps
Öppna avsnittet Lagringsplatser och välj Importera lagringsplats
Ange https://github.com/Azure/mlops-v2-ado-demo i fältet Klona URL. Välj importera längst ned på sidan
Öppna Project-inställningarna längst ned i det vänstra navigeringsfönstret
Under avsnittet Lagringsplatser väljer du Lagringsplatser. Välj den lagringsplats som du skapade i föregående steg Välj fliken Säkerhet
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.
Ö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
Välj mlopsv2 Build Service-kontot för projektet under avsnittet Användare. Ändra behörigheten Redigera bygg-pipeline till Tillåt
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 Machine Learning-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
Gå till lagringsplatsen
mlops-v2-ado-demo
och välj filen config-infra-prod.yml .Viktigt!
Kontrollera att du har valt huvudgrenen för lagringsplatsen.
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.
Välj Checka in och push-kod för att hämta dessa värden till pipelinen.
Gå till avsnittet Pipelines
Välj Skapa pipeline.
Välj Azure Repos Git.
Välj den lagringsplats som du klonade i från föregående avsnitt
mlops-v2-ado-demo
Välj befintlig YAML-fil för Azure Pipelines
Välj grenen
main
och väljmlops/devops-pipelines/cli-ado-deploy-infra.yml
och välj sedan Fortsätt.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 Machine Learning-arbetsytan.
- På arbetsytan skapas även ett beräkningskluster.
Nu distribueras infrastrukturen för ditt MLOps-projekt.
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 Machine Learning.
Distribuera modellträningspipeline
Gå till ADO-pipelines
Välj Ny pipeline.
Välj Azure Repos Git.
Välj den lagringsplats som du klonade i från föregående avsnitt
mlopsv2
Välj befintlig YAML-fil för Azure Pipelines
Välj
main
som en gren och välj/mlops/devops-pipelines/deploy-model-training-pipeline.yml
och välj sedan Fortsätt.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
Gå till ADO-pipelines
Välj Ny pipeline.
Välj Azure Repos Git.
Välj den lagringsplats som du klonade i från föregående avsnitt
mlopsv2
Välj befintlig YAML-fil för Azure Pipelines
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.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.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)]
När körningen är klar visas utdata som liknar följande bild:
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
- Om du inte kommer att fortsätta att använda din pipeline tar du bort ditt Azure DevOps-projekt.
- I Azure Portal tar du bort resursgruppen och Azure Machine Learning-instansen.
Nästa steg
- Installera och konfigurera Python SDK v2
- Installera och konfigurera Python CLI v2
- Lösningsaccelerator för Azure MLOps (v2) på GitHub
- Utbildningskurs om MLOps med Machine Learning
- Läs mer om Azure Pipelines med Azure Machine Learning
- Läs mer om GitHub Actions med Azure Machine Learning
- Distribuera MLOps på Azure på mindre än en timme – Video om Community MLOps V2 Accelerator