Bereitstellung mit hoher Leistung mit Triton Inference Server (Vorschau)

GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)

GILT FÜR: Python SDK azure-ai-ml v2 (Vorschau)

Wichtig

SDK v2 ist derzeit als öffentliche Vorschauversion verfügbar. Die Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Erfahren Sie, wie Sie NVIDIA Triton Inference Server in Azure Machine Learning mit verwalteten Online-Endpunkten 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. Die No-Code-Bereitstellung für Triton-Modelle wird sowohl in verwalteten Onlineendpunkten als auch in Kubernetes Online-Endpunkten unterstützt.

In diesem Artikel erfahren Sie, wie Sie Triton und ein Modell auf einem verwalteten Online-Endpunkt einsetzen. Informationen zur Verwendung der CLI (Befehlszeile), Python SDK v2 und Azure Machine Learning Studio.

Hinweis

  • NVIDIA Triton Inference Server ist eine Open Source-Software eines Drittanbieters, die in Azure Machine Learning integriert ist.
  • Während Azure Machine Learning-Onlineendpunkte allgemein verfügbar sind, liegt Triton mit einer Onlineendpunktbereitstellung weiterhin in der Vorschauversion vor.

Voraussetzungen

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

  • Eine funktionierende Python 3.8 (oder höher) Umgebung.

  • Sie müssen zusätzliche Python-Pakete für die Bewertung installiert und können sie mit dem folgenden Code installieren. Dazu gehören:

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ÜRAzure CLI ML-Erweiterung v2 (aktuell)

In diesem Abschnitt wird gezeigt, wie Sie Triton mit der Azure CLI und der Machine Learning-Erweiterung (v2) auf verwalteten Online-Endpunkten einsetzen können.

Wichtig

Für die Bereitstellung ohne Code in Triton wird das Testen über lokale Endpunkte derzeit nicht unterstützt.

  1. 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
    
  2. 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`
    
  3. 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
    
  4. 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 erstellten 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 auf triton_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ÜRAzure CLI ML-Erweiterung v2 (aktuell)

  1. 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
    
  2. 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ÜRAzure 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.

  1. 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%/*}
    
  2. Um ein Authentifizierungs-Token zu erhalten, verwenden Sie den folgenden Befehl:

    auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
    
  3. 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 von Endpunkt und Modell

GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)

  1. 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
    
  2. Verwenden Sie den folgenden Befehl, um Ihr Modell zu löschen:

    az ml model archive --name $MODEL_NAME --version $MODEL_VERSION
    

Nächste Schritte

Weitere Informationen finden Sie in den folgenden Artikeln: