Freigeben von Modellen, Komponenten und Umgebungen für Arbeitsbereiche mit Registrierungen

Mit Azure Machine Learning-Registrierungen können Sie in Ihrer Organisation über Arbeitsbereiche hinweg zusammenarbeiten. Mithilfe von Registrierungen können Sie Modelle, Komponenten und Umgebungen freigeben.

Es gibt zwei Szenarien, in denen Sie dieselbe Gruppe von Modellen, Komponenten und Umgebungen in mehreren Arbeitsbereichen verwenden möchten:

  • Arbeitsbereichsübergreifende MLOps: Sie trainieren ein Modell in einem dev-Arbeitsbereich und müssen es in test- und prod-Arbeitsbereichen bereitstellen. In diesem Fall möchten Sie zwischen Endpunkten test- oder prod-Arbeitsbereichen, auf denen das Modell bereitgestellt wurde, und dem Trainingsauftrag, den Metriken, dem Code, den Daten und der Umgebung, die zum Trainieren des Modells im dev-Arbeitsbereich verwendet wurde, die End-to-End-Datenherkunft einsehen können.
  • Freigeben und Wiederverwenden von Modellen und Pipelines in verschiedenen Teams: Durch Teilen und Wiederverwenden werden Zusammenarbeit und Produktivität verbessert. In diesem Szenario möchten Sie möglicherweise ein trainiertes Modell und die zugeordneten zum Trainieren genutzten Komponenten und Umgebungen in einen zentralen Katalog veröffentlichen. Von dort aus können Kollegen aus anderen Teams die Ressourcen, die Sie freigegeben haben, durchsuchen und in ihren eigenen Experimenten wiederverwenden.

In diesem Artikel lernen Sie Folgendes:

  • Erstellen einer Umgebung und Komponente in der Registrierung.
  • Verwenden der Komponente aus der Registrierung zum Übermitteln eines Modelltrainingsauftrags in einen Arbeitsbereich.
  • Registrieren des trainierten Modells in der Registrierung.
  • Bereitstellen des Modells aus der Registrierung auf einem Onlineendpunkt im Arbeitsbereich und anschließendes Übermitteln einer Rückschlussanforderung.

Voraussetzungen

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

  • Eine Azure Machine Learning-Registrierung zum Freigeben von Modellen, Komponenten und Umgebungen. Informationen zum Erstellen einer Registrierung finden Sie unter Informationen zum Erstellen einer Registrierung.

  • Ein Azure Machine Learning-Arbeitsbereich. Wenn keiner vorliegt, führen Sie die Schritte unter Schnellstart: Erstellen von Arbeitsbereichsressourcen aus, um einen Arbeitsbereich zu erstellen.

    Wichtig

    Die Azure-Region (Standort), in der Sie Ihren Arbeitsbereich erstellen, muss sich in der Liste der unterstützten Regionen für die Azure Machine Learning-Registrierung befinden.

  • Die Azure CLI und die ml-Erweiterung oder das Azure Machine Learning Python SDK v2:

    Informationen zum Installieren der Azure CLI und der Erweiterung finden Sie unter Installieren, Einrichten und Verwenden der CLI (v2).

    Wichtig

    • In den CLI-Beispielen in diesem Artikel wird davon ausgegangen, dass Sie die Bash-Shell (oder eine kompatible Shell) verwenden, beispielsweise über ein Linux-System oder ein Windows-Subsystem für Linux.

    • In den Beispielen wird außerdem davon ausgegangen, dass Sie Standardeinstellungen für die Azure-Befehlszeilenschnittstelle konfiguriert haben, sodass Sie für Ihr Abonnement, Ihren Arbeitsbereich, Ihre Ressourcengruppe und Ihren Standort keine Parameter angeben müssen. Verwenden Sie zum Festlegen von Standardeinstellungen die folgenden Befehle. Ersetzen Sie die folgenden Parameter durch die Werte für Ihre Konfiguration:

      • Ersetzen Sie <subscription> durch Ihre Azure-Abonnement-ID.
      • Ersetzen Sie <workspace> durch den Namen Ihres Azure Machine Learning-Arbeitsbereichs.
      • Ersetzen Sie <resource-group> durch die Azure-Ressourcengruppe, die Ihren Arbeitsbereich enthält.
      • Ersetzen Sie <location> durch die Azure-Region, die Ihren Arbeitsbereich enthält.
      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
      

      Mit dem Befehl az configure -l können Sie die aktuellen Standardwerte anzeigen.

