High-Performance-Bereitstellung mit Triton Inference Server (Vorschau)
GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)
Hier erfahren Sie, wie Sie den NVIDIA Triton Inference Server in Azure Machine Learning mit Onlineendpunkten verwenden.
Triton ist eine Open-Source-Software mit mehreren Frameworks, die für Inferenzen optimiert ist. Es unterstützt beliebte maschinelle Lernsysteme wie TensorFlow, ONNX Runtime, PyTorch, NVIDIA TensorRT und andere. Sie kann für Ihre CPU- oder GPU-Arbeitslasten verwendet werden.
Es gibt hauptsächlich zwei Ansätze, mit denen Sie Triton-Modelle nutzen können, wenn Sie sie auf einem Onlineendpunkt bereitstellen: No-Code-Bereitstellung oder Full-Code-Bereitstellung (Bring your own container).
- Die No-Code-Bereitstellung für Triton-Modelle ist ein einfacher Weg, da Sie nur Triton-Modelle zur Bereitstellung mitbringen müssen.
- Die Full-Code-Bereitstellung (Bring your own container) für Triton-Modelle ist anspruchsvoller, da Sie die volle Kontrolle über die Anpassung der für den Triton Rückschluss-Server verfügbaren Konfigurationen haben.
Für beide Optionen führt der Triton-Rückschluss-Server basierend auf dem Triton-Modell, wie von NVIDIA definiert, einen Rückschluss durch. Beispielsweise können Ensemblemodelle für komplexere Szenarien verwendet werden.
Triton wird sowohl in verwalteten Onlineendpunkten als auch in Kubernetes-Onlineendpunkten unterstützt.
In diesem Artikel erfahren Sie, wie Sie ein Modell mithilfe der No-Code-Bereitstellung für Triton auf einem verwalteten Onlineendpunkt bereitstellen. Es werden Informationen zur Verwendung der CLI (Befehlszeile), des Python SDS v2 und des Azure Machine Learning Studio bereitgestellt. Wenn Sie die Konfiguration des Triton-Rückschluss-Servers weiter anpassen möchten, lesen Sie Verwenden eines benutzerdefinierten Containers zum Bereitstellen eines Modells und das BYOC-Beispiel für Triton (Bereitstellungsdefinition und End-to-End-Skript).
Hinweis
Die Nutzung des NVIDIA Triton Inference Server-Containers unterliegt dem NVIDIA AI Enterprise Software-Lizenzvertrag und kann 90 Tage lang ohne Enterprise-Produktabonnement verwendet werden. Weitere Informationen finden Sie unter NVIDIA AI Enterprise in Azure Machine Learning.
Voraussetzungen
Stellen Sie vor dem Ausführen der Schritte in diesem Artikel sicher, dass Sie über die folgenden erforderlichen Komponenten verfügen:
Die Azure CLI und die
ml
-Erweiterung der Azure CLI. Weitere Informationen finden Sie unter Installieren, Einrichten und Verwenden der CLI (v2).Wichtig
In den CLI-Beispielen in diesem Artikel wird davon ausgegangen, dass Sie die Bash-Shell (oder eine kompatible Shell) verwenden, beispielsweise über ein Linux-System oder ein Windows-Subsystem für Linux.
Ein Azure Machine Learning-Arbeitsbereich. Sofern noch nicht vorhanden, führen Sie die Schritte im Abschnitt Installieren, Einrichten und Verwenden der CLI (v2) aus, um einen Arbeitsbereich zu erstellen.
Eine funktionierende Python 3.8 (oder höher) Umgebung.
Sie müssen zusätzliche Python-Pakete für die Bewertung installiert haben und können sie mit dem folgenden Code installieren. Dazu gehören:
- Numpy: Eine Array- und numerische Computerbibliothek
- Triton Inference Server Client: Erleichtert Anforderungen an den Triton Inference Server
- Pillow: Eine Bibliothek für Bildvorgänge
- Gevent: Eine Netzwerkbibliothek, die beim Herstellen einer Verbindung mit dem Triton Server verwendet wird
pip install numpy
pip install tritonclient[http]
pip install pillow
pip install gevent
Zugang zu VMs der NCv3-Serie für Ihr Azure-Abonnement.
Wichtig
Möglicherweise müssen Sie eine Quotenerhöhung für Ihr Abonnement beantragen, bevor Sie diese Reihe von VMs verwenden können. Weitere Informationen finden Sie unter NCv3-series.
NVIDIA Triton Inference Server erfordert eine spezielle Modell-Repository-Struktur, in der es ein Verzeichnis für jedes Modell und Unterverzeichnisse für die Modellversion gibt. Der Inhalt der einzelnen Unterverzeichnisse der Modellversionen wird durch den Typ des Modells und die Anforderungen des Backends, das das Modell unterstützt, bestimmt. Um die gesamte Struktur des Modell-Repository zu sehen https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_repository.md#model-files
Die Informationen in diesem Dokument basieren auf der Verwendung eines im ONNX-Format gespeicherten Modells, so dass die Verzeichnisstruktur des Modell-Repositorys <model-repository>/<model-name>/1/model.onnx
lautet. Konkret führt dieses Modell eine Bildidentifizierung durch.
Die Informationen in diesem Artikel basieren auf Codebeispielen, die im Repository azureml-examples enthalten sind. Um die Befehle lokal auszuführen, ohne YAML und andere Dateien kopieren/einfügen zu müssen, klonen Sie das Repository, und wechseln Sie dann in das Verzeichnis cli
im Repository:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples
cd cli
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 übergeben müssen, verwenden Sie die folgenden Befehle. Ersetzen Sie die folgenden Parameter durch Werte für Ihre spezifische Konfiguration:
- Ersetzen Sie
<subscription>
durch Ihre Azure-Abonnement-ID. - Ersetzen Sie
<workspace>
durch den Namen Ihres Azure Machine Learning-Arbeitsbereichs. - Ersetzen Sie
<resource-group>
durch die Azure-Ressourcengruppe, die Ihren Arbeitsbereich enthält. - Ersetzen Sie
<location>
durch die Azure-Region, die Ihren Arbeitsbereich enthält.
Tipp
Mit dem Befehl az configure -l
können Sie die aktuellen Standardwerte anzeigen.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Definieren der Bereitstellungskonfiguration
GILT FÜR Azure CLI-ML-Erweiterung v2 (aktuell)
In diesem Abschnitt wird gezeigt, wie Sie mit der Azure CLI und der Machine Learning-Erweiterung (v2) auf verwalteten Onlineendpunkten bereitstellen können.
Wichtig
Für die Bereitstellung ohne Code in Triton wird das Testen über lokale Endpunkte derzeit nicht unterstützt.
Um zu vermeiden, dass Sie einen Pfad für mehrere Befehle eingeben müssen, verwenden Sie den folgenden Befehl, um eine
BASE_PATH
-Umgebungsvariable zu setzen. Diese Variable verweist auf das Verzeichnis, in dem sich das Modell und die zugehörigen YAML-Konfigurationsdateien befinden:BASE_PATH=endpoints/online/triton/single-model
Verwenden Sie den folgenden Befehl, um den Namen des zu erstellenden Endpunkts festzulegen. In diesem Beispiel wird ein zufälliger Name für den Endpunkt erstellt:
export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
Erstellen Sie eine YAML-Konfigurationsdatei für Ihren Endpunkt. Im folgenden Beispiel werden der Name und der Authentifizierungsmodus des Endpunkts konfiguriert. Der in den folgenden Befehlen verwendete Befehl befindet sich unter
/cli/endpoints/online/triton/single-model/create-managed-endpoint.yml
im azureml-examples-Repository, das Sie zuvor geklont haben:create-managed-endpoint.yaml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aml_token
Erstellen Sie eine YAML-Konfigurationsdatei für das Bereitstellen. Im folgenden Beispiel wird eine Bereitstellung mit dem Namen blue für den im vorherigen Schritt definierten Endpunkt konfiguriert. Der in den folgenden Befehlen verwendete Befehl befindet sich unter
/cli/endpoints/online/triton/single-model/create-managed-deployment.yml
im azureml-examples-Repository, das Sie zuvor geklont haben:Wichtig
Damit die Triton-Bereitstellung ohne Code (NCD) funktioniert, müssen die Einstellungen
type
auftriton_model
gesetzt werdentype: triton_model
. Weitere Informationen finden Sie unter CLI (v2)-Modell YAML-Schema.Diese Bereitstellung verwendet eine Standard_NC6s_v3-VM. Möglicherweise müssen Sie eine Quotenerhöhung für Ihr Abonnement beantragen, bevor Sie diese VM nutzen können. Weitere Informationen finden Sie unter NCv3-series.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-endpoint model: name: sample-densenet-onnx-model version: 1 path: ./models type: triton_model instance_count: 1 instance_type: Standard_NC6s_v3
Bereitstellen in Azure
GILT FÜR Azure CLI-ML-Erweiterung v2 (aktuell)
Um einen neuen Endpunkt unter Verwendung der YAML-Konfiguration zu erstellen, verwenden Sie den folgenden Befehl:
az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
Um die Bereitstellung mit der YAML-Konfiguration zu erstellen, verwenden Sie den folgenden Befehl:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
Testen des Endpunkts
GILT FÜR Azure CLI-ML-Erweiterung v2 (aktuell)
Sobald die Bereitstellung abgeschlossen ist, verwenden Sie den folgenden Befehl, um eine Bewertungsanfrage an den bereitgestellten Endpunkt zu stellen.
Tipp
Die Datei /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py
im azureml-examples Repo wird für die Bewertung verwendet. Das an den Endpunkt übermittelte Bild muss vorverarbeitet werden, um die Anforderungen an Größe, Typ und Format zu erfüllen, und nachverarbeitet werden, um das vorhergesagte Label anzuzeigen. Die triton_densenet_scoring.py
verwendet die tritonclient.http
-Bibliothek zur Kommunikation mit dem Triton-Inferenzserver. Diese Datei wird auf der Clientseite ausgeführt.
Um die Endpunktbewertungsuri zu erhalten, verwenden Sie den folgenden Befehl:
scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv) scoring_uri=${scoring_uri%/*}
Führen Sie den folgenden Befehl aus, um einen Authentifizierungsschlüssel abzurufen:
auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
Um Daten mit dem Endpunkt zu bewerten, verwenden Sie den folgenden Befehl. Er übermittelt das Bild eines Pfaus (https://aka.ms/peacock-pic) an den Endpunkt:
python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token --image_path $BASE_PATH/data/peacock.jpg
Die Antwort des Skripts ähnelt dem folgenden Text:
Is server ready - True Is model ready - True /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt 84 : PEACOCK
Löschen des Endpunkts und des Modells
GILT FÜR Azure CLI-ML-Erweiterung v2 (aktuell)
Wenn Sie mit dem Endpunkt fertig sind, verwenden Sie den folgenden Befehl, um ihn zu löschen:
az ml online-endpoint delete -n $ENDPOINT_NAME --yes
Führen Sie den folgenden Befehl aus, um Ihr Modell zu archivieren:
az ml model archive --name $MODEL_NAME --version $MODEL_VERSION
Nächste Schritte
Weitere Informationen finden Sie in den folgenden Artikeln:
- Bereitstellen von Modellen mit REST
- Erstellen und Verwenden von verwalteten Onlineendpunkten in Studio
- Sicherer Rollout für Onlineendpunkte
- Automatisches Skalieren verwalteter Onlineendpunkte
- Anzeigen der Kosten für einen verwalteten Azure Machine Learning-Onlineendpunkt
- Zugreifen auf Azure-Ressourcen mit einem verwalteten Onlineendpunkt und einer verwalteten Identität
- Problembehandlung für die Bereitstellung verwalteter Onlineendpunkte