Azure Pipelines

Abgeschlossen

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.

Diagram of the hierarchy of pipelines.

  1. Auslösen einer Azure-Pipeline. Häufig mit einer Änderung des Repositorys (Commit oder Pull Request).
  2. Führen Sie die Azure-Pipeline aus, eine Gruppe von Aufträgen, die aus Schritten bestehen.
  3. Ein Schritt initiiert eine Azure Machine Learning-Pipeline.
  4. Eine Azure Machine Learning-Pipeline führt Skripte oder Azure Machine Learning-Komponenten aus.
  5. 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.

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:

  1. Installieren Sie die Azure Machine Learning-Erweiterung für die CLI.
  2. 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.

Screenshot of configuration of pipeline in Azure DevOps.

  1. Navigieren Sie in Azure DevOps zur Registerkarte Pipelines, und wählen Sie Pipelines aus.
  2. Erstellen Sie eine Neue Pipeline.
  3. Wählen Sie Azure Repos Git als Speicherort Ihres Codes aus.
  4. Wählen Sie das Repository aus, das Ihren Code enthält.
  5. Wählen Sie die Option Vorhandene Azure Pipelines und dann die YAML-Datei aus.
  6. Wählen Sie den Pfad aus, der auf die YAML-Datei verweist, die Sie für die Azure Pipeline erstellt haben.
  7. 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.

Screenshot of failed job in Azure Pipelines.

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.