Repository für Klonbeispiele

Die Codebeispiele in diesem Artikel basieren auf dem nyc_taxi_data_regression-Beispiel im Beispielrepository. Wenn Sie diese Dateien in Ihrer Entwicklungsumgebung verwenden möchten, klonen Sie das Repository, und ändern Sie die Verzeichnisse in das Beispiel mit den folgenden Befehlen:

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

Ändern Sie für das CLI-Beispiel Verzeichnisse cli/jobs/pipelines-with-components/nyc_taxi_data_regression in Ihrem lokalen Klon des Beispielrepositorys.

cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression

Erstellen einer SDK-Verbindung

Tipp

Dieser Schritt ist nur erforderlich, wenn das Python SDK verwendet wird.

Erstellen Sie eine Clientverbindung sowohl mit dem Azure Machine Learning-Arbeitsbereich als auch mit der Azure Machine Learning-Registrierung:

ml_client_workspace = MLClient( credential=credential,
    subscription_id = "<workspace-subscription>",
    resource_group_name = "<workspace-resource-group",
    workspace_name = "<workspace-name>")
print(ml_client_workspace)

ml_client_registry = MLClient(credential=credential,
                        registry_name="<REGISTRY_NAME>",
                        registry_location="<REGISTRY_REGION>")
print(ml_client_registry)

Erstellen einer Umgebung in der Registrierung

Umgebungen definieren die Abhängigkeiten von Docker-Containern und Python, die zum Ausführen von Trainingsaufträgen oder Bereitstellen von Modellen erforderlich sind. Weitere Informationen zu Umgebungen finden Sie in den folgenden Artikeln:

Tipp

Der gleiche CLI-Befehl az ml environment create kann verwendet werden, um Umgebungen in einem Arbeitsbereich oder einer Registrierung zu erstellen. Wenn Sie den Befehl mit dem Befehl --workspace-name ausführen, wird die Umgebung in einem Arbeitsbereich erstellt. Ausführen des Befehls mit --registry-name erstellt die Umgebung in der Registrierung.

Hier wird eine Umgebung erstellt, die das Docker-Image python:3.8 verwendet und zum Ausführen eines Trainingsauftrags mit dem Scikit-learn-Framework erforderliche Python-Pakete installiert. Wenn Sie das Beispielrepository geklont haben und sich im Ordner cli/jobs/pipelines-with-components/nyc_taxi_data_regression befinden, sollten Sie die Umgebungsdefinitionsdatei env_train.yml sehen, die auf die Docker-Datei env_train/Dockerfile verweist. env_train.yml wird zu Ihrer Referenz im Folgenden dargestellt:

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: SKLearnEnv
version: 1
build:
  path: ./env_train

Erstellen der Umgebung mit az ml environment create wie folgt

az ml environment create --file env_train.yml --registry-name <registry-name>

Wenn Sie einen Fehler erhalten, dass eine Umgebung mit diesem Namen und dieser Version bereits in der Registrierung vorhanden ist, können Sie entweder das Feld version in env_train.yml bearbeiten oder eine andere Version in der Befehlszeilenschnittstelle angeben, die den Versionswert in env_train.yml außer Kraft setzt.

# use shell epoch time as the version
version=$(date +%s)
az ml environment create --file env_train.yml --registry-name <registry-name> --set version=$version

Tipp

version=$(date +%s) funktioniert nur unter Linux. Ersetzen Sie $version durch eine Zufallszahl, wenn dies nicht funktioniert.

Notieren Sie sich den name und die version der Umgebung aus der Ausgabe des Befehls az ml environment create, und verwenden Sie sie mit den Befehlen az ml environment show wie folgt. Sie benötigen den name und die version im nächsten Abschnitt, wenn Sie eine Komponente in der Registrierung erstellen.

az ml environment show --name SKLearnEnv --version 1 --registry-name <registry-name>

Tipp

Wenn Sie einen anderen Umgebungsnamen oder eine andere Version verwendet haben, ersetzen Sie die Parameter --name und --version entsprechend.

