Modelle, Komponenten und Umgebungen über Arbeitsbereiche hinweg mit Registraturen teilen

Azure Machine Learning Registrierung ermöglicht es Ihnen, über Arbeitsbereiche innerhalb Ihrer Organisation hinweg zusammenzuarbeiten. 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:

  • Arbeitsbereichübergreifende MLOps: Sie trainieren ein Modell in einem dev Arbeitsbereich und müssen es für test und prod Arbeitsbereiche bereitstellen. In diesem Fall möchten Sie eine End-to-End-Linie zwischen Endpunkten haben, zu denen das Modell in test oder prod arbeitsbereichen bereitgestellt wird, sowie den Schulungsauftrag, Metriken, Code, Daten und Umgebung, die zum Trainieren des Modells im dev Arbeitsbereich verwendet wurde.
  • Freigeben und Wiederverwenden von Modellen und Pipelines in verschiedenen Teams: Gemeinsame Nutzung und Wiederverwendung verbessern die Zusammenarbeit und Produktivität. In diesem Szenario möchten Sie möglicherweise ein trainiertes Modell sowie die dafür verwendeten Komponenten und Umgebungen in einen zentralen Katalog veröffentlichen. Von dort aus können Kollegen aus anderen Teams die Ressourcen durchsuchen und wiederverwenden, die Sie in ihren eigenen Experimenten freigegeben haben.

In diesem Artikel erfahren Sie, wie Sie:

  • Erstellen Sie eine Umgebung und eine Komponente im Register.
  • Verwenden Sie die Komponente aus der Registrierung, um einen Modellschulungsauftrag in einem Arbeitsbereich zu übermitteln.
  • Registrieren Sie das trainierte Modell in der Registrierung.
  • Stellen Sie das Modell aus der Registrierung auf einem Onlineendpunkt im Arbeitsbereich bereit, und senden Sie dann eine Rückschlussanforderung.

Voraussetzungen

Bevor Sie die Schritte in diesem Artikel ausführen, stellen Sie sicher, dass Sie über die folgenden Voraussetzungen 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. Führen Sie, wenn Sie keinen haben, die Schritte im Schnellstart-Artikel: Erstellen von Arbeitsbereichsressourcen aus, um einen zu erstellen.

    Wichtig

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

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

    Informationen zum Installieren des 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 kompatible) Shell verwenden. Beispielsweise von einem Linux-System oder Windows-Subsystem für Linux.

    • In den Beispielen wird auch davon ausgegangen, dass Sie Die Standardwerte für die Azure CLI konfiguriert haben, damit Sie die Parameter für Ihr Abonnement, Ihren Arbeitsbereich, Ihre Ressourcengruppe oder Ihren Standort nicht 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 ressourcengruppe Azure, die Ihren Arbeitsbereich enthält.
      • Ersetzen Sie <location> durch den Bereich Azure, der Ihren Arbeitsbereich enthält.
      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
      

      Mit dem az configure -l Befehl können Sie sehen, was Ihre aktuellen Standardwerte sind.

Repository für Beispiele zum Klonen

Die Codebeispiele in diesem Artikel basieren auf dem Beispiel nyc_taxi_data_regression im Repository examples. Um diese Dateien in Ihrer Entwicklungsumgebung zu verwenden, verwenden Sie die folgenden Befehle, um das Repository zu klonen und Verzeichnisse in das Beispiel zu ändern:

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

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

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

Erstellen einer SDK-Verbindung

Tipp

Dieser Schritt ist nur erforderlich, wenn sie das Python SDK verwenden.

Erstellen Sie eine Clientverbindung mit dem Azure Machine Learning Arbeitsbereich und der 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 den Docker-Container und Python Abhängigkeiten, die zum Ausführen von Schulungsaufträgen oder zum Bereitstellen von Modellen erforderlich sind. Weitere Informationen zu Umgebungen finden Sie in den folgenden Artikeln:

Tipp

