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 Sieaz 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.
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"
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
Erstellen des Endpunkts:
az ml batch-endpoint create --name $ENDPOINT_NAME -f endpoint.yml
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.
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
Konfigurieren Sie die Bereitstellung.
Die
deployment-from-job.yml
-Datei enthält die Konfiguration der Bereitstellung. Beachten Sie, wie wir den Schlüsseljob_definition
anstelle voncomponent
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.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.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