Använda Azure Pipelines med Azure Mašinsko učenje
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Du kan använda en Azure DevOps-pipeline för att automatisera maskininlärningslivscykeln. Några av de åtgärder som du kan automatisera är:
- 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
- Övervakning av distribuerade maskininlärningsmodeller (till exempel för prestanda- eller dataavvikelseanalys)
Den här artikeln lär dig hur du skapar en Azure Pipeline som skapar och distribuerar en maskininlärningsmodell till Azure Mašinsko učenje.
I den här självstudien används Azure Mašinsko učenje Python SDK v2 och Azure CLI ML-tillägget v2.
Förutsättningar
- Slutför skapa resurser för att komma igång med:
- Skapa en arbetsyta
- Skapa ett molnbaserat beräkningskluster som ska användas för att träna din modell
- Azure Mašinsko učenje-tillägget för Azure Pipelines. Det här tillägget kan installeras från Visual Studio Marketplace på https://marketplace.visualstudio.com/items?itemName=ms-air-aiagility.azureml-v2.
Steg 1: Hämta koden
Förgrena följande lagringsplats på GitHub:
https://github.com/azure/azureml-examples
Steg 2: Logga in på Azure Pipelines
Logga in på Azure Pipelines. När du har loggat in går webbläsaren till https://dev.azure.com/my-organization-name
och visar din Azure DevOps-instrumentpanel.
Skapa ett projekt i den valda organisationen. Om du inte har några projekt i din organisation visas skärmen Skapa ett projekt för att komma igång . Annars väljer du knappen Nytt projekt i det övre högra hörnet på instrumentpanelen.
Steg 3: Skapa en tjänstanslutning
Du kan använda en befintlig tjänstanslutning.
Du behöver en Azure Resource Manager-anslutning för att autentisera med Azure-portalen.
I Azure DevOps väljer du Projektinställningar och öppnar sidan Tjänstanslutningar .
Välj Skapa tjänstanslutning och välj Azure Resource Manager.
Välj standardautentiseringsmetod, Tjänstens huvudnamn (automatisk).
Skapa din tjänstanslutning. Ange önskad omfångsnivå, prenumeration, resursgrupp och anslutningsnamn.
Steg 4: Skapa en pipeline
Gå till Pipelines och välj sedan skapa pipeline.
Utför stegen i guiden genom att först välja GitHub som plats för källkoden.
Du kan omdirigeras till GitHub för att logga in. I så fall anger du dina GitHub-autentiseringsuppgifter.
När du ser listan över lagringsplatser väljer du din lagringsplats.
Du kan omdirigeras till GitHub för att installera Azure Pipelines-appen. I så fall väljer du Godkänn och installera.
Välj startpipelinen. Du uppdaterar mallen för startpipelinen.
Steg 5: Skapa din YAML-pipeline för att skicka Azure Mašinsko učenje-jobbet
Ta bort startpipelinen och ersätt den med följande YAML-kod. I den här pipelinen gör du följande:
- Använd Python-versionsuppgiften för att konfigurera Python 3.8 och installera SDK-kraven.
- Använd Bash-uppgiften för att köra bash-skript för Azure Mašinsko učenje SDK och CLI.
- Använd Azure CLI-uppgiften för att skicka ett Azure Mašinsko učenje-jobb.
Välj följande flikar beroende på om du använder en Azure Resource Manager-tjänstanslutning eller en allmän tjänstanslutning. I YAML-pipelinen ersätter du värdet för variabler med dina resurser.
name: submit-azure-machine-learning-job
trigger:
- none
variables:
service-connection: 'machine-learning-connection' # replace with your service connection name
resource-group: 'machinelearning-rg' # replace with your resource group name
workspace: 'docs-ws' # replace with your workspace name
jobs:
- job: SubmitAzureMLJob
displayName: Submit AzureML Job
timeoutInMinutes: 300
pool:
vmImage: ubuntu-latest
steps:
- task: UsePythonVersion@0
displayName: Use Python >=3.8
inputs:
versionSpec: '>=3.8'
- bash: |
set -ex
az version
az extension add -n ml
displayName: 'Add AzureML Extension'
- task: AzureCLI@2
name: submit_azureml_job_task
displayName: Submit AzureML Job Task
inputs:
azureSubscription: $(service-connection)
workingDirectory: 'cli/jobs/pipelines-with-components/nyc_taxi_data_regression'
scriptLocation: inlineScript
scriptType: bash
inlineScript: |
# submit component job and get the run name
job_name=$(az ml job create --file single-job-pipeline.yml -g $(resource-group) -w $(workspace) --query name --output tsv)
# Set output variable for next task
echo "##vso[task.setvariable variable=JOB_NAME;isOutput=true;]$job_name"
Steg 6: Vänta tills Azure Mašinsko učenje jobbet har slutförts
I steg 5 lade du till ett jobb för att skicka ett Azure Mašinsko učenje-jobb. I det här steget lägger du till ett annat jobb som väntar på att Azure-Mašinsko učenje jobbet ska slutföras.
Om du använder en Azure Resource Manager-tjänstanslutning kan du använda tillägget "Mašinsko učenje". Du kan söka i det här tillägget på Marketplace för Azure DevOps-tillägg eller gå direkt till tillägget. Installera tillägget "Mašinsko učenje".
Viktigt!
Installera inte tillägget Mašinsko učenje (klassisk) av misstag. Det är ett äldre tillägg som inte har samma funktioner.
Lägg till ett serverjobb i fönstret Pipeline-granskning. I stegdelen av jobbet väljer du Visa assistent och söker efter AzureML. Välj uppgiften Vänta i AzureML-jobb och fyll i informationen för jobbet.
Uppgiften har fyra indata: Service Connection
, Azure Resource Group Name
AzureML Workspace Name
och AzureML Job Name
. Fyll i dessa indata. Yaml-resultatet för dessa steg liknar följande exempel:
Kommentar
- Azure Mašinsko učenje jobbvänteaktivitet körs på ett serverjobb, som inte använder dyra agentpoolresurser och inte kräver några ytterligare avgifter. Serverjobb (anges av
pool: server
) körs på samma dator som din pipeline. Mer information finns i Serverjobb. - En Azure-Mašinsko učenje jobbvänteaktivitet kan bara vänta på ett jobb. Du måste konfigurera en separat uppgift för varje jobb som du vill vänta på.
- Azure Mašinsko učenje jobbvänteaktivitet kan vänta i högst 2 dagar. Det här är en hård gräns som anges av Azure DevOps Pipelines.
- job: WaitForAzureMLJobCompletion
displayName: Wait for AzureML Job Completion
pool: server
timeoutInMinutes: 0
dependsOn: SubmitAzureMLJob
variables:
# We are saving the name of azureMl job submitted in previous step to a variable and it will be used as an inut to the AzureML Job Wait task
azureml_job_name_from_submit_job: $[ dependencies.SubmitAzureMLJob.outputs['submit_azureml_job_task.JOB_NAME'] ]
steps:
- task: AzureMLJobWaitTask@1
inputs:
serviceConnection: $(service-connection)
resourceGroupName: $(resource-group)
azureMLWorkspaceName: $(workspace)
azureMLJobName: $(azureml_job_name_from_submit_job)
Steg 7: Skicka pipeline och verifiera pipelinekörningen
Välj Spara och kör. Pipelinen väntar tills Azure Mašinsko učenje-jobbet har slutförts och avslutar aktiviteten under WaitForJobCompletion
med samma status som Azure Mašinsko učenje-jobbet. Till exempel: Azure Mašinsko učenje-jobb Succeeded
== Azure DevOps-uppgift under WaitForJobCompletion
jobbet Succeeded
Azure Mašinsko učenje jobb Failed
== Azure DevOps-uppgift under WaitForJobCompletion
jobbet Failed
Azure Mašinsko učenje jobb Cancelled
== Azure DevOps-uppgift under WaitForJobCompletion
jobbCancelled
Dricks
Du kan visa hela Azure Mašinsko učenje-jobbet i Azure Mašinsko učenje Studio.
Rensa resurser
Om du inte kommer att fortsätta att använda din pipeline tar du bort ditt Azure DevOps-projekt. Ta bort resursgruppen och Azure Mašinsko učenje-instansen i Azure-portalen.