Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
devArbeitsbereich und müssen es fürtestundprodArbeitsbereiche bereitstellen. In diesem Fall möchten Sie eine End-to-End-Linie zwischen Endpunkten haben, zu denen das Modell intestoderprodarbeitsbereichen bereitgestellt wird, sowie den Schulungsauftrag, Metriken, Code, Daten und Umgebung, die zum Trainieren des Modells imdevArbeitsbereich 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:
- Ein Azure-Abonnement. Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen. Probieren Sie die free- oder kostenpflichtige Version von Azure Machine Learning aus.
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
mlErweiterung 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 -lBefehl können Sie sehen, was Ihre aktuellen Standardwerte sind.- Ersetzen Sie
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.
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:
Verwenden von Komponenten in Pipelines (SDK)
Wichtig
Die Registrierung unterstützt nur benannte Objekte (data/model/component/environment). Um auf ein Objekt in einer Registrierung zu verweisen, müssen Sie es zuerst in der Registrierung erstellen. Insbesondere bei Pipeline-Komponenten müssen Sie zunächst die Komponente oder Umgebung in der Registry erstellen, wenn Sie eine Komponente oder Umgebung in einer Pipeline-Komponente referenzieren möchten.
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.
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:
- Ausführen von Aufträgen (CLI)
- Ausführen von Aufträgen (SDK)
- Pipelineaufträge mit Komponenten (CLI)
- Pipelineaufträge mit Komponenten (SDK)
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-clusterverfügt, oder bearbeiten Sie dascompute-Feld unterjobs.train_job.computemit 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.
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
versionParameter, wenn Sie einen Fehler erhalten, der besagt, dass der Modellname und die Version bereits existieren. - Derselbe CLI-Befehl
az ml model createkann zum Erstellen von Modellen in einem Arbeitsbereich oder in einer Registrierung verwendet werden. Wenn Sie den Befehl--workspace-nameausführen, wird das Modell in einem Arbeitsbereich erstellt, während der Befehl--registry-namedas 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
versionParameter, 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-nameund--resource-groupParameter angeben, damitaz ml model createfunktioniert.
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 createBefehl geändert haben. - Die Parameter
--share-with-nameund--share-with-versionsind 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.
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
ACRPullundStorage Blob Data Readerauf Abonnementebene verfügen.
Tipp
-
curlDer 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-nameund--resource-groupangeben, damit die Befehleaz ml online-endpointundaz ml online-deploymentfunktionieren.
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