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
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. Informationen zum Erstellen eines Arbeitsbereichs finden Sie unter Verwalten von Azure Machine Learning-Arbeitsbereichen.
Stellen Sie sicher, dass Sie über die folgenden Berechtigungen im Machine Learning-Arbeitsbereich 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 Azure Resource Manager-Bereitstellungen in der Arbeitsbereichsressourcengruppe: Verwenden Sie „Besitzer“-, „Mitwirkender“- oder eine benutzerdefinierte Rolle, die
Microsoft.Resources/deployments/write
in der Ressourcengruppe zulässt, in der der Arbeitsbereich bereitgestellt wird.
- Erstellen oder Verwalten von Batchendpunkten und Batchbereitstellungen: Verwenden Sie die Rolle für Besitzer oder Mitwirkende oder eine benutzerdefinierte Rolle, die
Installieren Sie die folgende Software, um mit Machine Learning zu arbeiten:
Führen Sie den folgenden Befehl aus, um die Azure CLI und die
ml
-Erweiterung für Azure Machine Learning zu installieren:az extension add -n ml
Bereitstellungen der Pipelinekomponenten für Batchendpunkte werden in Version 2.7 der
ml
-Erweiterung für die Azure CLI eingeführt. Verwenden Sie denaz extension update --name ml
-Befehl, um die aktuelle Version abzurufen.
Herstellen einer Verbindung mit Ihrem Arbeitsbereich
Der Arbeitsbereich ist die wichtigste Ressource für maschinelles Lernen. Es bietet einen zentralen Ort für die Arbeit mit allen Artefakten, die Sie bei der Verwendung von Machine Learning erstellen. In diesem Abschnitt stellen Sie eine Verbindung mit dem Arbeitsbereich her, in dem Sie Ihre Bereitstellungsaufgaben durchführen.
Geben Sie im folgenden Befehl die Werte für Ihre Abonnement-ID, Ihren Arbeitsbereich, Ihren Standort und Ihre Ressourcengruppe ein:
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