Sie können auch mit az ml environment list --registry-name <registry-name> alle Umgebungen in der Registrierung auflisten.

Sie können alle Umgebungen in Azure Machine Learning Studio durchsuchen. Navigieren Sie zur globalen Benutzeroberfläche, und suchen Sie nach dem Eintrag Registries.

Screenshot der Umgebungen in der Registrierung.

Erstellen einer Komponente in der Registrierung

Komponenten sind wiederverwendbare Bausteine von Machine Learning-Pipelines in Azure Machine Learning. Sie können den Code, den Befehl, die Umgebung, die Eingabeschnittstelle und die Ausgabeschnittstelle eines einzelnen Pipelineschritts in eine Komponente packen. Anschließend können Sie die Komponente über mehrere Pipelines hinweg wiederverwenden, ohne sich Gedanken über das Portieren von Abhängigkeiten und Code bei jedem Schreiben einer anderen Pipeline zu machen.

Durch das Erstellen einer Komponente in einem Arbeitsbereich können Sie die Komponente in jedem Pipelineauftrag innerhalb dieses Arbeitsbereichs verwenden. Durch das Erstellen einer Komponente in einer Registrierung können Sie die Komponente in jedem Arbeitsbereich innerhalb Ihrer Organisation verwenden. Das Erstellen von Komponenten in einer Registrierung ist eine gute Möglichkeit, modulare, wiederverwendbare Hilfsprogramme oder freigegebene Trainingsaufgaben zu erstellen, die für Experimente von verschiedenen Teams innerhalb Ihrer Organisation verwendet werden können.

Weitere Informationen zu Komponenten finden Sie in den folgenden Artikeln:

Stellen Sie sicher, dass Sie sich im Ordner cli/jobs/pipelines-with-components/nyc_taxi_data_regression befinden. Sie finden die Komponentendefinitionsdatei train.yml, die ein Scikit-learn-Trainingsskript train_src/train.py und die zusammengestellte UmgebungAzureML-sklearn-0.24-ubuntu18.04-py37-cpu enthält. Die im vorherigen Schritt erstellte Scikit-learn-Umgebung wird anstelle der zusammengestellten Umgebung verwendet. Sie können das Feld environment in train.yml bearbeiten, um auf Ihre Scikit-learn-Umgebung zu verweisen. Die resultierende Komponentendefinitionsdatei train.yml ähnelt dem folgenden Beispiel:

# <component>
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: train_linear_regression_model
display_name: TrainLinearRegressionModel
version: 1
type: command
inputs:
  training_data: 
    type: uri_folder
  test_split_ratio:
    type: number
    min: 0
    max: 1
    default: 0.2
outputs:
  model_output:
    type: mlflow_model
  test_data:
    type: uri_folder
code: ./train_src
environment: azureml://registries/<registry-name>/environments/SKLearnEnv/versions/1`
command: >-
  python train.py 
  --training_data ${{inputs.training_data}} 
  --test_data ${{outputs.test_data}} 
  --model_output ${{outputs.model_output}}
  --test_split_ratio ${{inputs.test_split_ratio}}

Wenn Sie einen anderen Namen oder eine andere Version verwendet haben, sieht die Darstellung allgemeiner wie folgt aus: environment: azureml://registries/<registry-name>/environments/<sklearn-environment-name>/versions/<sklearn-environment-version>. Stellen Sie daher sicher, dass Sie <registry-name>, <sklearn-environment-name> und <sklearn-environment-version> entsprechend ersetzen. Anschließend führen Sie wie folgt den Befehl az ml component create aus, um die Komponente zu erstellen.

az ml component create --file train.yml --registry-name <registry-name>

Tipp

Der gleiche CLI-Befehl az ml component create kann verwendet werden, um Komponenten in einem Arbeitsbereich oder einer Registrierung zu erstellen. Wenn Sie den Befehl mit dem Befehl --workspace-name ausführen, wird die Komponente in einem Arbeitsbereich erstellt. Ausführen des Befehls mit --registry-name erstellt die Komponente in der Registrierung.

Wenn Sie train.yml lieber nicht bearbeiten möchten, können Sie den Umgebungsnamen in der Befehlszeilenschnittstelle wie folgt außer Kraft setzen:

