Bereitstellen vorhandener Pipelineaufträge für Batchendpunkte

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

Batchendpunkte ermöglichen ihnen das Bereitstellen von Pipelinekomponenten und bieten eine bequeme Möglichkeit, Pipelines in Azure Machine Learning zu operationalisieren. Batchendpunkte akzeptieren Pipelinekomponenten für die Bereitstellung. Wenn Sie jedoch bereits über einen Pipelineauftrag verfügen, der erfolgreich ausgeführt wird, kann Azure Machine Learning diesen Auftrag als Eingabe für Ihren Batchendpunkt akzeptieren und die Pipelinekomponente automatisch für Sie erstellen. In diesem Artikel erfahren Sie, wie Sie Ihren vorhandenen Pipelineauftrag als Eingabe für die Batchbereitstellung verwenden.

Sie lernen Folgendes:

  • Ausführen und Erstellen des Pipelineauftrags, den Sie bereitstellen wollen
  • Erstellen einer Batchbereitstellung aus dem vorhandenen Auftrag
  • Testen der Bereitstellung

Über dieses Beispiel

In diesem Beispiel werden wir eine Pipeline bereitstellen, die aus einem einfachen Befehlsauftrag besteht, der „Hallo Welt!“ ausgibt. Anstatt die Pipelinekomponente vor der Bereitstellung zu registrieren, geben wir einen vorhandenen Pipelineauftrag an, der für die Bereitstellung verwendet werden soll. Azure Machine Learning erstellt dann die Pipelinekomponente automatisch und stellt sie als Pipelinekomponente für Batchendpunktbereitstellung bereit.

Das Beispiel in diesem Artikel basiert auf Codebeispielen, die im Repository azureml-examples enthalten sind. Um die Befehle lokal auszuführen, ohne YAML und andere Dateien kopieren/einfügen zu müssen, klonen Sie zunächst das Repository, und ändern Sie dann die Verzeichnisse zum Ordner:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Die Dateien für dieses Beispiel befinden sich in:

cd endpoints/batch/deploy-pipelines/hello-batch

Voraussetzungen