Derselbe CLI-Befehl az ml environment create kann zum Erstellen von Umgebungen in einem Arbeitsbereich oder in einer Registrierung verwendet werden. Wenn Sie den Befehl mit --workspace-name ausführen, wird die Umgebung in einem Arbeitsbereich erstellt, während der Befehl mit --registry-name die Umgebung in der Registrierung erstellt.

Wir erstellen eine Umgebung, die das python:3.10 Docker-Image verwendet, und installiert Python Pakete, die zum Ausführen eines Schulungsauftrags mit dem SciKit Learn-Framework erforderlich sind. Wenn Sie das Beispiel-Repository geklont haben und sich im Ordner cli/jobs/pipelines-with-components/nyc_taxi_data_regressionbefinden, sollten Sie die Umgebungsdefinitionsdatei env_train.yml anzeigen können, die auf die Docker-Datei env_train/Dockerfileverweist. Der Inhalt lautet env_train.yml wie folgt:

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: SKLearnEnv
version: 1-<VERSION>
description: Scikit Learn environment
build:
  path: ./env_train

Erstellen Sie die 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 in version in der env_train.yml bearbeiten oder eine andere Version über die CLI 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 in Linux. Ersetzen Sie $version diese durch eine Zufallszahl, wenn dies nicht funktioniert.

Notieren Sie sich die name und version der Umgebung aus der Ausgabe des az ml environment create-Befehls und verwenden Sie sie mit az ml environment show-Befehlen wie folgt. Sie benötigen den name und 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 verwenden az ml environment list --registry-name <registry-name> , um alle Umgebungen in der Registrierung auflisten.

Sie können alle Umgebungen in der Azure Machine Learning Studio durchsuchen. Stellen Sie sicher, dass Sie zur globalen Benutzeroberfläche navigieren und nach dem Eintrag "Registries" suchen.

Screenshot der Umgebungen in der Registrierung.

Hinweis

Die vom System zugewiesene verwaltete Identität der Registrierungsressource verfügt über AcrPull Berechtigung für die Azure Container Registry(ACR)-Instanz, die dieser Registrierung zugeordnet ist. Wenn eine Arbeitsbereichsberechnung ein Umgebungsimage abrufen muss, erstellt und gibt die AzureML-Registrierung ein ACR-Token mit einer entsprechenden Bereichszuordnung zurück, sodass das Bild von der Arbeitsbereichsberechnung abgerufen werden kann. Weder der Arbeitsbereich noch die Compute-Verwaltungsidentität haben direkten Zugriff auf das ACR-Register.

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 für mehrere Pipelines 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 einem beliebigen Pipelineauftrag innerhalb dieses Arbeitsbereichs verwenden. Durch das Erstellen einer Komponente in einer Registrierung können Sie die Komponente in einer beliebigen Pipeline in einem beliebigen Arbeitsbereich in Ihrer Organisation verwenden. Das Erstellen von Komponenten in einer Registrierung ist eine hervorragende Möglichkeit, modulare wiederverwendbare Hilfsprogramme oder freigegebene Schulungsaufgaben zu erstellen, die für das Experimentieren 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_regressionbefinden. Sie finden die Komponentendefinitionsdatei train.yml , die ein Scikit Learn-Schulungsskript train_src/train.pyverpackt. Der train.yml verwendet die kuratierte Umgebungsklearn-1.5 aus dem azureml Register. Sie können das environment Feld train.yml bearbeiten, um die Scikit Learn-Umgebung zu verwenden, die Sie im vorherigen Schritt erstellt haben, oder die kuratierte Umgebung beizubehalten. Die 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/azureml/environments/sklearn-1.5/labels/latest
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}}
# </component>

Wenn Sie Ihre eigene Umgebung aus dem vorherigen Schritt anstelle der kuratierten Umgebung verwenden möchten, aktualisieren Sie das environment Feld auf azureml://registries/<registry-name>/environments/SKLearnEnv/versions/1. Führen Sie den az ml component create Befehl aus, um die Komponente wie folgt zu erstellen.

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

Tipp

