Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 Machine Learning.
I den här självstudien används Azure Machine Learning 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 Machine Learning-tillägg 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 Portal.
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 Machine Learning-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 Machine Learning SDK och CLI.
- Använd Azure CLI-uppgiften för att skicka ett Azure Machine Learning-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 Machine Learning-jobbet har slutförts
I steg 5 lade du till ett jobb för att skicka ett Azure Machine Learning-jobb. I det här steget lägger du till ett annat jobb som väntar på att Azure Machine Learning-jobbet ska slutföras.
Om du använder en Azure Resource Manager-tjänstanslutning kan du använda tillägget "Machine Learning". 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 "Machine Learning".
Viktigt!
Installera inte Machine Learning-tillägget (klassiskt) 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 NameAzureML Workspace Name och AzureML Job Name. Fyll i dessa indata. Yaml-resultatet för dessa steg liknar följande exempel:
Kommentar
- Azure Machine Learning-jobbets vä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 Machine Learning-jobbvänteuppgift 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 Machine Learning-jobbets väntande uppgift 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 Machine Learning-jobbet har slutförts och avslutar uppgiften under WaitForJobCompletion med samma status som Azure Machine Learning-jobbet. Till exempel: Azure Machine Learning-jobb Succeeded == Azure DevOps-uppgift under WaitForJobCompletion jobbet Succeeded Azure Machine Learning-jobb Failed == Azure DevOps-uppgift under WaitForJobCompletion jobbet Failed Azure Machine Learning-jobb Cancelled == Azure DevOps-uppgift under WaitForJobCompletion jobb Cancelled
Dricks
Du kan visa hela Azure Machine Learning-jobbet i Azure Machine Learning-studio.
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.