Stellen Sie vor dem Ausführen der Schritte in diesem Artikel sicher, dass Sie über die folgenden erforderlichen Komponenten verfügen:

  • Ein Azure-Abonnement. Wenn Sie nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Probieren Sie die kostenlose oder kostenpflichtige Version von Azure Machine Learning aus.

  • Ein Azure Machine Learning-Arbeitsbereich. Wenn Sie keinen haben, führen Sie die Schritte im Artikel Verwalten von Azure Machine Learning-Arbeitsbereichen aus, um einen Arbeitsbereich zu erstellen.

  • Stellen Sie sicher, dass Sie im Arbeitsbereich über die folgenden Berechtigungen verfügen:

    • Erstellen oder Verwalten von Batchendpunkten und Batchbereitstellungen: Verwenden Sie die Rolle für Besitzer oder Mitwirkende oder eine benutzerdefinierte Rolle, die Microsoft.MachineLearningServices/workspaces/batchEndpoints/* zulässt.

    • Erstellen von ARM-Bereitstellungen in der Arbeitsbereichsressourcengruppe: Verwenden Sie die Rolle für Besitzer oder Mitwirkende oder eine benutzerdefinierte Rolle, die Microsoft.Resources/deployments/write in der Ressourcengruppe zulässt, in der der Arbeitsbereich bereitgestellt wird.

  • Für die Arbeit mit Azure Machine Learning müssen Sie die folgende Software installieren:

    Die Azure CLI und die ml-Erweiterung für Azure Machine Learning.

    az extension add -n ml
    

    Hinweis

    Bereitstellungen der Pipelinekomponenten für Batchendpunkte wurden in Version 2.7 der Erweiterung ml für die Azure CLI eingeführt. Verwenden Sie az extension update --name ml, um die letzte Version davon zu erhalten.

Herstellen einer Verbindung mit Ihrem Arbeitsbereich

Der Arbeitsbereich ist die Ressource der obersten Ebene für Azure Machine Learning und ein zentraler Ort für die Arbeit mit allen Artefakten, die Sie während der Nutzung von Azure Machine Learning erstellen. In diesem Abschnitt stellen wir eine Verbindung mit dem Arbeitsbereich her, in dem Sie die Bereitstellung vornehmen werden.

Übergeben Sie die Werte für Ihre Abonnement-ID, Ihren Arbeitsbereich, Ihren Standort und Ihre Ressourcengruppe im folgenden Code:

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Ausführen des Pipelineauftrags, den Sie bereitstellen wollen

In diesem Abschnitt beginnen wir, indem wir einen Pipelineauftrag ausführen:

Die folgende pipeline-job.yml-Datei enthält die Konfiguration für den Pipelineauftrag:

pipeline-job.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline

experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.

compute: batch-cluster
component: hello-component/hello.yml

Erstellen Sie den Pipelineauftrag:

JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)

Erstellen eines Batchendpunkts

Bevor wir den Pipelineauftrag bereitstellen, müssen wir einen Batchendpunkt bereitstellen, um die Bereitstellung zu hosten.

  1. Geben Sie einen Namen für den Endpunkt an. Der Name eines Batchendpunkts muss in jeder Region eindeutig sein, da er zum Konstruieren des Aufruf-URI verwendet wird. Um die Eindeutigkeit sicherzustellen, fügen Sie alle nachstehenden Zeichen an den im folgenden Code angegebenen Namen an.

    ENDPOINT_NAME="hello-batch"
    
  2. Konfigurieren des Endpunkts:

    Die endpoint.yml-Datei enthält die Konfiguration des Endpunkts.

    endpoint.yml

    $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
    name: hello-batch
    description: A hello world endpoint for component deployments.
    auth_mode: aad_token
    
  3. Erstellen des Endpunkts:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. Fragen Sie den Endpunkt-URI ab:

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

Bereitstellen des Pipelineauftrags

Um die Pipelinekomponente bereitzustellen, müssen wir eine Batchbereitstellung aus dem vorhandenen Auftrag erstellen.

  1. Wir müssen Azure Machine Learning den Namen des Auftrags mitteilen, den wir bereitstellen wollen. In unserem Fall wird dieser Auftrag in der folgenden Variablen angegeben:

    echo $JOB_NAME
    
  2. Konfigurieren Sie die Bereitstellung.

    Die deployment-from-job.yml-Datei enthält die Konfiguration der Bereitstellung. Beachten Sie, wie wir den Schlüssel job_definition anstelle von component verwenden, um anzugeben, dass diese Bereitstellung aus einem Pipelineauftrag erstellt wird:

    deployment-from-job.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-from-job
    endpoint_name: hello-pipeline-batch
    type: pipeline
    job_definition: azureml:job_name_placeholder
    settings:
        continue_on_step_failure: false
        default_compute: batch-cluster
    

    Tipp

    Bei dieser Konfiguration wird davon ausgegangen, dass Sie über einen Computecluster mit dem Namen batch-cluster verfügen. Sie können diesen Wert durch den Namen Ihres Clusters ersetzen.

  3. Erstellen Sie die Bereitstellung:

    Führen Sie den folgenden Code aus, um eine Batchbereitstellung unter dem Batchendpunkt zu erstellen und diese als Standardbereitstellung festzulegen.

    az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
    

    Tipp

    Beachten Sie die Verwendung von --set job_definition=azureml:$JOB_NAME. Da Auftragsnamen eindeutig sind, wird der Befehl --set hier verwendet, um den Namen des Auftrags zu ändern, wenn Sie ihn in Ihrem Arbeitsbereich ausführen.

  4. Ihre Bereitstellung ist einsatzbereit.

Testen der Bereitstellung

Nachdem die Bereitstellung erstellt wurde, kann sie Aufträge empfangen. Sie können die Standardbereitstellung folgendermaßen aufrufen:

JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)

Sie können den Fortschritt der Show überwachen und die Protokolle streamen, wie im Folgenden beschrieben:

az ml job stream -n $JOB_NAME

Bereinigen von Ressourcen

Löschen Sie dann die zugehörigen Ressourcen aus dem Arbeitsbereich:

Führen Sie den folgenden Code aus, um den Batchendpunkt und die zugrundeliegende Bereitstellung zu löschen. --yes wird verwendet, um den Löschvorgang zu bestätigen.

az ml batch-endpoint delete -n $ENDPOINT_NAME --yes

Nächste Schritte