az ml component create --file train.yml --registry-name <registry-name>` --set environment=azureml://registries/<registry-name>/environments/SKLearnEnv/versions/1
# or if you used a different name or version, replace `<sklearn-environment-name>` and `<sklearn-environment-version>` accordingly
az ml component create --file train.yml --registry-name <registry-name>` --set environment=azureml://registries/<registry-name>/environments/<sklearn-environment-name>/versions/<sklearn-environment-version>

Tipp

Wenn Sie einen Fehler erhalten, dass der Name der Komponente bereits in der Registrierung vorhanden ist, können Sie die Version in train.yml bearbeiten oder sie in der CLI durch eine zufällige Version außer Kraft setzen.

Notieren Sie sich den name und die version der Komponente aus der Ausgabe des Befehls az ml component create, und verwenden Sie sie mit den Befehlen az ml component show wie folgt. Sie benötigen den name und die version im nächsten Abschnitt, wenn Sie einen Trainingsauftrag im Arbeitsbereich erstellen.

az ml component show --name <component_name> --version <component_version> --registry-name <registry-name>

Sie können auch mit az ml component list --registry-name <registry-name> alle Komponenten in der Registrierung auflisten.

Sie können alle Komponenten in Azure Machine Learning Studio durchsuchen. Navigieren Sie zur globalen Benutzeroberfläche, und suchen Sie nach dem Eintrag Registries.

Screenshot der Komponenten in der Registrierung.

Ausführen eines Pipelineauftrags in einem Arbeitsbereich mithilfe einer Komponente aus der Registrierung

Wenn Sie einen Pipelineauftrag ausführen, der eine Komponente aus einer Registrierung verwendet, sind die Computeressourcen und Trainingsdaten lokal für den Arbeitsbereich. Weitere Informationen zum Ausführen von Aufträgen finden Sie in den folgenden Artikeln:

Sie führen einen Pipelineauftrag mit der im vorherigen Abschnitt erstellten Scikit-learn-Trainingskomponente aus, um ein Modell zu trainieren. Überprüfen Sie, ob Sie sich im Ordner cli/jobs/pipelines-with-components/nyc_taxi_data_regression befinden. Das Trainingsdataset befindet sich im Ordner data_transformed. Bearbeiten Sie den Abschnitt component im Abschnitt train_job der Datei single-job-pipeline.yml, um auf die im vorherigen Abschnitt erstellte Trainingskomponente zu verweisen. Die Ergebnisdatei single-job-pipeline.yml wird unten angezeigt.

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset

jobs:
  train_job:
    type: command
    component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
    compute: azureml:cpu-cluster
    inputs:
      training_data: 
        type: uri_folder
        path: ./data_transformed
    outputs:
      model_output: 
        type: mlflow_model
      test_data: 

Der wichtigste Aspekt besteht darin, dass diese Pipeline in einem Arbeitsbereich unter Verwendung einer Komponente ausgeführt wird, die sich nicht in einem bestimmten Arbeitsbereich befindet. Die Komponente befindet sich in einer Registrierung, die mit jedem Arbeitsbereich in Ihrer Organisation verwendet werden kann. Sie können diesen Trainingsauftrag in jedem Arbeitsbereich ausführen, auf den Sie Zugriff haben, ohne sich Gedanken darüber zu machen, ob der Trainingscode und die Umgebung in diesem Arbeitsbereich verfügbar sind.

Warnung

  • Vergewissern Sie sich vor dem Ausführen des Pipelineauftrags, dass sich der Arbeitsbereich für die Ausführung des Auftrags in einer Azure-Region befindet, die von der Registrierung, in der Sie die Komponente erstellt haben, unterstützt wird.
  • Vergewissern Sie sich, dass der Arbeitsbereich über einen Computecluster mit dem Namen cpu-cluster verfügt, oder bearbeiten Sie das Feld compute unter jobs.train_job.compute mit dem Namen Ihres Compute.

Führen Sie den Pipelineauftrag mit dem Befehl az ml job create aus.

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

Tipp

Wenn Sie den Standardarbeitsbereich und die Ressourcengruppe nicht gemäß dem Abschnitt „Voraussetzungen“ konfiguriert haben, müssen Sie die Parameter --workspace-name und --resource-group angeben, damit az ml job create funktioniert.

