Azure Machine Learning-Pipelines

Abgeschlossen

Als Datenwissenschaftler arbeiten Sie hauptsächlich mit Azure Machine Learning, um Modelle zu trainieren und zu verwalten. Nach dem Experimentieren sollten Sie Ihre Arbeit in Produktions-Python-Code konvertieren, um die Automatisierung mit Azure (DevOps) Pipelines oder GitHub Actions zu ermöglichen.

Experimentieren in Azure Machine Learning

Azure Machine Learning bietet eine Reihe von Features, die Ihnen helfen, Ihre Arbeit zu organisieren. Beispielsweise können Sie mit Azure Machine Learning Folgendes ausführen:

  • Registrieren Sie Datasets, um Daten, die in einem Data Lake gespeichert sind, einfach wiederzuverwenden.
  • Trainieren Sie je nach Ihren Anforderungen ein Modell für Remote-Compute-Instanzen oder -cluster.
  • Verfolgen Sie alle ausgeführten Skripts mit Experimenten, um Ihre Arbeit einfach zu vergleichen.
  • Registrieren Sie trainierte Modelle, und stellen Sie ein Modell für den Batch- oder Echtzeitverbrauch bereit.

Der Großteil Ihrer Arbeit als Datenwissenschaftler besteht aus Experimenten: Testen verschiedener Konfigurationen, um ein Modell zu trainieren, und Leistungsmetriken überprüfen, um zu entscheiden, welches Modell für die Produktion bereitgestellt werden soll.

Angenommen, Sie experimentieren in einem Jupyter-Notizbuch (.ipynb-Dateien) und möchten das Experiment in Produktions-Python-Code konvertieren, dann müssen Sie:

  • Den gesamten unnötigen Code entfernen.
  • Den Code in Funktionen umgestalten.
  • Verwandte Funktionen in Python-Skripts (.py Dateien) kombinieren.
  • Komponententests für jedes Python-Skript erstellen.
  • Eine Pipeline erstellen, um Skripts in einem Workflow zu gruppieren, der automatisiert werden kann.

Nachdem Ihr Code für die Produktion bereit ist, können Sie die Ausführung von Skripts mit Azure Machine Learning-Pipelines automatisieren.

Azure Machine Learning-Pipelines erstellen

Das Konzept einer Pipeline findet sich in verschiedenen Tools wieder, die häufig eine Möglichkeit zum Gruppieren von Aufgaben in einer bestimmten Reihenfolge bieten. Der Hauptvorteil einer Pipeline besteht darin, dass Sie sie planen oder auslösen können, um sie auszuführen.

Eine Azure Machine Learning-Pipeline wird im Azure Machine Learning-Arbeitsbereich erstellt. Zum Erstellen einer Pipeline können Sie die Schritte mit Python-Skripts definieren.

Optional können Sie eine Pipeline mit Azure Machine Learning-Komponenten erstellen. Wenn Sie eine Komponente erstellen, wird das Skript mit Metadaten, z. B. der erforderlichen Umgebung, im Azure Machine Learning-Arbeitsbereich gespeichert. Komponenten können von jedem innerhalb desselben Arbeitsbereichs freigegeben und verwendet werden, wodurch es anderen erleichtert wird, schnell neue Pipelines zu erstellen, die auf Ihrer Arbeit aufbauen.

Um eine Pipeline zu erstellen, die für die Automatisierung verwendet werden kann, empfiehlt es sich, einen Pipelineauftrag in YAML zu definieren, der mit einem CLI-Befehl (v2) ausgelöst werden kann.

Die YAML-Datei, die die Pipeline definiert, muss die folgenden Informationen enthalten:

  • Was soll ausgeführt werden: Die als Python-Skripts oder -Komponenten definierten Schritte.
  • Wie soll die Ausführung erfolgen: Beliebige Ein- oder Ausgaben, die die Schritte erwarten können.
  • Wo soll es ausgeführt werden: Die Berechnung, die zum Ausführen des Codes erforderlich ist (häufig ein Azure Machine Learning-Computecluster).

Beispielsweise kann eine Pipeline definiert werden, die Rohdaten als Eingabe verwendet, diese transformiert und ein Modell in einer pipeline-job.yml-Datei trainiert:

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc-taxi-pipeline-example
experiment_name: nyc-taxi-pipeline-example
jobs:

  transform-job:
    type: command
      raw_data: 
          type: uri_folder 
          path: ./data
    outputs:
      transformed_data:
        mode: rw_mount
    code: src/transform
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python transform.py 
      --raw_data ${{inputs.raw_data}} 
      --transformed_data ${{outputs.transformed_data}}
  
  train-job:
    type: command
    inputs:
      training_data: ${{parent.jobs.transform-job.outputs.transformed_data}}
    outputs:
      model_output: 
        mode: rw_mount
      test_data: 
        mode: rw_mount
    code: src/train
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python train.py 
      --training_data ${{inputs.training_data}} 
      --test_data ${{outputs.test_data}} 
      --model_output ${{outputs.model_output}}

Um die Pipeline in Azure Machine Learning auszuführen, verwenden Sie den folgenden CLI-Befehl:

az ml job create --file pipeline-job.yml

Nachdem die Pipeline die Ausführung beendet hat, können Sie die Pipeline und die ausgeführten Schritte im Azure Machine Learning-Arbeitsbereich überprüfen.

Wenn Sie Ihre Workloads für Machine Learning in Python-Skripts und Gruppenaufgaben in einer Pipeline konvertieren, ist Ihr Modell für die Produktion bereit. Durch das Definieren der Pipeline in einer YAML-Datei können Sie Trainings und erneute Trainings automatisieren, indem Sie die Pipelineausführung mit der CLI (v2) auslösen. Sie können einen CLI-Befehl, der auf die Pipeline-YAML-Datei verweist, von Azure (DevOps) Pipelines oder GitHub Actions ausführen.