Azure Pipelines
Eine Option zum Automatisieren von Workflows besteht darin, das in Azure DevOps Services enthaltene Azure Pipelines zu verwenden. Mit Azure Pipelines können Sie Ihren Code automatisch kompilieren, testen und bereitstellen.
In einem Machine Learning-Projekt können Sie Azure Pipelines verwenden, um alle Azure Machine Learning-Arbeitsbereichsressourcen wie den Arbeitsbereich selbst, Datenressourcen, Computecluster oder Aufträge zu erstellen, um Azure Machine Learning-Pipelines auszuführen.
Hinweis
Um Azure Pipelines mit Azure Machine Learning-Pipelines zu verwenden, müssen Sie Azure DevOps mit Ihrem Azure Machine Learning-Arbeitsbereich über eine Dienstverbindung verbinden.
Sie erfahren, wie Sie Azure Pipelines verwenden, um eine Azure Machine Learning-Pipeline auszuführen.
Erstellen einer Azure Pipeline
Azure Pipelines hilft Ihnen, Ihre Arbeit zu automatisieren, indem Sie Schritte ausführen, wenn ein Auslöser auftritt. Um Azure Pipelines zum Automatisieren von Machine Learning-Workloads zu verwenden, lösen Sie eine Azure Machine Learning-Pipeline mit Azure Pipelines aus.
- Auslösen einer Azure-Pipeline. Häufig mit einer Änderung des Repositorys (Commit oder Pull Request).
- Führen Sie die Azure-Pipeline aus, eine Gruppe von Aufträgen, die aus Schritten bestehen.
- Ein Schritt initiiert eine Azure Machine Learning-Pipeline.
- Eine Azure Machine Learning-Pipeline führt Skripte oder Azure Machine Learning-Komponenten aus.
- Ein Skript oder eine Komponente stellt eine Machine Learning-Aufgabe dar.
Um die Azure-Pipeline zu erstellen, definieren Sie die Schritte, die Sie in eine YAML-Datei einschließen möchten. In der YAML-Datei der Azure-Pipeline schließen Sie Folgendes ein:
- Auslöser: Ereignis, das die Pipeline initiiert.
- Stage: Eine Gruppe von Aufträgen, die sich häufig an verschiedenen Entwicklungsumgebungen (Dev/Test/Prod) orientieren.
- Auftrag: Eine Reihe von Schritten, die auf einem Agent ausgeführt werden. Für Machine Learning-Workloads verwenden Sie wahrscheinlich einen von Microsoft gehosteten Ubuntu-Agent.
- Schritt: Ein Skript oder eine Aufgabe, die Sie ausführen möchten. Beispielsweise ein CLI-Befehl, der eine Azure Machine Learning-Pipeline (
az ml job create
) initiiert.
Tipp
Erfahren Sie mehr über wichtige Konzepte, die in Azure Pipelines verwendet werden.
Um eine Azure Machine Learning-Pipeline auszuführen, wenn Änderungen am Azure-Repository vorgenommen werden, können Sie eine YAML-Datei wie folgt verwenden:
trigger:
- main
stages:
- stage: deployDev
displayName: 'Deploy to development environment'
jobs:
- deployment: publishPipeline
displayName: 'Model Training'
pool:
vmImage: 'Ubuntu-18.04'
environment: dev
strategy:
runOnce:
deploy:
steps:
- template: aml-steps.yml
parameters:
serviceconnectionname: 'spn-aml-workspace-dev'
Der Auftrag in der Pipeline verwendet die aml-steps.yml
, um die Schritte, die ausgeführt werden sollen, aufzulisten. Um eine Azure Machine Learning-Pipeline auszuführen, die in pipeline-job.yml
definiert ist, können Sie die CLI (v2) verwenden. Um die Azure Machine Learning-Pipeline als Schritt in der Azure-Pipeline auszuführen, gehen Sie folgendermaßen vor:
- Installieren Sie die Azure Machine Learning-Erweiterung für die CLI.
- Verwenden Sie den Befehl
az ml job create
, um den Pipelineauftrag in Azure Machine Learning auszuführen.
Die Datei „aml-steps.yml
“ zum Installieren sowie zum Starten von Azure Machine Learning-Aufträgen sieht ungefähr so aus:
parameters:
- name: serviceconnectionname
default: ''
steps:
- checkout: self
- script: az extension add -n ml -y
displayName: 'Install Azure ML CLI v2'
- task: AzureCLI@2
inputs:
azureSubscription: ${{ parameters.serviceconnectionname }}
scriptType: bash
scriptLocation: inlineScript
workingDirectory: $(Build.SourcesDirectory)
inlineScript: |
cd src
az ml job create --file aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws
displayName: 'Run Azure Machine Learning Pipeline'
Wie im Beispiel gezeigt, können Sie Parameter in den Pipelinedefinitionen (z. B. serviceconnectionname
) verwenden, um die Wiederverwendbarkeit von YAML-Dateien in anderen Projekten zu verbessern.
Ausführen einer Pipeline mit Azure DevOps
Nachdem Sie die YAML-Dateien erstellt und in Ihrem Azure-Repository gespeichert haben, können Sie Azure DevOps konfigurieren, um die Pipeline auszuführen.
- Navigieren Sie in Azure DevOps zur Registerkarte Pipelines, und wählen Sie Pipelines aus.
- Erstellen Sie eine Neue Pipeline.
- Wählen Sie Azure Repos Git als Speicherort Ihres Codes aus.
- Wählen Sie das Repository aus, das Ihren Code enthält.
- Wählen Sie die Option Vorhandene Azure Pipelines und dann die YAML-Datei aus.
- Wählen Sie den Pfad aus, der auf die YAML-Datei verweist, die Sie für die Azure Pipeline erstellt haben.
- Nachdem Sie die Pipeline überprüft haben, können Sie speichern und ausführen.
Die Pipeline wird durch einen Commit an den Branch Main ausgelöst. Wenn Sie die Pipeline konfigurieren, committet Azure Pipelines eine Änderung am Branch Main. Hierdurch wird die erstmalige Ausführung der Pipeline ausgelöst. Nach Abschluss der Einrichtung können Sie die Pipeline durch Pushen von Commits aus Visual Studio Code oder Azure Repos in das Repository auslösen.
Wenn Sie einen Auftrag auswählen, können Sie seinen Prozess anzeigen. Jeder Schritt in einem Auftrag wird im Navigationsbereich auf der linken Seite angezeigt. Die Übersicht zeigt an, welche Schritte erfolgreich ausgeführt wurden und welche fehlerhaft sind. Alle potenziellen Fehlermeldungen werden in der Befehlszeilenschnittstelle angezeigt, wenn Sie diesen Schritt auswählen. Durch Überprüfen der Ausgabe können Sie den Fehler beheben.
Wenn eine Aufgabe eine Azure Machine Learning-Pipeline auslöst, die ausgeführt werden soll, können Sie die Pipeline auch im Azure Machine Learning-Arbeitsbereich überprüfen, um Metriken oder Fehler anzuzeigen, die für Sie interessant sein könnten.