Alternativ können Sie die Bearbeitung von single-job-pipeline.yml überspringen und den in train_job verwendeten Komponentennamen über die Befehlszeilenschnittstelle außer Kraft setzen.

az ml job create --file single-job-pipeline.yml --set jobs.train_job.component=azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1

Da die im Trainingsauftrag verwendete Komponente über eine Registrierung freigegeben wird, können Sie den Auftrag an jeden Arbeitsbereich übermitteln, auf den Sie in Ihrer Organisation zugreifen können, auch über unterschiedliche Abonnements hinweg. Wenn Sie beispielsweise über dev-workspace, test-workspace und prod-workspace verfügen, entspricht das Ausführen des Trainingsauftrags in diesen drei Arbeitsbereichen einfach dem dreimaligen Ausführen des Befehls az ml job create.

az ml job create --file single-job-pipeline.yml --workspace-name dev-workspace --resource-group <resource-group-of-dev-workspace>
az ml job create --file single-job-pipeline.yml --workspace-name test-workspace --resource-group <resource-group-of-test-workspace>
az ml job create --file single-job-pipeline.yml --workspace-name prod-workspace --resource-group <resource-group-of-prod-workspace>

Wählen Sie in Azure Machine Learning Studio den Endpunktlink in der Auftragsausgabe aus, um den Auftrag anzuzeigen. Hier können Sie Trainingsmetriken analysieren, sich vergewissern, dass der Auftrag die Komponente und die Umgebung aus der Registrierung verwendet, und das trainierte Modell überprüfen. Notieren Sie sich den name des Auftrags aus der Ausgabe, oder suchen Sie diese Informationen in der Auftragsübersicht in Azure Machine Learning Studio. Sie benötigen diese Informationen, um das trainierte Modell im nächsten Abschnitt zum Erstellen von Modellen in der Registrierung herunterzuladen.

Screenshot: Pipeline in Azure Machine Learning Studio

Erstellen eines Modells in der Registrierung

In diesem Abschnitt erfahren Sie, wie Sie Modelle in einer Registrierung erstellen. Lesen Sie Verwalten von Modellen, um mehr über die Modellverwaltung in Azure Machine Learning zu erfahren. Wir sehen uns zwei verschiedene Möglichkeiten zum Erstellen eines Modells in einer Registrierung an. Die erste erfolgt über lokale Dateien. Die zweite besteht im Kopieren eines im Arbeitsbereich registrierten Modells in eine Registrierung.

In beiden Optionen erstellen Sie ein Modell im MLflow-Format, das Ihnen dabei hilft, dieses Modell für Rückschlüsse bereitzustellen, ohne Rückschlusscode zu schreiben.

Erstellen eines Modells in der Registrierung aus lokalen Dateien

Laden Sie das Modell herunter, das als Ausgabe der Datei train_job verfügbar ist, indem Sie <job-name> durch den Namen des Auftrags aus dem vorherigen Abschnitt ersetzen. Das Modell und die zugehörigen MLflow-Metadatendateien sollten unter ./artifacts/model/ verfügbar sein.

# fetch the name of the train_job by listing all child jobs of the pipeline job
train_job_name=$(az ml job list --parent-job-name <job-name> --query [0].name | sed 's/\"//g')
# download the default outputs of the train_job
az ml job download --name $train_job_name 
# review the model files
ls -l ./artifacts/model/

Tipp

Wenn Sie den Standardarbeitsbereich und die Ressourcengruppe nicht gemäß dem Abschnitt „Voraussetzungen“ konfiguriert haben, müssen Sie die Parameter --workspace-name und --resource-group angeben, damit az ml model create funktioniert.

Warnung

Die Ausgabe von az ml job list wird an sed weitergegeben. Dies funktioniert nur in Linux-Shells. Wenn Sie unter Windows arbeiten, führen Sie az ml job list --parent-job-name <job-name> --query [0].name aus, und entfernen Sie etwaige Anführungszeichen im Namen des Trainingsauftrags.

Wenn Sie das Modell nicht herunterladen können, finden Sie ein MLflow-Beispielmodell, das durch den Trainingsauftrag im vorherigen Abschnitt trainiert wurde, im Ordner cli/jobs/pipelines-with-components/nyc_taxi_data_regression/artifacts/model/.

Erstellen Sie das Modell in der Registrierung:

