Bereitstellen von Pipelines mit Batchendpunkten
GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)
Python SDK azure-ai-ml v2 (aktuell)
Sie können Pipelinekomponenten unter einem Batchendpunkt bereitstellen, was eine bequeme Möglichkeit darstellt, sie in Azure Machine Learning zu operationalisieren. In diesem Artikel erfahren Sie, wie Sie eine Batchbereitstellung erstellen, die eine einfache Pipeline enthält. Sie lernen Folgendes:
- Erstellen und Registrieren einer Pipelinekomponente
- Erstellen eines Batchendpunkts und Bereitstellen einer Pipelinekomponente
- Testen der Bereitstellung
Über dieses Beispiel
In diesem Beispiel werden wir eine Pipelinekomponente bereitstellen, die aus einem einfachen Befehlsauftrag besteht, der „Hallo Welt“ ausgibt. Diese Komponente erfordert keine Eingaben oder Ausgaben und ist das einfachste Szenario einer Pipelinebereitstellung.
Das Beispiel in diesem Artikel basiert auf Codebeispielen, die im Repository azureml-examples enthalten sind. Wenn Sie die Befehle lokal ausführen möchten, ohne YAML und andere Dateien kopieren oder einfügen zu müssen, verwenden Sie die folgenden Befehle, um das Repository zu klonen und zum Ordner für Ihre Programmiersprache zu wechseln:
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
Verfolgen in Jupyter-Notebooks
Sie können der Python SDK-Version dieses Beispiels folgen, indem Sie das Notebook sdk-deploy-and-test.ipynb im geklonten Repository öffnen.
Voraussetzungen
Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Ein Azure Machine Learning-Arbeitsbereich. Informationen zum Erstellen eines Arbeitsbereichs finden Sie unter Verwalten von Azure Machine Learning-Arbeitsbereichen.
Die folgenden Berechtigungen im Azure Machine Learning-Arbeitsbereich:
- Zum Erstellen oder Verwalten von Batchendpunkten und Bereitstellungen: Verwenden Sie die Rolle „Besitzer“ oder „Mitwirkender“ oder eine benutzerdefinierte Rolle, der die
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
-Berechtigungen zugewiesen wurden. - Zum Erstellen von Azure Resource Manager-Bereitstellungen in der Arbeitsbereichsressourcengruppe: Verwenden Sie die Rolle „Besitzer“ oder „Mitwirkender“ oder eine benutzerdefinierte Rolle, der die
Microsoft.Resources/deployments/write
-Berechtigung in der Ressourcengruppe zugewiesen wurde, in der der Arbeitsbereich bereitgestellt wird.
- Zum Erstellen oder Verwalten von Batchendpunkten und Bereitstellungen: Verwenden Sie die Rolle „Besitzer“ oder „Mitwirkender“ oder eine benutzerdefinierte Rolle, der die
Azure Machine Learning-CLI oder Azure Machine Learning-SDK für Python:
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 Ressource der obersten Ebene für Azure Machine Learning. Er bietet einen zentralen Ort für die Arbeit mit allen Artefakten, die Sie bei der Verwendung von Azure 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 Ihre Abonnement-ID, den Arbeitsbereichsnamen, den Ressourcengruppennamen und den Standort ein:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Erstellen der Pipelinekomponente
Batchendpunkte können entweder Modelle oder Pipelinekomponenten bereitstellen. Pipelinekomponenten sind wiederverwendbar, und Sie können Ihre MLOps-Praxis optimieren, indem Sie freigegebene Registrierungen verwenden, um diese Komponenten von einem Arbeitsbereich in einen anderen zu verschieben.
Die Pipelinekomponente in diesem Beispiel enthält einen einzigen Schritt, der nur eine „Hallo Welt“-Nachricht in die Protokolle ausgibt. Sie erfordert keine Eingaben oder Ausgaben.
Die folgende hello-component/hello.yml
-Datei enthält die Konfiguration für den Pipelinekomponente:
hello-component/hello.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
main_job:
type: command
component:
code: src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
python hello.py
Registrieren Sie die Komponente:
az ml component create -f hello-component/hello.yml
Erstellen eines Batchendpunkts
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 der Pipelinekomponente
Zum Bereitstellen der Pipelinekomponente müssen wir eine Batchbereitstellung erstellen. Eine Bereitstellung ist ein Satz erforderlicher Ressourcen für das Hosting der Ressource, welche die eigentliche Arbeit leistet.
Erstellen Sie einen Computecluster. Batchendpunkte und Batchbereitstellungen werden auf Computeclustern ausgeführt. Sie können auf jedem Azure Machine Learning-Computecluster ausgeführt werden, der im Arbeitsbereich bereits vorhanden ist. Daher können mehrere Batchbereitstellungen dieselbe Computeinfrastruktur gemeinsam nutzen. In diesem Beispiel arbeiten wir auf einem Azure Machine Learning-Computecluster namens
batch-cluster
. Lassen Sie uns überprüfen, ob die Computeinfrastruktur im Arbeitsbereich vorhanden ist. Wenn nicht, werden wir sie erstellen.az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
Konfigurieren der Bereitstellung:
Die
deployment.yml
-Datei enthält die Konfiguration der Bereitstellung. Sie können das vollständige YAML-Schema des Batchendpunkts auf zusätzliche Eigenschaften überprüfen.deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-dpl endpoint_name: hello-pipeline-batch type: pipeline component: azureml:hello_batch@latest settings: default_compute: batch-cluster
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 -f deployment.yml --set-default
Tipp
Beachten Sie die Verwendung des
--set-default
-Flags, um anzugeben, dass diese neue Bereitstellung jetzt die Standardeinstellung ist.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)
Tipp
In diesem Beispiel verfügt die Pipeline über keine Eingaben oder Ausgaben. Wenn die Pipelinekomponente jedoch welche benötigt, können diese zum Aufrufzeitpunkt angegeben werden. Informationen dazu, wie Sie Ein- und Ausgaben angeben, finden Sie unter Erstellen von Aufträgen und Eingabedaten für Batchendpunkte oder im Tutorial Bereitstellen einer Pipeline zum Durchführen der Batchbewertung mit Vorverarbeitung (Vorschau).
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
(Optional) Löschen Sie den Compute, es sei denn, Sie möchten Ihren Computecluster mit späteren Bereitstellungen wiederverwenden.
az ml compute delete -n batch-cluster
Nächste Schritte
- Bereitstellen einer Trainingspipeline mit Batchendpunkten
- Bereitstellen einer Pipeline zum Durchführen der Batchbewertung mit Vorverarbeitung
- Erstellen von Batchendpunkten auf Basis von Pipelineaufträgen
- Erstellen von Aufträgen und Eingabedaten für Batchendpunkte
- Problembehandlung für Batchendpunkte