Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
U kunt een Azure DevOps-pijplijn gebruiken om de levenscyclus van machine learning te automatiseren. Enkele van de bewerkingen die u kunt automatiseren zijn:
- Gegevensvoorbereiding (extraheren, transformeren, laden).
- Machine learning-modellen trainen met uitschalen op aanvraag en omhoog schalen.
- Implementatie van machine learning-modellen als openbare of persoonlijke webservices.
- Geïmplementeerde machine learning-modellen bewaken (bijvoorbeeld voor prestaties of analyse van gegevensdrift).
In dit artikel wordt beschreven hoe u een Azure-pijplijn maakt waarmee een machine learning-model wordt gebouwd en geïmplementeerd op Azure Machine Learning.
In deze zelfstudie wordt gebruikgemaakt van Azure Machine Learning Python SDK v2 en Azure CLI ML-extensie v2.
Voorwaarden
- Voltooi de zelfstudie 'Resources maken om aan de slag te gaan' om:
- Een werkruimte maken.
- Maak een cloud-gebaseerd rekencluster dat u kunt gebruiken voor het trainen van uw model.
- Python 3.10 of hoger geïnstalleerd voor het lokaal uitvoeren van Azure ML SDK v2-scripts.
- Installeer de Azure Machine Learning-extensie voor Azure-pipelines. U kunt deze extensie installeren via de Visual Studio marketplace.
Stap 1: De code ophalen
Fork de volgende opslagplaats uit GitHub:
https://github.com/azure/azureml-examples
Stap 2: Een project maken
Meld u aan bij Azure. Zoek en selecteer Azure DevOps organisaties. Selecteer Mijn organisaties weergeven. Selecteer de organisatie die u wilt gebruiken.
Maak binnen uw geselecteerde organisatie een project. Als u geen projecten in uw organisatie hebt, ziet u het scherm Een project maken om aan de slag te gaan . Selecteer anders de knop Nieuw Project in de rechterbovenhoek van het dashboard.
Stap 3: Een serviceverbinding maken
U kunt een bestaande serviceverbinding gebruiken.
U hebt een Azure Resource Manager-verbinding nodig om te verifiëren met de Azure-portal.
Selecteer in Azure DevOps Project-instellingen en selecteer vervolgens Service connections.
Selecteer Serviceverbinding maken, selecteer Azure Resource Manager en selecteer vervolgens Volgende.
Gebruik de standaardwaarden voor identiteitstype en referentie.
Maak uw serviceverbinding. Stel het bereikniveau van uw voorkeur, abonnement, resourcegroep en verbindingsnaam in.
Stap 4: Een pijplijn maken
Ga naar Pijplijnen en selecteer Pijplijn maken.
Selecteer GitHub als de locatie van de broncode.
Mogelijk wordt u omgeleid naar GitHub om u aan te melden. Als u dat bent, voert u uw GitHub referenties in.
Wanneer u de lijst met opslagplaatsen ziet, selecteert u de opslagplaats.
Mogelijk wordt u omgeleid naar GitHub om de Azure-pipelines-app te installeren. Als u dat wel bent, selecteert u Goedkeuren en installeren.
Selecteer de Starter-pijplijn. U werkt de starterspijplijnsjabloon bij.
Stap 5: een YAML-pijplijn maken om de Azure Machine Learning taak te verzenden
Verwijder de starterspijplijn en vervang deze door de volgende YAML-code. In deze pijplijn gaat u als volgt te werk:
- Gebruik de Python-versietaak om Python 3.10 in te stellen en de SDK-vereisten te installeren.
- Gebruik de Bash-taak om bash-scripts uit te voeren voor de Azure Machine Learning SDK en CLI.
- Gebruik de Azure CLI taak om een Azure Machine Learning taak te verzenden.
Selecteer een van de volgende tabbladen, afhankelijk van of u een Azure Resource Manager serviceverbinding of een algemene serviceverbinding gebruikt. Vervang in de YAML-pijplijn de waarden van variabelen door waarden die overeenkomen met uw resources.
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.10
inputs:
versionSpec: '>=3.10'
- 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"
Stap 6: Wacht tot de Azure Machine Learning taak is voltooid
In stap 5 hebt u een taak toegevoegd om een Azure Machine Learning taak in te dienen. In deze stap voegt u een andere taak toe die wacht totdat de Azure Machine Learning taak is voltooid.
Belangrijk
Beide wachtmechanismen in deze stap (de AzureMLJobWaitTask@1 taak op het tabblad Azure Resource Manager en de InvokeRESTAPI@1 webhookregistratie op het tabblad Algemeen) zijn afhankelijk van Azure Machine Learning het verzenden van een RunTerminated melding terug naar Azure DevOps wanneer de taak is voltooid. Dit meldingspad wordt momenteel onderzocht en kan niet worden voltooid zoals verwacht, waardoor de WaitFor*-servertaak een time-out krijgt in plaats van de status van de Azure Machine Learning taak weer te geven. Als u dit gedrag tegenkomt, vraag de taakstatus van een agenttaak op met behulp van az ml job show --query status totdat er een eindstatus (Completed, Failed of Canceled) wordt geretourneerd en beëindig de taak met een overeenkomende status.
Als u een Resource Manager-serviceverbinding gebruikt, kunt u de Machine Learning-extensie gebruiken. U kunt naar deze extensie zoeken op de Azure DevOps extensions Marketplace of rechtstreeks naar de pagina extension gaan. Installeer de Machine Learning-extensie.
Belangrijk
Installeer de extensie Machine Learning (klassiek) niet. Het is een oudere extensie die niet dezelfde functionaliteit biedt.
Voeg in het venster Pijplijnbeoordeling een servertaak toe. Selecteer in het stappengedeelte van de taak Assistent weergeven en zoek vervolgens naar AzureML. Selecteer de taak AzureML Job Wait en geef de informatie voor de job op.
De taak heeft vier invoerwaarden: Service Connection, Azure Resource Group Name, AzureML Workspace Name en AzureML Job Name. Geef deze invoer op. De resulterende YAML voor deze stappen is vergelijkbaar met het volgende voorbeeld:
Opmerking
- De Azure Machine Learning taakwachttaak wordt uitgevoerd op een servertaak, die geen dure agentpoolbronnen gebruikt en geen extra kosten vereist. Servertaken (aangegeven door
pool: server) worden uitgevoerd op dezelfde computer als uw pijplijn. Zie Servertaken voor meer informatie. - Eén Azure Machine Learning wachttaak kan slechts op één taak wachten. U moet een afzonderlijke taak instellen voor elke taak waarvoor u wilt wachten.
- De Azure Machine Learning taakwachttaak kan maximaal twee dagen wachten. Deze limiet is een vaste limiet die is ingesteld door Azure DevOps pijplijnen.
- job: WaitForAzureMLJobCompletion
displayName: Wait for AzureML Job Completion
pool: server
timeoutInMinutes: 0
dependsOn: SubmitAzureMLJob
variables:
# Save the name of the azureMl job submitted in the previous step to a variable. It will be used as an input 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)
Stap 7: De pijplijn verzenden en de pijplijnuitvoering verifiëren
Selecteer Opslaan en uitvoeren. Wanneer het wachtmechanisme in stap 6 werkt zoals ontworpen, wacht de pijplijn totdat de Azure Machine Learning taak is voltooid en eindigt de taak onder WaitForJobCompletion met dezelfde status als de Azure Machine Learning taak. Bijvoorbeeld:
Azure Machine Learning taak
Succeeded== Azure DevOps Taak onderWaitForJobCompletiontaakSucceededAzure Machine Learning taak
Failed== Azure DevOps Taak onderWaitForJobCompletiontaakFailedAzure Machine Learning taak
Cancelled== Azure DevOps Taak onderWaitForJobCompletiontaakCancelled
Opmerking
Vanwege het probleem dat in stap 6 is aangeroepen, kan er een time-out optreden voor de WaitFor* taak in plaats van de status van de Azure Machine Learning taak. Gebruik Azure Machine Learning Studio om het werkelijke taakresultaat te bevestigen totdat het meldingspad is hersteld.
Tip
U kunt de volledige Azure Machine Learning taak bekijken in Azure Machine Learning Studio.
Resources opschonen
Als u niet van plan bent om uw pijplijn te blijven gebruiken, verwijdert u uw Azure DevOps project. Verwijder in de Azure-portal uw resourcegroep en Azure Machine Learning instantie.