# create model in registry
az ml model create --name nyc-taxi-model --version 1 --type mlflow_model --path ./artifacts/model/ --registry-name <registry-name>

Tipp

  • Verwenden Sie eine Zufallszahl für den Parameter version, falls ein Fehler angezeigt wird, dass der Modellname und die Version bereits vorhanden sind.
  • Der gleiche CLI-Befehl az ml model create kann verwendet werden, um Modelle in einem Arbeitsbereich oder einer Registrierung zu erstellen. Wenn Sie den Befehl mit dem Befehl --workspace-name ausführen, wird das Modell in einem Arbeitsbereich erstellt. Ausführen des Befehls mit --registry-name erstellt das Modell in der Registrierung.

Freigeben eines Modells aus dem Arbeitsbereich für die Registrierung

In diesem Workflow erstellen Sie zuerst das Modell im Arbeitsbereich und geben es dann für die Registrierung frei. Dieser Workflow ist nützlich, wenn Sie das Modell im Arbeitsbereich testen möchten, bevor Sie es freigeben. Stellen Sie es z. B. auf Endpunkten bereit, probieren Sie Rückschlüsse mit einigen Testdaten aus, und kopieren Sie das Modell dann in eine Registrierung, wenn Sie mit dem Ergebnis zufrieden sind. Dieser Workflow kann auch nützlich sein, wenn Sie eine Reihe von Modellen mit verschiedenen Techniken, Frameworks oder Parametern entwickeln und nur eines davon als Produktionskandidat in die Registrierung übertragen möchten.

Stellen Sie sicher, dass Sie über den Namen des Pipelineauftrags aus dem vorherigen Abschnitt verfügen, und ersetzen Sie diesen im Befehl weiter unten, um den Namen des Trainingsauftrags abzurufen. Anschließend registrieren Sie das Modell aus der Ausgabe des Trainingsauftrags im Arbeitsbereich. Beachten Sie, wie der Parameter --path auf die Ausgabe von train_job mit der Syntax azureml://jobs/$train_job_name/outputs/artifacts/paths/model verweist.

# fetch the name of the train_job by listing all child jobs of the pipeline job
train_job_name=$(az ml job list --parent-job-name <job-name> --workspace-name <workspace-name> --resource-group <workspace-resource-group> --query [0].name | sed 's/\"//g')
# create model in workspace
az ml model create --name nyc-taxi-model --version 1 --type mlflow_model --path azureml://jobs/$train_job_name/outputs/artifacts/paths/model 

Tipp

  • Verwenden Sie eine Zufallszahl für den Parameter version, falls ein Fehler angezeigt wird, dass der Modellname und die Version bereits vorhanden sind.
  • Wenn Sie den Standardarbeitsbereich und die Ressourcengruppe nicht gemäß dem Abschnitt „Voraussetzungen“ konfiguriert haben, müssen Sie die Parameter --workspace-name und --resource-group angeben, damit az ml model create funktioniert.

Notieren Sie den Namen und die Version des Modells. Sie können überprüfen, ob das Modell im Arbeitsbereich registriert ist, indem Sie diesen in der Studio-Benutzeroberfläche oder mithilfe des Befehls az ml model show --name nyc-taxi-model --version $model_version durchsuchen.

Als nächstes geben Sie das Modell aus dem Arbeitsbereich für die Registrierung frei.

# share model registered in workspace to registry
az ml model share --name nyc-taxi-model --version 1 --registry-name <registry-name> --share-with-name <new-name> --share-with-version <new-version>

Tipp

  • Achten Sie darauf, im Befehl az ml model create den richtigen Modellnamen und die richtige Version zu verwenden, wenn Sie diese geändert haben.
  • Der obige Befehl verfügt über die beiden optionalen Parameter „--share-with-name“ und „--share-with-version“. Wenn diese nicht bereitgestellt werden, hat das neue Modell den gleichen Namen und dieselbe Version wie das Modell, das freigegeben wird. Notieren Sie sich den name und die version des Modells aus der Ausgabe des Befehls az ml model create, und verwenden Sie sie mit den Befehlen az ml model show wie folgt. Sie benötigen den name und die version im nächsten Abschnitt, wenn Sie das Modell für Rückschlüsse auf einem Onlineendpunkt bereitstellen.