Derselbe CLI-Befehl az ml component create kann zum Erstellen von Komponenten in einem Arbeitsbereich oder in einer Registrierung verwendet werden. Wenn Sie den Befehl --workspace-name ausführen, wird die Komponente in einem Arbeitsbereich erstellt, hingegen wird die Komponente bei Ausführung des Befehls --registry-name in der Registrierung erstellt.

Wenn Sie den train.yml Umgebungsnamen lieber nicht bearbeiten möchten, können Sie den Umgebungsnamen auf der Kommandozeile wie folgt ersetzen:

az ml component create --file train.yml --registry-name <registry-name> --set environment=azureml://registries/<registry-name>/environments/SKLearnEnv/versions/1

Tipp

Wenn Sie einen Fehler erhalten, dass der Name der Komponente bereits in der Registrierung vorhanden ist, können Sie entweder die Version in train.yml bearbeiten oder die Version auf der Befehlszeile mit einer zufälligen Version überschreiben.

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

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

Sie können auch az ml component list --registry-name <registry-name> verwenden, um alle Komponenten in der Registrierung aufzulisten.

Sie können alle Komponenten im Azure Machine Learning Studio durchsuchen. Stellen Sie sicher, dass Sie zur globalen Benutzeroberfläche navigieren und nach dem Eintrag "Registries" suchen.

Screenshot der Komponenten in der Registrierung.

Einen Pipelineauftrag in einem Arbeitsbereich mithilfe einer Komponente aus einem Register ausführen lassen

Wenn Sie einen Pipelineauftrag ausführen, der eine Komponente aus einer Registrierung verwendet, sind die Computing-Ressourcen und Schulungsdaten lokal im Arbeitsbereich. Weitere Informationen zum Ausführen von Aufträgen finden Sie in den folgenden Artikeln:

Wir führen einen Pipeline-Job 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_regressionbefinden. Das Schulungsdatenset befindet sich im data_transformed Ordner. Bearbeiten Sie den component Abschnitt im train_job Abschnitt der single-job-pipeline.yml Datei, um auf die im vorherigen Abschnitt erstellte Schulungskomponente zu verweisen. Das Ergebnis single-job-pipeline.yml lautet wie folgt:

$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 ist, dass diese Pipeline in einem Arbeitsbereich mit einer Komponente ausgeführt wird, die sich nicht im bestimmten Arbeitsbereich befindet. Die Komponente befindet sich in einer Registrierung, die mit jedem Arbeitsbereich in Ihrer Organisation verwendet werden kann. Sie können diesen Schulungsauftrag in jedem Arbeitsbereich ausführen, auf den Sie Zugriff haben, ohne sich Gedanken darüber machen zu müssen, den Schulungscode und die Umgebung in diesem Arbeitsbereich verfügbar zu machen.

Warnung

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

Führen Sie den Pipeline-Job mit dem az ml job create Befehl aus.

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

Tipp

Wenn Sie den Standardarbeitsbereich und die Ressourcengruppe nicht wie im Abschnitt "Voraussetzungen" erläutert konfiguriert haben, müssen Sie die --workspace-name und --resource-group Parameter angeben, damit az ml job create funktioniert.

Alternativ können Sie die Bearbeitung single-job-pipeline.yml überspringen und den in der CLI verwendeten train_job Komponentennamen 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 Schulungsauftrag verwendete Komponente über eine Registrierung freigegeben wird, können Sie den Auftrag an einen beliebigen Arbeitsbereich übermitteln, auf den Sie in Ihrer Organisation zugreifen können, auch über unterschiedliche Abonnements hinweg. Wenn Sie beispielsweise dev-workspace, test-workspace und prod-workspace haben, ist es so einfach wie drei az ml job create-Befehle auszuführen, den Schulungsauftrag in diesen drei Arbeitsbereichen auszuführen.

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 Schulungsmetriken auswerten, überprüfen, ob der Auftrag die Komponente und Umgebung aus dem Register verwendet, und das trainierte Modell überprüfen. Notieren Sie sich die name des Auftrags aus der Ausgabe, oder finden Sie dieselben Informationen in der Auftragsübersicht in Azure Machine Learning Studio. Sie benötigen diese Informationen, um das trainierte Modell im nächsten Abschnitt über das Erstellen von Modellen im Register herunterzuladen.

Screenshot der Pipeline in Azure Machine Learning Studio.

Modell in der Registrierung erstellen

In diesem Abschnitt erfahren Sie, wie Sie Modelle in einer Registrierung erstellen. Lesen Sie Manage-Modelle, um mehr über die Modellverwaltung in Azure Machine Learning zu erfahren. Wir betrachten zwei verschiedene Möglichkeiten zum Erstellen eines Modells in einer Registrierung. Zuerst stammt es aus lokalen Dateien. Der zweite Schritt besteht darin, ein Modell, das im Arbeitsbereich registriert ist, in die Registrierung zu kopieren.

In beiden Optionen erstellen Sie ein Modell mit dem MLflow-Format, mit dem Sie dieses Modell für Rückschlüsse bereitstellen können, ohne Einenschlusscode zu schreiben.

Erstellen eines Modells in der Registrierung aus lokalen Dateien

Laden Sie das Modell herunter, das als Ausgabe des train_job verfügbar ist, indem Sie <job-name> durch den Namen des Auftrags aus dem vorherigen Abschnitt ersetzen. Das Modell zusammen mit MLflow-Metadatendateien sollte in der ./artifacts/model/Datei 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 wie im Abschnitt "Voraussetzungen" erläutert 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 auf Linux-Shells. Wenn Sie Windows verwenden, führen Sie az ml job list --parent-job-name <job-name> --query [0].name aus und entfernen Sie alle Anführungszeichen, die im Namen des Trainingsauftrags angezeigt werden.

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

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 version Parameter, wenn Sie einen Fehler erhalten, der besagt, dass der Modellname und die Version bereits existieren.
  • Derselbe CLI-Befehl az ml model create kann zum Erstellen von Modellen in einem Arbeitsbereich oder in einer Registrierung verwendet werden. Wenn Sie den Befehl --workspace-name ausführen, wird das Modell in einem Arbeitsbereich erstellt, während der Befehl --registry-name das Modell in der Registrierung erstellt.

Freigeben eines Modells von Arbeitsbereich zu 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 beispielsweise für Endpunkte bereit, und testen Sie die Ableitung mit einigen Testdaten, und kopieren Sie das Modell dann in eine Registrierung, wenn alles gut aussieht. Dieser Workflow kann auch hilfreich sein, wenn Sie eine Reihe von Modellen mit verschiedenen Techniken, Frameworks oder Parametern entwickeln und nur eine davon als Produktionskandidat in die Registrierung bewerben möchten.

Stellen Sie sicher, dass Sie den Namen des Pipelineauftrags aus dem vorherigen Abschnitt haben und ersetzen Sie diesen im Befehl, um den Namen des Schulungsauftrags abzurufen. Anschließend registrieren Sie das Modell aus der Ausgabe des Schulungsauftrags im Arbeitsbereich. Beachten Sie, wie sich der --path Parameter auf die Ausgabeausgabe train_job mit der azureml://jobs/$train_job_name/outputs/artifacts/paths/model Syntax bezieht.

# 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 version Parameter, wenn Sie einen Fehler erhalten, dass der Modellname und die Version bereits vorhanden sind.
  • Wenn Sie den Standardarbeitsbereich und die Ressourcengruppe nicht wie im Abschnitt "Voraussetzungen" erläutert konfiguriert haben, müssen Sie die --workspace-name und --resource-group Parameter angeben, damit az ml model create funktioniert.

Notieren Sie sich den Modellnamen und die Version. Sie können überprüfen, ob das Modell im Arbeitsbereich registriert ist, indem Sie es in der Studio-Benutzeroberfläche durchsuchen oder den Befehl verwenden az ml model show --name nyc-taxi-model --version $model_version .

