In diesem Artikel erfahren Sie, wie Sie Ihr Modell für einen Onlineendpunkt bereitstellen, um es für Echtzeitrückschlüsse zu verwenden. Sie beginnen mit der Bereitstellung eines Modells auf Ihrem lokalen Computer, um eventuelle Fehler zu debuggen. Anschließend stellen Sie das Modell in Azure bereit und testen es, zeigen die Bereitstellungsprotokolle an und überwachen die Vereinbarung zum Servicelevel (SLA). Am Ende dieses Artikels werden Sie über einen skalierbaren HTTPS/REST-Endpunkt verfügen, den Sie für Rückschlüsse in Echtzeit verwenden können.
Onlineendpunkte sind Endpunkte, die für Echtzeitrückschlüsse verwendet werden. Es gibt zwei Arten von Onlineendpunkten: Verwaltete Onlineendpunkte und Kubernetes-Onlineendpunkte. Weitere Informationen zu Endpunkten und den Unterschieden zwischen verwalteten Onlineendpunkten und Kubernetes-Onlineendpunkten finden Sie unter Was sind Azure Machine Learning-Endpunkte?.
Mithilfe von verwalteten Onlineendpunkten können Sie Ihre Machine Learning-Modelle so bereitstellen, dass sie sofort einsatzbereit sind. Verwaltete Onlineendpunkte arbeiten mit leistungsstarken CPU- und GPU-Computern in Azure auf skalierbare, vollständig verwaltete Weise. Verwaltete Online-Endpunkte sorgen für die Bereitstellung, Skalierung, Sicherung und Überwachung Ihrer Modelle und befreien Sie vom Aufwand für die Einrichtung und Verwaltung der zugrunde liegenden Infrastruktur.
Im Hauptbeispiel in dieser Dokumentation werden verwaltete Online-Endpunkte für die Bereitstellung verwendet. Wenn Sie stattdessen Kubernetes verwenden möchten, lesen Sie bitte die Hinweise in diesem Dokument, die mit der Diskussion über verwaltete Online-Endpunkte übereinstimmen.
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.
Die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) wird verwendet, um Zugriff auf Vorgänge in Azure Machine Learning zu gewähren. Um die Schritte in diesem Artikel auszuführen, muss Ihr Benutzerkonto der Rolle Besitzer oder Mitwirkender für den Azure Machine Learning-Arbeitsbereich bzw. einer benutzerdefinierte Rolle zugewiesen werden, die Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* zulässt. Wenn Sie das Studio zum Erstellen/Verwalten von Online-Endpunkten bzw. -Bereitstellungen verwenden, benötigen Sie eine zusätzliche Berechtigung „Microsoft.Resources/deployments/write“ von der Eigentümerin oder dem Eigentümer der Ressourcengruppe. Weitere Informationen finden Sie unter Zugriff auf einen Azure Machine Learning-Arbeitsbereich verwalten.
(Optional) Zur lokalen Bereitstellung müssen Sie die Docker-Engine auf Ihrem lokalen Computer installieren. Diese Option wird dringend empfohlen, um das Debuggen von Problemen zu vereinfachen.
Die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) wird verwendet, um Zugriff auf Vorgänge in Azure Machine Learning zu gewähren. Um die Schritte in diesem Artikel auszuführen, muss Ihr Benutzerkonto der Rolle Besitzer oder Mitwirkender für den Azure Machine Learning-Arbeitsbereich bzw. einer benutzerdefinierte Rolle zugewiesen werden, die Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* zulässt. Weitere Informationen finden Sie unter Zugriff auf einen Azure Machine Learning-Arbeitsbereich verwalten.
(Optional) Zur lokalen Bereitstellung müssen Sie die Docker-Engine auf Ihrem lokalen Computer installieren. Diese Option wird dringend empfohlen, um das Debuggen von Problemen zu vereinfachen.
Stellen Sie vor dem Ausführen der Schritte in diesem Artikel sicher, dass Sie über die folgenden erforderlichen Komponenten verfügen:
Die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) wird verwendet, um Zugriff auf Vorgänge in Azure Machine Learning zu gewähren. Um die Schritte in diesem Artikel auszuführen, muss Ihr Benutzerkonto der Rolle Besitzer oder Mitwirkender für den Azure Machine Learning-Arbeitsbereich bzw. einer benutzerdefinierte Rolle zugewiesen werden, die Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* zulässt. Weitere Informationen finden Sie unter Zugriff auf einen Azure Machine Learning-Arbeitsbereich verwalten.
Hinweis
In diesen Schritten werden zwar die Azure-Befehlszeilenschnittstelle und die CLI-Erweiterung für maschinelles Lernen verwendet, sie stehen aber nicht im Vordergrund. Sie werden eher als Hilfsprogramme verwendet, die Vorlagen an Azure übergeben und den Status von Vorlagenbereitstellungen überprüfen.
Stellen Sie vor dem Ausführen der Schritte in diesem Artikel sicher, dass Sie über die folgenden erforderlichen Komponenten verfügen:
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.
Die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) wird verwendet, um Zugriff auf Vorgänge in Azure Machine Learning zu gewähren. Um die Schritte in diesem Artikel auszuführen, muss Ihr Benutzerkonto der Rolle Besitzer oder Mitwirkender für den Azure Machine Learning-Arbeitsbereich bzw. einer benutzerdefinierte Rolle zugewiesen werden, die Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* zulässt. Weitere Informationen finden Sie unter Zugriff auf einen Azure Machine Learning-Arbeitsbereich verwalten.
Stellen Sie sicher, dass genügend VM-Kontingent für die Bereitstellung zugewiesen ist. Azure Machine Learning reserviert 20 % Ihrer Computeressourcen für die Durchführung von Upgrades auf einigen VM-SKUs. Wenn Sie beispielsweise 10 Instanzen in einer Bereitstellung anfordern, müssen Sie für jede Anzahl von Kernen für die VM-SKU ein Kontingent von 12 haben. Wenn Sie diese zusätzlichen Computeressourcen nicht bereitstellen, tritt ein Fehler auf. Es gibt einige VM-SKUs, die von der zusätzlichen Kontingentreservierung ausgenommen sind. Weitere Informationen zur Kontingentzuweisung finden Sie unter Kontingentzuweisung für VMs für die Bereitstellung.
Alternativ können Sie für einen begrenzten Zeitraum das Kontingent aus dem freigegebenen Kontingentpool von Azure Machine Learning verwenden. Azure Machine Learning bietet einen Pool freigegebener Kontingente, aus dem Benutzer in verschiedenen Regionen auf ein Kontingent zugreifen können, um Tests für eine begrenzte Zeit durchzuführen (abhängig von der Verfügbarkeit).
Wenn Sie das Studio verwenden, um Llama-2-, Phi-, Nemotron-, Mistral-, Dolly- oder Deci-DeciLM-Modelle (aus dem Modellkatalog) auf einem verwalteten Onlineendpunkt bereitzustellen, ermöglicht Azure Machine Learning Ihnen für eine kurze Zeit den Zugriff auf diesen freigegebenen Kontingentpool, um Tests durchzuführen. Weitere Informationen zum freigegebenen Kontingentpool finden Sie unter Freigegebenes Azure Machine Learning-Kontingent.
Wenn Sie die Standardeinstellungen für die Azure-Befehlszeilenschnittstelle noch nicht festgelegt haben, speichern Sie Ihre Standardeinstellungen. Um zu vermeiden, dass Sie die Werte für Ihr Abonnement, Ihren Arbeitsbereich und Ihre Ressourcengruppe mehrfach eingeben müssen, führen Sie den folgenden Code aus:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Klonen des Beispielrepositorys
Klonen Sie zunächst das Beispielrepository (azureml-examples), um diesem Artikel zu folgen. Führen Sie dann den folgenden Code aus, um zum cli/-Verzeichnis des Repositorys zu wechseln:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
Tipp
Verwenden Sie --depth 1, um nur den letzten Commit in das Repository zu klonen, wodurch das Abschließen des Vorgangs beschleunigt wird.
Die in diesem Tutorial verwendeten Befehle befinden sich in den Dateien deploy-local-endpoint.sh und deploy-managed-online-endpoint.sh im Verzeichnis cli, und die YAML-Konfigurationsdateien finden Sie im Unterverzeichnis endpoints/online/managed/sample/.
Hinweis
Die YAML-Konfigurationsdateien für Kubernetes-Onlineendpunkte befinden sich im Unterverzeichnis endpoints/online/kubernetes/.
Klonen des Beispielrepositorys
Klonen Sie zum Ausführen der Trainingsbeispiele zunächst das Beispielerepository (azureml-examples), und wechseln Sie in das azureml-examples/sdk/python/endpoints/online/managed-Verzeichnis:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Tipp
Verwenden Sie --depth 1, um nur den letzten Commit in das Repository zu klonen, wodurch das Abschließen des Vorgangs beschleunigt wird.
Die Informationen in diesem Artikel stammen aus dem Notebook online-endpoints-simple-deployment.ipynb. Es enthält denselben Inhalt wie dieser Artikel, wobei die Reihenfolge der Codes leicht abweicht.
Herstellen einer Verbindung mit einem Azure Machine Learning-Arbeitsbereich
Der Arbeitsbereich ist die Ressource der obersten Ebene für Azure Machine Learning und ein zentraler Ort für die Arbeit mit allen Artefakten, die Sie während der Nutzung von Azure Machine Learning erstellen. In diesem Abschnitt stellen Sie eine Verbindung mit dem Arbeitsbereich her, in dem Sie die Bereitstellungsaufgaben ausführen werden. Öffnen Sie zum Nachvollziehen der Schritte das Notebook online-endpoints-simple-deployment.ipynb.
Importieren Sie die erforderlichen Bibliotheken.
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration,
)
from azure.identity import DefaultAzureCredential
Hinweis
Wenn Sie den Kubernetes-Onlineendpunkt verwenden, importieren Sie die Klassen KubernetesOnlineEndpoint und KubernetesOnlineDeployment aus der Bibliothek azure.ai.ml.entities.
Konfigurieren von Arbeitsbereichsdetails und Abrufen eines Handles für den Arbeitsbereich:
Um eine Verbindung mit einem Arbeitsbereich herzustellen, benötigen Sie Bezeichnerparameter – ein Abonnement, eine Ressourcengruppe und einen Arbeitsbereichsnamen. Sie verwenden diese Details im MLClient ab azure.ai.ml, um ein Handle zum erforderlichen Azure Machine Learning-Arbeitsbereich zu erhalten. In diesem Beispiel wird die Standardauthentifizierung von Azure verwendet.
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Wenn Sie Git auf Ihrem lokalen Computer installiert haben, können Sie der Anleitung zum Klonen des Beispielrepositorys folgen. Folgen Sie andernfalls den Anweisungen zum Herunterladen von Dateien aus dem Beispielrepository.
Klonen des Beispielrepositorys
Klonen Sie zum Nachvollziehen der Schritte in diesem Artikel zunächst das Beispielrepository (azureml-examples), und wechseln Sie anschließend zum Verzeichnis azureml-examples/cli/endpoints/online/model-1.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
Tipp
Verwenden Sie --depth 1, um nur den letzten Commit in das Repository zu klonen, wodurch das Abschließen des Vorgangs beschleunigt wird.
Herunterladen von Dateien aus dem Beispielrepository
Wenn Sie das Beispielrepository geklont haben, verfügt Ihr lokaler Computer bereits über Kopien der Dateien für dieses Beispiel, und Sie können mit dem nächsten Abschnitt fortfahren. Wenn Sie das Repository nicht geklont haben, können Sie es auf Ihren lokalen Computer herunterladen.
Wählen Sie auf der Seite <> Code die Schaltfläche „Code“ und anschließend auf der Registerkarte Local die Option Download ZIP aus.
Suchen Sie den Ordner /cli/endpoints/online/model-1/model und die Datei /cli/endpoints/online/model-1/onlinescoring/score.py.
Festlegen von Umgebungsvariablen
Legen Sie die folgenden Umgebungsvariablen fest, da sie in den Beispielen in diesem Artikel verwendet werden. Ersetzen Sie die Werte durch Ihre Azure-Abonnement-ID, die Azure-Region, in der sich Ihr Arbeitsbereich befindet, die Ressourcengruppe, die den Arbeitsbereich enthält, und den Namen des Arbeitsbereichs:
export SUBSCRIPTION_ID="your Azure subscription ID"
export LOCATION="Azure region where your workspace is located"
export RESOURCE_GROUP="Azure resource group that contains your workspace"
export WORKSPACE="Azure Machine Learning workspace name"
In einigen Vorlagenbeispielen müssen Sie Dateien in den Azure-Blobspeicher für Ihren Arbeitsbereich hochladen. In den folgenden Schritten wird der Arbeitsbereich abgefragt, und diese Informationen werden in den in den Beispielen verwendeten Umgebungsvariablen gespeichert:
Klonen Sie zunächst das Beispielrepository (azureml-examples), um diesem Artikel zu folgen. Führen Sie dann den folgenden Code aus, um zum Verzeichnis mit den Beispielen zu wechseln:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
Tipp
Verwenden Sie --depth 1, um nur den letzten Commit in das Repository zu klonen, wodurch das Abschließen des Vorgangs beschleunigt wird.
Definieren des Endpunkts
Um einen Onlineendpunkt zu definieren, geben Sie den Endpunktnamen und Authentifizierungsmodus an. Weitere Informationen zu verwalteten Onlineendpunkten finden Sie unter Onlineendpunkte.
Führen Sie den folgenden Befehl aus, um einen Endpunktnamen festzulegen. Ersetzen Sie YOUR_ENDPOINT_NAME durch einen Namen, der innerhalb der Azure-Region eindeutig ist. Weitere Informationen zu den Benennungsregeln finden Sie unter Endpunktgrenzwerte.
Führen Sie für Linux diesen Befehl aus:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Konfigurieren des Endpunkts
Der folgende Codeausschnitt zeigt die Datei endpoints/online/managed/sample/endpoint.yml:
Die Referenz für das YAML-Endpunktformat wird in der folgenden Tabelle beschrieben. Eine Anleitung zum Angeben dieser Attribute finden Sie in der YAML-Referenz für Onlineendpunkte. Informationen zu Grenzwerten im Zusammenhang mit verwalteten Endpunkten finden Sie unter Grenzwerte für Onlineendpunkte.
Schlüssel
BESCHREIBUNG
$schema
(Optional) Das YAML-Schema. Sie können das Schema aus dem vorherigen Codeschnipsel in einem Browser anzeigen, um sich alle verfügbaren Optionen in der YAML-Datei anzusehen.
name
Der Name des Endpunkts.
auth_mode
Verwenden Sie key für schlüsselbasierte Authentifizierung. Verwenden Sie aml_token für die tokenbasierte Azure Machine Learning-Authentifizierung. Verwenden Sie aad_token für die tokenbasierte Microsoft Entra-Authentifizierung (Preview). Weitere Informationen zur Authentifizierung finden Sie unter Authentifizieren von Clients bei einem Onlineendpunkt.
Konfigurieren eines Endpunkts
Definieren Sie zuerst den Namen des Onlineendpunkts, dann den Endpunkt.
Ihr Endpunktname muss innerhalb der Azure-Region eindeutig sein. Weitere Informationen zu den Benennungsregeln finden Sie unter Endpunktgrenzwerte.
# Define an endpoint name
endpoint_name = "my-endpoint"
# Example way to define a random name
import datetime
endpoint_name = "endpt-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name = endpoint_name,
description="this is a sample endpoint",
auth_mode="key"
)
Der vorherige Code verwendet key für die schlüsselbasierte Authentifizierung. Um die tokenbasierte Azure Machine Learning-Authentifizierung zu verwenden, verwenden Sie aml_token. Verwenden Sie für die tokenbasierte Microsoft Entra-Authentifizierung (Preview) aad_token. Weitere Informationen zur Authentifizierung finden Sie unter Authentifizieren von Clients bei einem Onlineendpunkt.
Konfigurieren eines Endpunkts
Wenn Sie die Bereitstellung in Azure über das Studio durchführen, erstellen Sie einen Endpunkt und eine Bereitstellung, die sie diesem hinzufügen. Zu diesem Zeitpunkt werden Sie aufgefordert, Namen für den Endpunkt und die Bereitstellung anzugeben.
Festlegen eines Endpunktnamens
Führen Sie den folgenden Befehl aus, um einen Endpunktnamen festzulegen. Ersetzen Sie YOUR_ENDPOINT_NAME durch einen Namen, der innerhalb der Azure-Region eindeutig ist. Weitere Informationen zu den Benennungsregeln finden Sie unter Endpunktgrenzwerte.
Führen Sie für Linux diesen Befehl aus:
export ENDPOINT_NAME=endpoint-`echo $RANDOM`
Konfigurieren des Endpunkts
Zum Definieren des Endpunkts und der Bereitstellung verwendet dieser Artikel die Azure Resource Manager-Vorlagen online-endpoint.json und online-endpoint-deployment.json. Informationen zum Definieren eines Onlineendpunkts und einer Bereitstellung finden Sie im Abschnitt Bereitstellen in Azure.
Definieren der Bereitstellung
Eine Einrichtung ist ein Satz von Ressourcen, die für das Hosting des Modells erforderlich sind, das die eigentliche Inferenz durchführt. In diesem Beispiel stellen Sie ein Scikit-Learn-Modell bereit, das eine Regression durchführt, und verwenden ein Scoring-Skript score.py, um das Modell bei einer bestimmten Eingabeanforderung auszuführen.
Informationen zu den wichtigsten Attributen einer Bereitstellung finden Sie unter Onlinebereitstellungen.
Konfigurieren einer Bereitstellung
Ihre Bereitstellungskonfiguration verwendet den Speicherort des Modells, das Sie bereitstellen möchten.
Der folgende Codeschnipsel zeigt die Datei endpoints/online/managed/sample/blue-deployment.yml mit allen erforderlichen Eingaben zum Konfigurieren einer Bereitstellung:
Die Datei blue-deployment.yml spezifiziert die folgenden Bereitstellungsattribute:
model – gibt die Modelleigenschaften inline an, wobei der path verwendet wird (wo Dateien hochgeladen werden sollen). Die CLI lädt die Modelldateien automatisch hoch und registriert das Modell mit einem automatisch generierten Namen.
environment – mithilfe von Inlinedefinitionen, die den Speicherort zum Hochladen von Dateien enthalten, lädt die CLI die Datei conda.yaml automatisch hoch und registriert die Umgebung. Um die Umgebung zu erstellen, verwendet die Bereitstellung image (in diesem Beispiel ist es mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) für das Basisimage, und die conda_file Abhängigkeiten werden über dem Basisimage installiert.
code_configuration – während der Bereitstellung werden die lokalen Dateien wie die Python-Quelle für das Bewertungsmodell aus der Entwicklungsumgebung hochgeladen.
So verwenden Sie Kubernetes-Endpunkte anstelle von verwalteten Onlineendpunkten als Computeziel:
Erstellen Sie Ihren Kubernetes-Cluster, und fügen Sie ihn mithilfe von Azure Machine Learning Studio als Computeziel an Ihren Azure Machine Learning-Arbeitsbereich an.
Verwenden Sie den YAML-Endpunkt, um Kubernetes anstelle des verwalteten YAML-Endpunkts als Ziel zu verwenden. Sie müssen den YAML-Code bearbeiten, um den Wert von compute in den Namen Ihres registrierten Computeziels zu ändern. Sie können diese deployment.yaml verwenden, die zusätzliche Eigenschaften aufweist, die für eine Kubernetes-Bereitstellung gelten.
Alle Befehle, die in diesem Artikel für verwaltete Onlineendpunkte verwendet werden, gelten auch für Kubernetes-Endpunkte, mit Ausnahme der folgenden Funktionen, die nicht für Kubernetes-Endpunkte gelten:
Model – gibt die Modelleigenschaften inline an, wobei der path verwendet wird (wo Dateien hochgeladen werden sollen). Das SDK lädt die Modelldateien automatisch hoch und registriert das Modell mit einem automatisch generierten Namen.
Environment – mithilfe von Inlinedefinitionen, die den Speicherort zum Hochladen von Dateien enthalten, lädt das SDK die Datei conda.yaml automatisch hoch und registriert die Umgebung. Um die Umgebung zu erstellen, verwendet die Bereitstellung image (in diesem Beispiel ist es mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) für das Basisimage, und die conda_file Abhängigkeiten werden über dem Basisimage installiert.
CodeConfiguration – während der Bereitstellung werden die lokalen Dateien wie die Python-Quelle für das Bewertungsmodell aus der Entwicklungsumgebung hochgeladen.
Weitere Informationen zur Definition der Onlinebereitstellung finden Sie unter OnlineDeployment Class.
Konfigurieren einer Bereitstellung
Wenn Sie die Bereitstellung in Azure durchführen, erstellen Sie einen Endpunkt und eine Bereitstellung, die sie diesem hinzufügen. Zu diesem Zeitpunkt werden Sie aufgefordert, Namen für den Endpunkt und die Bereitstellung anzugeben.
Konfigurieren der Bereitstellung
Zum Definieren des Endpunkts und der Bereitstellung verwendet dieser Artikel die Azure Resource Manager-Vorlagen online-endpoint.json und online-endpoint-deployment.json. Informationen zum Definieren eines Onlineendpunkts und einer Bereitstellung finden Sie im Abschnitt Bereitstellen in Azure.
Grundlegendes zum Bewertungsskript
Tipp
Das Format des Bewertungsskripts für Onlineendpunkte entspricht dem Format, das in der vorherigen Version der CLI und im Python SDK verwendet wurde.
Das in code_configuration.scoring_script angegebene Bewertungsskript muss über eine init()-Funktion und eine run()-Funktion verfügen.
Das Bewertungsskript muss über eine init()-Funktion und eine run()-Funktion verfügen.
Das Bewertungsskript muss über eine init()-Funktion und eine run()-Funktion verfügen.
Das Bewertungsskript muss über eine init()-Funktion und eine run()-Funktion verfügen. In diesem Beispiel wird die Datei score.py verwendet.
Wenn Sie eine Vorlage für die Bereitstellung verwenden, müssen Sie zuerst die Bewertungsdateien in einen Azure-Blobspeicher hochladen und dann registrieren:
Im folgenden Code wird der Azure CLI-Befehl az storage blob upload-batch verwendet, um die Bewertungsdateien hochzuladen:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s cli/endpoints/online/model-1/onlinescoring --account-name $AZURE_STORAGE_ACCOUNT
Mit dem folgenden Code wird der Code mithilfe einer Vorlage registriert:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/code-version.json \
--parameters \
workspaceName=$WORKSPACE \
codeAssetName="score-sklearn" \
codeUri="https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score"
In diesem Beispiel wird die Datei score.py verwendet: score.py
import os
import logging
import json
import numpy
import joblib
def init():
"""
This function is called when the container is initialized/started, typically after create/update of the deployment.
You can write the logic here to perform init operations like caching the model in memory
"""
global model
# AZUREML_MODEL_DIR is an environment variable created during deployment.
# It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
# Please provide your model's folder name if there is one
model_path = os.path.join(
os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
)
# deserialize the model file back into a sklearn model
model = joblib.load(model_path)
logging.info("Init complete")
def run(raw_data):
"""
This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
In the example we extract the data from the json input and call the scikit-learn model's predict()
method and return the result back
"""
logging.info("model 1: request received")
data = json.loads(raw_data)["data"]
data = numpy.array(data)
result = model.predict(data)
logging.info("Request processed")
return result.tolist()
Die init()-Funktion wird aufgerufen, wenn der Container initialisiert oder gestartet wird. Die Initialisierung erfolgt in der Regel kurz nach dem Erstellen oder Aktualisieren der Bereitstellung. Die Funktion init ist der Ort, um Logik für globale Initialisierungsvorgänge wie das Zwischenspeichern des Modells im Arbeitsspeicher zu schreiben (wie in der Datei score.py gezeigt).
Die Funktion run() wird jedes Mal, wenn der Endpunkts aufgerufen wird, aufgerufen, und führt die tatsächliche Bewertung und Vorhersage aus. In dieser Datei score.py extrahiert die Funktion run() Daten aus einer JSON-Eingabe, ruft die Methode predict() des Scikit-Learn-Modells auf und gibt dann das Vorhersageergebnis zurück.
Lokales Bereitstellen und Debuggen mithilfe eines lokalen Endpunkts
Wir empfehlen dringend, dass Sie Ihren Endpunkt lokal testen, indem Sie Ihren Code und Ihre Konfiguration validieren und debuggen, bevor Sie ihn in Azure bereitstellen. Die Azure CLI und das Python-SDK unterstützen lokale Endpunkte und Bereitstellungen, während Azure Machine Learning Studio und ARM-Vorlagen dies nicht tun.
Für die lokale Bereitstellung muss die Docker-Engine installiert sein und ausgeführt werden. Die Docker-Engine wird in der Regel gestartet, wenn der Computer gestartet wird. Wenn dies nicht der Fall ist, können Sie die Problembehandlung für die Docker-Engine durchführen.
Tipp
Sie können das Python-Paket von Azure Machine Learning für HTTP-Rückschlussserver verwenden, um Ihr Bewertungsskript lokal und ohne Docker-Engine zu debuggen. Das Debuggen mit dem Rückschlussserver hilft beim Debuggen des Bewertungsskripts vor der Bereitstellung auf lokalen Endpunkten, sodass Sie beim Debuggen nicht von der Konfiguration der Bereitstellungscontainer abhängig sind.
Weitere Informationen zum lokalen Debuggen von Onlineendpunkten vor der Bereitstellung in Azure finden Sie unter Debuggen von Onlineendpunkten.
Lokales Bereitstellen des Modells
Erstellen Sie zunächst einen Endpunkt. Optional können Sie für einen lokalen Endpunkt diesen Schritt überspringen und die Bereitstellung (nächster Schritt) direkt erstellen, wodurch wiederum die erforderlichen Metadaten erstellt werden. Die lokale Bereitstellung von Modellen ist für Entwicklungs- und Testzwecke nützlich.
Das Studio unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Die Vorlage unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Erstellen Sie nun eine Bereitstellung mit dem Namen blue unter dem Endpunkt.
Das local=True-Flag weist das SDK an, den Endpunkt in der Docker-Umgebung bereitzustellen.
Das Studio unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Die Vorlage unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Das Studio unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Die Vorlage unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Die folgende Tabelle enthält die möglichen Werte für provisioning_state:
Wert
Beschreibung
Wird erstellt
Die Ressource wird erstellt.
Wird aktualisiert
Die Ressource wird aktualisiert.
Wird gelöscht.
Die Ressource wird gelöscht.
Erfolgreich
Der Vorgang zum Erstellen/Aktualisieren war erfolgreich.
Fehler
Fehler beim Vorgang zum Erstellen/Aktualisieren/Löschen.
Aufrufen des lokalen Endpunkts zum Bewerten von Daten mit Ihrem Modell
Rufen Sie den Endpunkt auf, um das Modell mithilfe des Befehls invoke und der Übergabe von in einer JSON-Datei gespeicherten Abfrageparametern zu bewerten:
az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Wenn Sie einen REST-Client (z. B. curl) verwenden möchten, müssen Sie über den Bewertungs-URI verfügen. Führen Sie az ml online-endpoint show --local -n $ENDPOINT_NAME aus, um den Bewertungs-URI abzurufen. Suchen Sie in den zurückgegebenen Daten das Attribut scoring_uri.
Rufen Sie den Endpunkt auf, um das Modell mithilfe des Befehls invoke und der Übergabe von in einer JSON-Datei gespeicherten Abfrageparametern zu bewerten.
Wenn Sie einen REST-Client (z. B. curl) verwenden möchten, müssen Sie über den Bewertungs-URI verfügen. Führen Sie den folgenden Code aus, um den Bewertungs-URI abzurufen. Suchen Sie in den zurückgegebenen Daten das Attribut scoring_uri.
Das Studio unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Die Vorlage unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Überprüfen der Protokolle hinsichtlich der Ausgaben des Aufrufvorgangs
In der score.py-Beispieldatei protokolliert die run()-Methode einige Ausgaben in der Konsole.
Das Studio unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Die Vorlage unterstützt keine lokalen Endpunkte. Schritte zum lokalen Testen des Endpunkts finden Sie auf den Registerkarten für die Azure CLI oder Python.
Bereitstellen Ihres Onlineendpunkts in Azure
Stellen Sie als nächstes Ihren Onlineendpunkt in Azure bereit. Als bewährte Methode für die Produktion empfehlen wir, das Modell und die Umgebung zu registrieren, das Sie in Ihrer Bereitstellung verwenden werden.
Registrieren Ihres Modells und Ihrer Umgebung
Es wird empfohlen, Ihr Modell und Ihre Umgebung vor der Bereitstellung in Azure zu registrieren, damit Sie ihre registrierten Namen und Versionen während der Bereitstellung angeben können. Wenn Sie Ihre Ressourcen registrieren, können Sie sie wiederverwenden, ohne sie jedes Mal hochladen zu müssen, wenn Sie Bereitstellungen erstellen, und erhöhen so die Reproduzierbarkeit und Nachvollziehbarkeit.
Hinweis
Anders als bei der Bereitstellung in Azure können Sie bei der lokalen Bereitstellung keine registrierten Modelle und Umgebungen verwenden. Vielmehr verwendet die lokale Bereitstellung lokale Modelldateien und nutzt Umgebungen mit ausschließlich lokalen Dateien.
Für die Bereitstellung in Azure können Sie entweder lokale oder registrierte Ressourcen (Modelle und Umgebungen) verwenden. In diesem Abschnitt des Artikels werden für die Bereitstellung in Azure registrierte Ressourcen verwendet, aber Sie haben auch die Möglichkeit, stattdessen lokale Ressourcen zu verwenden. Ein Beispiel für eine Bereitstellungskonfiguration, bei der lokale Dateien hochgeladen werden, um sie für die lokale Bereitstellung zu verwenden, finden Sie unter Konfigurieren einer Bereitstellung.
Um das Modell und die Umgebung zu registrieren, verwenden Sie das Formular model: azureml:my-model:1 oder environment: azureml:my-env:1.
Zur Registrierung können Sie die YAML-Definitionen von model und environment in separate YAML-Dateien extrahieren und die Befehle az ml model create und az ml environment create verwenden. Führen Sie az ml model create -h und az ml environment create -h aus, um mehr über diese Befehle zu erfahren.
Erstellen Sie eine YAML-Definition für das Modell:
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="../../model-1/model/",
type=AssetTypes.CUSTOM_MODEL,
name="my-model",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
Registrieren Sie die Umgebung:
from azure.ai.ml.entities import Environment
env_docker_conda = Environment(
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
conda_file="../../model-1/environment/conda.yaml",
name="my-env",
description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)
Eine Modellregistrierung ist eine logische Entität im Arbeitsbereich, die eine einzelne Modelldatei oder ein Verzeichnis mit mehreren Dateien enthalten kann. In der Produktion empfiehlt es sich, das Modell und die Umgebung zu registrieren. Bevor Sie den Endpunkt und die Bereitstellung in diesem Artikel erstellen, sollten Sie den Modellordner registrieren, der das Modell enthält.
Gehen Sie wie folgt vor, um das Beispielmodell zu registrieren:
Wählen Sie auf der linken Navigationsleiste die Seite Modelle aus.
Wählen Sie Registrieren und dann Aus lokalen Dateien aus.
Wählen Sie unter Modelltyp die Option Nicht angegebener Typ aus.
Wählen Sie Durchsuchen und anschließend Ordner durchsuchen aus.
Wählen Sie den Ordner \azureml-examples\cli\endpoints\online\model-1\model aus der lokalen Kopie des Repositorys aus, das Sie zuvor geklont oder heruntergeladen haben. Wählen bei entsprechender Aufforderung die Option Hochladen aus, und warten Sie, bis der Upload abgeschlossen ist.
Wählen Sie nach Abschluss des Ordneruploads die Option Weiter aus.
Geben Sie einen Anzeigenamen für das Modell ein. Bei den Schritten in diesem Artikel wird davon ausgegangen, dass der Name des Modells model-1 lautet.
Wählen Sie Weiter und dann Registrieren aus, um die Registrierung abzuschließen.
Wählen Sie in der linken Navigationsleiste die Seite Umgebungen aus.
Klicken Sie auf Erstellen.
Geben Sie auf der Seite „Einstellungen“ einen Namen für die Umgebung ein, z. B. my-env.
Wählen Sie für „Umgebungsquelle auswählen“ die Option Vorhandenes Docker-Image mit optionaler Conda-Quelle verwenden aus.
Wählen Sie Weiter aus, um zum Abschnitt „Anpassen“ zu gelangen.
Kopieren Sie die Inhalte der Datei \azureml-examples\cli\endpoints\online\model-1\environment\conda.yaml aus der lokalen Kopie des Repository, das Sie zuvor geklont oder heruntergeladen haben.
Fügen Sie den Inhalt in das Textfeld ein.
Wählen Sie Weiter aus, bis Sie zur Seite „Überprüfen“ gelangen.
Wählen Sie Erstellen aus.
Weitere Informationen zum Erstellen einer Umgebung im Studio finden Sie unter Erstellen einer Umgebung.
Um das Modell mithilfe einer Vorlage zu registrieren, müssen Sie zuerst die Modelldatei in einen Azure-Blobspeicher hochladen. Im folgenden Beispiel wird der Befehl az storage blob upload-batch verwendet, um eine Datei in den Standardspeicher für Ihren Arbeitsbereich hochzuladen:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT
Verwenden Sie nach dem Hochladen der Datei die Vorlage, um eine Modellregistrierung zu erstellen. Im folgenden Beispiel enthält der Parameter modelUri den Pfad zum Modell:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/model-version.json \
--parameters \
workspaceName=$WORKSPACE \
modelAssetName="sklearn" \
modelUri="azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl"
Teil der Umgebung ist eine Conda-Datei, die die Modellabhängigkeiten angibt, die zum Hosten des Modells erforderlich sind. Im folgenden Beispiel wird veranschaulicht, wie der Inhalt der Conda-Datei in Umgebungsvariablen eingelesen wird:
Im folgenden Beispiel wird veranschaulicht, wie die Vorlage zum Registrieren der Umgebung verwendet wird. Der Inhalt der Conda-Datei aus dem vorherigen Schritt wird mithilfe des Parameters condaFile an die Vorlage übergeben:
Verwenden Sie die registrierten Ressourcen (Modell und Umgebung) in Ihrer Definition für die Bereitstellung. Der folgende Codeschnipsel zeigt die Datei endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml mit allen erforderlichen Eingaben zum Konfigurieren einer Bereitstellung:
Wenn Sie im Studio die Bereitstellung durchführen, erstellen Sie einen Endpunkt und eine Bereitstellung, die sie diesem hinzufügen. Zu diesem Zeitpunkt werden Sie aufgefordert, Namen für den Endpunkt und die Bereitstellung anzugeben.
Zum Definieren des Endpunkts und der Bereitstellung verwendet dieser Artikel die Azure Resource Manager-Vorlagen online-endpoint.json und online-endpoint-deployment.json. Informationen zum Definieren eines Onlineendpunkts und einer Bereitstellung finden Sie im Abschnitt Bereitstellen in Azure.
Verwenden verschiedener CPU- und GPU-Instanztypen und -images
Sie können die CPU- oder GPU-Instanztypen und -Images in Ihrer Bereitstellungsdefinition sowohl für die lokale Bereitstellung als auch für die Bereitstellung in Azure angeben.
Ihre Bereitstellungsdefinition in der Datei blue-deployment-with-registered-assets.yml hat eine universelle Instanz vom Typ Standard_DS3_v2 und ein Nicht-GPU-Docker-Image mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest verwendet. Für GPU-Compute wählen Sie eine GPU-Computetyp-SKU und ein GPU-Docker-Image aus.
Sie können die CPU- oder GPU-Instanztypen und -Images in Ihrer Bereitstellungskonfiguration sowohl für die lokale Bereitstellung als auch für die Bereitstellung in Azure angeben.
Zuvor haben Sie eine Bereitstellung konfiguriert, die eine allgemeine Typ Standard_DS3_v2-Instanz und ein Nicht-GPU-Docker-Image mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest verwendet hat. Für GPU-Compute wählen Sie eine GPU-Computetyp-SKU und ein GPU-Docker-Image aus.
Wenn Sie das Studio für die Bereitstellung in Azure verwenden, werden Sie aufgefordert, die Compute-Eigenschaften (Instanztyp und Anzahl der Instanzen) und die Umgebung anzugeben, die für Ihre Bereitstellung verwendet werden sollen.
Die vorherige Registrierung der Umgebung gibt ein Nicht-GPU-Docker-Image mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 an, indem der Wert mithilfe des Parameters dockerImage an die environment-version.json-Vorlage übergeben wird. Geben Sie für eine GPU-Compute-Instanz einen Wert für ein GPU-Docker-Image für die Vorlage an (mithilfe des dockerImage-Parameters), und geben Sie eine GPU-Compute vom Typ SKU für die online-endpoint-deployment.json-Vorlage an (mithilfe des skuName-Parameters).
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Erstellen Sie die Bereitstellung mit dem Namen blue unter dem Endpunkt.
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
Die Bereitstellungserstellung kann bis zu 15 Minuten dauern, je nachdem, ob die zugrunde liegende Umgebung bzw. das zugrunde liegende Image zum ersten Mal erstellt wird. Nachfolgende Bereitstellungen, die dieselbe Umgebung verwenden, werden schneller verarbeitet.
Tipp
Wenn Sie es vorziehen, Ihre CLI-Konsole nicht zu blockieren, können Sie das Flag --no-wait an den Befehl anhängen. Durch diese Option wird jedoch die interaktive Anzeige des Bereitstellungsstatus nicht mehr angezeigt.
Wichtig
Das Flag --all-traffic im Code az ml online-deployment create, der zum Erstellen der Bereitstellung verwendet wird, ordnet 100 % des Endpunktdatenverkehrs der neu erstellten blauen Bereitstellung zu. Obwohl dies für Entwicklungs- und Testzwecke hilfreich ist, sollten Sie für die Produktion den Datenverkehr zur neuen Bereitstellung über einen expliziten Befehl weiterleiten. Beispiel: az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".
Erstellen des Endpunkts:
Mit dem zuvor definierten endpoint und dem zuvor erstellen MLClient können Sie nun den Endpunkt im Arbeitsbereich erstellen. Dieser Befehl startet die Endpunkterstellung und gibt eine Bestätigungsantwort zurück, während die Endpunkterstellung fortgesetzt wird.
Mit dem zuvor definierten blue_deployment_with_registered_assets und dem zuvor erstellen MLClient können Sie nun die Bereitstellung im Arbeitsbereich erstellen. Dieser Befehl startet die Bereitstellungserstellung und gibt eine Bestätigungsantwort zurück, während die Bereitstellungserstellung fortgesetzt wird.
Wenn Sie Ihre Python-Konsole nicht blockieren möchten, können Sie den Parametern das Flag no_wait=True hinzufügen. Durch diese Option wird jedoch die interaktive Anzeige des Bereitstellungsstatus nicht mehr angezeigt.
Erstellen eines verwalteten Onlineendpunkts und einer Bereitstellung
Verwenden Sie Studio, um direkt in Ihrem Browser einen verwalteten Onlineendpunkt zu erstellen. Beim Erstellen eines verwalteten Onlineendpunkts in Studio müssen Sie eine erste Bereitstellung definieren. Es ist nicht möglich, einen leeren verwalteten Onlineendpunkt zu erstellen.
Ein verwalteter Onlineendpunkt kann im Studio unter anderem über die Seite Modelle erstellt werden. Bei dieser Methode kann ein Modell auch ganz einfach einer bereits vorhandenen verwalteten Onlinebereitstellung hinzugefügt werden. Gehen Sie wie folgt vor, um das Modell model-1 bereitzustellen, das Sie zuvor im Abschnitt Registrieren Ihres Modells und Ihrer Umgebung registriert haben:
Wählen Sie auf der linken Navigationsleiste die Seite Modelle aus.
Wählen Sie das Modell model-1 aus, indem Sie den Kreis neben dem Modellnamen mit einem Häkchen versehen.
Wählen Sie Bereitstellen>Echtzeitendpunkt aus.
Daraufhin wird ein Fenster geöffnet, in dem Sie Details zu Ihrem Endpunkt angeben können.
Geben Sie einen Endpunktnamen ein, der innerhalb der Azure-Region eindeutig ist. Weitere Informationen zu den Benennungsregeln finden Sie unter Endpunktgrenzwerte.
Behalten Sie die Standardauswahl bei: Verwaltete für den Computetyp.
Behalten Sie die Standardoptionen bei: Schlüsselbasierte Authentifizierung für den Authentifizierungstyp. Weitere Informationen zur Authentifizierung finden Sie unter Authentifizieren von Clients bei einem Onlineendpunkt.
Wählen Sie Weiter aus, bis die Seite „Bereitstellung“ angezeigt wird. Schalten Sie hier Application Insights-Diagnose auf „Aktiviert“, damit Sie später im Studio Diagramme zu den Aktivitäten Ihres Endpunkts anzeigen und mit Application Insights Metriken und Protokolle analysieren können.
Wählen Sie Weiter aus, um zur Seite „Code und Umgebung“ zu wechseln. Wählen Sie hier die folgenden Optionen aus:
Wählen Sie ein Bewertungsskript für den Rückschluss aus: Suchen und wählen Sie die Datei \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py aus dem Repository aus, das Sie zuvor geklont oder heruntergeladen haben.
Abschnitt Umgebung auswählen: Wählen Sie Benutzerdefinierte Umgebungen aus, und wählen Sie dann die Umgebung my-env:1 aus, die Sie zuvor erstellt haben.
Wählen Sie Weiter aus, akzeptieren Sie die Standardeinstellungen, bis Sie zum Erstellen der Bereitstellung aufgefordert werden.
Überprüfen Sie Ihre Bereitstellungseinstellungen, und wählen Sie die Schaltfläche Erstellen aus.
Alternativ können Sie einen verwalteten Onlineendpunkt auch über die Seite Endpunkte im Studio erstellen.
Wählen Sie in der linken Navigationsleiste die Seite Endpunkte aus.
Wählen Sie + Erstellen aus.
Daraufhin wird ein Fenster geöffnet, in dem Sie Ihr Modell auswählen und Details zu Ihrem Endpunkt und zu Ihrer Bereitstellung angeben können. Geben Sie die Einstellungen für Ihren Endpunkt und die Bereitstellung wie zuvor beschrieben ein und wählen Sie dann für der Bereitstellung Erstellen aus.
Verwenden Sie die Vorlage, um einen Onlineendpunkt zu erstellen:
Listen Sie alle Endpunkte im Arbeitsbereich in einem Tabellenformat mit der Methode list auf:
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
Die Methode gibt eine Liste (einen Iterator) von ManagedOnlineEndpoint-Entitäten zurück.
Sie können weitere Informationen abrufen, indem Sie weitere Parameter angeben. Geben Sie beispielsweise die Liste der Endpunkte wie eine Tabelle aus:
print("Kind\tLocation\tName")
print("-------\t----------\t------------------------")
for endpoint in ml_client.online_endpoints.list():
print(f"{endpoint.kind}\t{endpoint.location}\t{endpoint.name}")
Anzeigen von verwalteten Onlineendpunkten
Sie können alle Ihre verwalteten Onlineendpunkte auf der Seite Endpunkte anzeigen. Auf der Seite Details des Endpunkts finden Sie wichtige Informationen wie Endpunkt-URI, Status, Testtools, Aktivitätsmonitore, Bereitstellungsprotokolle und Beispielnutzungscode:
Wählen Sie in der linken Navigationsleiste die Option Endpunkte aus. Hier sehen Sie eine Liste aller Endpunkte im Arbeitsbereich.
(Optional) Erstellen Sie unter Computetyp einen Filter, um nur die Computetypen für Verwaltet anzuzeigen.
Wählen Sie den Namen eines Endpunkts aus, um die Seite Details des Endpunkts anzuzeigen.
Tipp
Vorlagen sind zwar nützlich für die Bereitstellung von Ressourcen, können aber nicht zum Auflisten, Anzeigen oder Aufrufen von Ressourcen verwendet werden. Verwenden Sie die Azure CLI, das Python-SDK oder das Studio, um diese Vorgänge auszuführen. Der folgende Code verwendet die Azure CLI.
Verwenden Sie den Befehl show, um Informationen für den Endpunkt und die Bereitstellung im provisioning_state anzuzeigen:
az ml online-endpoint show -n $ENDPOINT_NAME
Listen Sie alle Endpunkte im Arbeitsbereich in einem Tabellenformat mit dem Befehl list auf:
az ml online-endpoint list --output table
Überprüfen des Status der Onlinebereitstellung
Überprüfen Sie die Protokolle, um zu prüfen, ob das Modell ohne Fehler bereitgestellt wurde.
Verwenden Sie den folgenden CLI-Befehl, um die Protokollausgabe für einen Container anzuzeigen:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Standardmäßig werden Protokolle per Pull vom Rückschlussservercontainer abgerufen. Um Protokolle aus dem Container für den Speicherinitialisierer anzuzeigen, fügen Sie das --container storage-initializer-Flag hinzu. Weitere Informationen zu Bereitstellungsprotokollen finden Sie unter Abrufen von Containerprotokollen.
Sie können die Protokollausgabe mit der Methode get_logs anzeigen:
Standardmäßig werden Protokolle per Pull vom Rückschlussservercontainer abgerufen. Um Protokolle aus dem Container für den Speicherinitialisierer anzuzeigen, fügen Sie die container_type="storage-initializer"-Option hinzu. Weitere Informationen zu Bereitstellungsprotokollen finden Sie unter Abrufen von Containerprotokollen.
Um die Protokollausgabe anzuzeigen, wählen Sie auf der Seite des Endpunkts die Registerkarte Protokolle aus. Wenn Sie mehrere Bereitstellungen in Ihrem Endpunkt haben, verwenden Sie die Dropdownliste, um die Bereitstellung auszuwählen, deren Protokoll Sie anzeigen wollen.
Standardmäßig werden Protokolle per Pull vom Rückschlussserver abgerufen. Um Protokolle aus dem Container für den Speicherinitialisierer abzurufen, verwenden Sie die Azure CLI oder das Python-SDK. (Details finden Sie auf der jeweiligen Registerkarte). Die Protokolle des Speicherinitialisierungs-Containers enthalten Informationen dazu, ob das Herunterladen der Code- und Modelldaten in den Container erfolgreich war. Weitere Informationen zu Bereitstellungsprotokollen finden Sie unter Abrufen von Containerprotokollen.
Tipp
Vorlagen sind zwar nützlich für die Bereitstellung von Ressourcen, können aber nicht zum Auflisten, Anzeigen oder Aufrufen von Ressourcen verwendet werden. Verwenden Sie die Azure CLI, das Python-SDK oder das Studio, um diese Vorgänge auszuführen. Der folgende Code verwendet die Azure CLI.
Verwenden Sie den folgenden CLI-Befehl, um die Protokollausgabe für einen Container anzuzeigen:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Standardmäßig werden Protokolle per Pull vom Rückschlussservercontainer abgerufen. Um Protokolle aus dem Container für den Speicherinitialisierer anzuzeigen, fügen Sie das --container storage-initializer-Flag hinzu. Weitere Informationen zu Bereitstellungsprotokollen finden Sie unter Abrufen von Containerprotokollen.
Aufrufen des Endpunkts zum Bewerten von Daten mit Ihrem Modell
Verwenden Sie entweder den Befehl invoke oder einen REST-Client Ihrer Wahl, um den Endpunkt aufzurufen und einige Daten zu bewerten:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Rufen Sie den Schlüssel ab, der für die Authentifizierung beim Endpunkt verwendet wird:
Tipp
Sie können steuern, welche Microsoft Entra-Sicherheitsprinzipale den Authentifizierungsschlüssel abrufen können, indem Sie diese einer benutzerdefinierten Rolle zuweisen, die Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action und Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action zulässt. Weitere Informationen zum Verwalten der Autorisierung für Arbeitsbereiche finden Sie unter Verwalten des Zugriffs auf einen Azure Machine Learning-Arbeitsbereich.
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
Verwenden Sie curl, um Daten zu bewerten.
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
Beachten Sie, dass Sie die Befehle show und get-credentials verwenden, um die Anmeldeinformationen für die Authentifizierung zu erhalten. Beachten Sie zudem, dass Sie das Flag --query verwenden, um nur die Attribute zu filtern, die benötigt werden. Weitere Informationen zum Flag --query finden Sie unter Abfragen der Azure CLI-Befehlsausgabe.
Führen Sie get-logs erneut aus, um die Aufrufprotokolle anzuzeigen.
Mithilfe des zuvor erstellten MLClient erhalten wir einen Handle für den Endpunkt. Der Endpunkt kann anschließend mithilfe des Befehls invoke mit den folgenden Parametern aufgerufen werden:
endpoint_name – Name des Endpunkts
request_file – Datei mit Anforderungsdaten
deployment_name – Name der spezifischen Bereitstellung, die in einem Endpunkt getestet werden soll
Senden Sie eine Beispielanforderung mithilfe einer JSON-Datei.
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Verwenden Sie auf der Seite mit den Endpunktdetails die Registerkarte Test, um Ihre verwaltete Onlinebereitstellung zu testen. Geben Sie eine Beispieleingabe ein, und zeigen Sie die Ergebnisse an.
Wählen Sie auf der Detailseite des Endpunkts die Registerkarte Test aus.
Wählen Sie in der Dropdownliste die Bereitstellung aus, die Sie testen möchten.
Vorlagen sind zwar nützlich für die Bereitstellung von Ressourcen, können aber nicht zum Auflisten, Anzeigen oder Aufrufen von Ressourcen verwendet werden. Verwenden Sie die Azure CLI, das Python-SDK oder das Studio, um diese Vorgänge auszuführen. Der folgende Code verwendet die Azure CLI.
Verwenden Sie entweder den Befehl invoke oder einen REST-Client Ihrer Wahl, um den Endpunkt aufzurufen und einige Daten zu bewerten:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file cli/endpoints/online/model-1/sample-request.json
Wenn Sie den Code, das Modell oder die Umgebung aktualisieren möchten, aktualisieren Sie die YAML-Datei und führen Sie dann den Befehl az ml online-endpoint update aus.
Hinweis
Wenn Sie die Anzahl der Instanzen (zum Skalieren Ihrer Bereitstellung) zusammen mit anderen Modelleinstellungen (z. B. Code, Modell oder Umgebung) in einem einzigen update-Befehl aktualisieren, wird der Skalierungsvorgang zuerst ausgeführt, dann werden die anderen Aktualisierungen angewendet. Es eine bewährte Methode, diese Vorgänge in einer Produktionsumgebung separat durchzuführen.
Informationen zur Funktionsweise von update:
Öffnen Sie die Datei online/model-1/onlinescoring/score.py.
Ändern Sie die letzte Zeile der init()-Funktion: Fügen Sie nach logging.info("Init complete") einfach logging.info("Updated successfully") hinzu.
Speichern Sie die Datei .
Führen Sie den folgenden Befehl aus:
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
Hinweis
Das Aktualisieren mithilfe von YAML ist deklarativ. Dies bedeutet, dass Änderungen am YAML-Code in den zugrunde liegenden Azure Resource Manager-Ressourcen (Endpunkte und Bereitstellungen) widergespiegelt werden. Ein deklarativer Ansatz nutzt GitOps: Alle Änderungen an Endpunkten bzw. Bereitstellungen (auch instance_count) erfolgen über den YAML-Code.
Tipp
Sie können generische Aktualisierungsparameter, z. B. den --set-Parameter, mit dem CLI-Befehl update verwenden, um Attribute in Ihrer YAML-Datei außer Kraft zu setzen oder bestimmte Attribute festzulegen, ohne sie in der YAML-Datei zu übergeben. Die Verwendung von --set für einzelne Attribute ist besonders in Entwicklungs- und Testszenarien nützlich. Sie können das Flag --set instance_count=2 verwenden, um z. B. den instance_count-Wert für die erste Bereitstellung hochzuskalieren. Da die YAML-Datei jedoch nicht aktualisiert wird, unterstützt dieses Verfahren GitOps nicht.
Die Angabe der YAML-Datei ist NICHT obligatorisch. Wenn Sie beispielsweise unterschiedliche Parallelitätseinstellungen für eine bestimmte Bereitstellung testen möchten, können Sie zum Beispiel az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4versuchen. Dadurch werden alle vorhandenen Konfigurationen beibehalten und nur die angegebenen Parameter aktualisiert.
Da Sie die Funktion init() geändert haben, die ausgeführt wird, wenn der Endpunkt erstellt oder aktualisiert wird, wird sich die Meldung Updated successfully in den Protokollen befinden. Rufen Sie die Protokolle ab, indem Sie Folgendes ausführen:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Der Befehl update funktioniert auch mit lokalen Bereitstellungen. Verwenden Sie denselben az ml online-deployment update-Befehl mit dem Flag --local.
Wenn Sie den Code, das Modell oder die Umgebung aktualisieren möchten, aktualisieren Sie die Konfiguration, und führen Sie dann die Methode online_deployments.begin_create_or_update des MLClient aus, um eine Bereitstellung zu erstellen oder aktualisieren.
Hinweis
Wenn Sie die Anzahl der Instanzen (zum Skalieren Ihrer Bereitstellung) zusammen mit anderen Modelleinstellungen (z. B. Code, Modell oder Umgebung) in einer einzigen begin_create_or_update-Methode aktualisieren, wird der Skalierungsvorgang zuerst ausgeführt, dann werden die anderen Aktualisierungen angewendet. Es eine bewährte Methode, diese Vorgänge in einer Produktionsumgebung separat durchzuführen.
Informationen zur Funktionsweise von begin_create_or_update:
Öffnen Sie die Datei online/model-1/onlinescoring/score.py.
Ändern Sie die letzte Zeile der init()-Funktion: Fügen Sie nach logging.info("Init complete") einfach logging.info("Updated successfully") hinzu.
Da Sie die Funktion init() geändert haben, die ausgeführt wird, wenn der Endpunkt erstellt oder aktualisiert wird, wird sich die Meldung Updated successfully in den Protokollen befinden. Rufen Sie die Protokolle ab, indem Sie Folgendes ausführen:
Die Methode begin_create_or_update funktioniert auch mit lokalen Bereitstellungen. Verwenden Sie dieselbe Methode mit dem Flag local=True.
Derzeit können Sie mit Studio nur Updates für die Anzahl der Instanzen einer Bereitstellung vornehmen. Befolgen Sie die unten angegebene Anleitung, um eine einzelne Bereitstellung hoch- oder herunterzuskalieren, indem Sie die Anzahl von Instanzen anpassen:
Öffnen Sie die Detailseite des Endpunkts, und suchen Sie die Karte für die Bereitstellung, die Sie aktualisieren möchten.
Wählen Sie das Bearbeitungssymbol (Stiftsymbol) neben dem Namen der Bereitstellung aus.
Aktualisieren Sie die Anzahl der Instanzen, welche der Bereitstellung zugeordnet sind. Sie können zwischen Standard oder Zielauslastung für „Bereitstellungsskalierungstyp“ wählen.
Wenn Sie Standard auswählen, können Sie auch einen numerischen Wert für die Anzahl der Instanzen angeben.
Wenn Sie Zielauslastung auswählen, können Sie Werte angeben, die für Parameter bei der automatischen Skalierung der Bereitstellung verwendet werden sollen.
Wählen Sie Aktualisieren aus, um die Aktualisierung der Anzahl der Instanzen für Ihre Bereitstellung abzuschließen.
Es gibt derzeit keine Option zum Aktualisieren der Bereitstellung mithilfe einer ARM-Vorlage.
Hinweis
Das Update für die Bereitstellung in diesem Abschnitt ist ein Beispiel für ein direktes rollierendes Update.
Für einen verwalteten Onlineendpunkt wird die Bereitstellung auf die neue Konfiguration mit jeweils 20 % der Knoten aktualisiert. Das heißt, wenn die Bereitstellung über 10 Knoten verfügt, werden jeweils 2 Knoten aktualisiert.
Bei einem Kubernetes-Onlineendpunkt erstellt das System iterativ eine neue Bereitstellungsinstanz mit der neuen Konfiguration und löscht die alte.
Für die Verwendung in der Produktion sollten Sie die Blau-Grün-Bereitstellung in Betracht ziehen, die eine sicherere Alternative zum Aktualisieren eines Webdiensts bietet.
(Optional) Konfigurieren der automatischen Skalierung
Die automatische Skalierung führt automatisch die richtige Menge an Ressourcen aus, um die Last für Ihre Anwendung zu bewältigen. Verwaltete Onlineendpunkte unterstützen die automatische Skalierung durch die Integration in die Funktion für die automatische Skalierung vom Azure Monitor. Informationen zum Konfigurieren der automatischen Skalierung finden Sie unter Automatisches Skalieren von Onlineendpunkten.
(Optional) Überwachen der SLA mit Azure Monitor
Zum Anzeigen von Metriken und Festlegen von Warnungen auf der Grundlage Ihrer SLA führen Sie die Schritte aus, die unter Überwachen von Onlineendpunkten beschrieben sind.
(Optional) Integrieren mit Log Analytics
Der Befehl get-logs für die CLI oder die Methode get_logs für das SDK stellt nur die letzten paar hundert Protokollzeilen aus einer automatisch ausgewählten Instanz zur Verfügung. Log Analytics bietet jedoch eine Möglichkeit, Protokolle dauerhaft zu speichern und zu analysieren. Weitere Informationen zur Verwendung der Protokollierung finden Sie unter Überwachen von Onlineendpunkten.
Wenn Sie den Endpunkt und die Bereitstellung nicht verwenden wollen, sollten Sie diese löschen. Wenn Sie den Endpunkt löschen, werden auch alle zugrunde liegenden Bereitstellungen gelöscht.