az ml model show --name <model_name> --version <model_version> --registry-name <registry-name>

Sie können auch mit az ml model list --registry-name <registry-name> alle Modelle in der Registrierung auflisten oder alle Komponenten auf der Azure Machine Learning Studio-Benutzeroberfläche durchsuchen. Navigieren Sie zur globalen Benutzeroberfläche, und suchen Sie nach dem Eintrag Registrierungshub.

Der folgende Screenshot zeigt ein Modell in einer Registrierung in Azure Machine Learning Studio. Wenn Sie ein Modell aus der Auftragsausgabe erstellt und dann aus dem Arbeitsbereich in die Registrierung kopiert haben, sehen Sie, dass das Modell einen Link zu dem Auftrag aufweist, der das Modell trainiert hat. Sie können über diesen Link zum Trainingsauftrag navigieren, um den Code, die Umgebung und die zum Trainieren des Modells verwendeten Daten zu überprüfen.

Screenshot der Modelle in der Registrierung.

Bereitstellen des Modells aus der Registrierung auf einem Onlineendpunkt in einem Arbeitsbereich

Im letzten Abschnitt stellen Sie ein Modell aus der Registrierung auf einen Onlineendpunkt in einem Arbeitsbereich bereit. Sie können jeden Arbeitsbereich bereitstellen, auf den Sie in Ihrer Organisation zugreifen können, sofern der Standort des Arbeitsbereichs einer der von der Registrierung unterstützten Standorte ist. Diese Möglichkeit ist hilfreich, wenn Sie ein Modell in einem dev-Arbeitsbereich trainiert haben und jetzt in einem test- oder prod-Arbeitsbereich bereitstellen müssen, während die Herkunftsinformationen rund um den Code, die Umgebung und Daten zum Trainieren des Modells beibehalten werden.

Onlineendpunkte ermöglichen Ihnen die Bereitstellung von Modellen und das Übermitteln von Rückschlussanforderungen über die REST-APIs. Weitere Informationen finden Sie unter Bereitstellen und Bewerten eines Machine Learning-Modells mithilfe eines Onlineendpunkts.

Erstellen Sie einen Onlineendpunkt.

az ml online-endpoint create --name reg-ep-1234

Aktualisieren Sie die Zeile model: in der Datei deploy.yml, die im Ordner cli/jobs/pipelines-with-components/nyc_taxi_data_regression verfügbar ist, sodass sie auf den Modellnamen und die Version aus dem vorherigen Schritt verweist. Erstellen Sie eine Onlinebereitstellung für den Onlineendpunkt. deploy.yml wird zu Ihrer Referenz im Folgenden dargestellt.

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: demo
endpoint_name: reg-ep-1234
model: azureml://registries/<registry-name>/models/nyc-taxi-model/versions/1
instance_type: Standard_DS2_v2
instance_count: 1

Erstellen Sie die Onlinebereitstellung. Die Bereitstellung kann einige Minuten in Anspruch nehmen.

az ml online-deployment create --file deploy.yml --all-traffic

Rufen Sie den Bewertungs-URI ab, und übermitteln Sie eine Beispielbewertungsanforderung. Beispieldaten für die Bewertungsanforderung stehen in scoring-data.json im Ordner cli/jobs/pipelines-with-components/nyc_taxi_data_regression zur Verfügung.

ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n reg-ep-1234 -o tsv --query primaryKey)
SCORING_URI=$(az ml online-endpoint show -n reg-ep-1234 -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @./scoring-data.json

Tipp

  • Der Befehl curl funktioniert nur unter Linux.
  • Wenn Sie den Standardarbeitsbereich und die Ressourcengruppe nicht gemäß dem Abschnitt „Voraussetzungen“ konfiguriert haben, müssen Sie die Parameter --workspace-name und --resource-group angeben, damit die Befehle az ml online-endpoint und az ml online-deployment funktionieren.

Bereinigen von Ressourcen

Wenn Sie die Bereitstellung nicht verwenden, sollten Sie sie löschen, um die Kosten zu reduzieren. Im folgenden Beispiel werden der Endpunkt und alle zugrunde liegenden Bereitstellungen gelöscht:

az ml online-endpoint delete --name reg-ep-1234 --yes --no-wait

Nächste Schritte