Als Nächstes geben Sie das Modell aus dem Arbeitsbereich im Register 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

  • Stellen Sie sicher, dass Sie den richtigen Modellnamen und die richtige Version verwenden, wenn Sie ihn im az ml model create Befehl geändert haben.
  • Die Parameter --share-with-name und --share-with-version sind erforderlich. Sie geben den Namen und die Version an, über die das Modell in der Registrierung verfügt.

Notieren Sie sich den name und version des Modells aus der Ausgabe des az ml model create Befehls und verwenden Sie diese mit az ml model show Befehlen wie folgt. Sie benötigen den name und version im nächsten Abschnitt, wenn Sie das Modell für die Ableitung auf einen Onlineendpunkt bereitstellen.

az ml model show --name <model_name> --version <model_version> --registry-name <registry-name>

Sie können auch az ml model list --registry-name <registry-name> verwenden, um alle Modelle in der Registrierung auflisten oder alle Komponenten in der Azure Machine Learning Studio-Benutzeroberfläche zu durchsuchen. Stellen Sie sicher, dass Sie zur globalen Benutzeroberfläche navigieren und nach dem Registries-Hub suchen.

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

Screenshot der Modelle im Register.

Bereitstellen eines Modells aus dem Register zu einem Online-Endpunkt im Arbeitsbereich

Im letzten Abschnitt stellen Sie ein Modell aus der Registrierung auf einem Onlineendpunkt in einem Arbeitsbereich bereit. Sie können einen beliebigen Arbeitsbereich bereitstellen, auf den Sie in Ihrer Organisation zugreifen können, vorausgesetzt, der Speicherort des Arbeitsbereichs ist einer der Speicherorte, die von der Registrierung unterstützt werden. Diese Funktion ist hilfreich, wenn Sie ein Modell in einem dev Arbeitsbereich trainiert haben und jetzt das Modell test in oder prod im Arbeitsbereich bereitstellen müssen, während die Linieninformationen um den Code, die Umgebung und die Daten beibehalten werden, die zum Trainieren des Modells verwendet werden.

Mit Onlineendpunkten können Sie Modelle bereitstellen und Rückschlussanforderungen über die REST-APIs senden. Weitere Informationen finden Sie unter Bereitstellen und Bewertung eines Machine Learning-Modells mithilfe eines Onlineendpunkts.

Tipp

In diesem Beispiel wird die schlüsselbasierte Authentifizierung zur Einfachheit verwendet. Für Produktionsbereitstellungen empfiehlt Microsoft Microsoft Entra tokenbasierte Authentifizierung (aad_token), die eine verbesserte Sicherheit durch identitätsbasierte Zugriffssteuerung bietet. Weitere Informationen finden Sie unter Authentifizieren von Clients für Onlineendpunkte.

Erstellen Sie einen Onlineendpunkt.

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

Aktualisieren Sie die model: im deploy.yml Ordner verfügbare Zeilecli/jobs/pipelines-with-components/nyc_taxi_data_regression, um den Modellnamen und die Version aus dem vorherigen Schritt zu referenzieren. Erstellen Sie eine Onlinebereitstellung für den Onlineendpunkt. Dies deploy.yml wird unten zur Referenz gezeigt.

$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_DS3_v2
instance_count: 1

Erstellen Sie die Online-Bereitstellung. Die Bereitstellung dauert mehrere Minuten.

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

Rufen Sie den Bewertungs-URI ab, und senden Sie eine Beispielbewertungsanforderung. Beispieldaten für die Bewertungsanforderung sind im scoring-data.json im cli/jobs/pipelines-with-components/nyc_taxi_data_regression Ordner verfügbar.

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

Wichtig

  • Für Endpunkte, die mit einer benutzerdefinierten Identität erstellt wurden, ist eine manuelle Rollenzuweisung erforderlich. Die Identität muss über die Rollen ACRPull und Storage Blob Data Reader auf Abonnementebene verfügen.

Tipp

  • curl Der Befehl funktioniert nur unter Linux.
  • Wenn Sie den Standardarbeitsbereich und die Ressourcengruppe nicht wie im Abschnitt "Voraussetzungen" erläutert 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 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