Högpresterande server med Triton Inference Server

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Lär dig hur du använder NVIDIA Triton Inference Server i Azure Machine Learning med onlineslutpunkter.

Triton är programvara med öppen källkod med flera ramverk som är optimerad för slutsatsdragning. Det stöder populära maskininlärningsramverk som TensorFlow, ONNX Runtime, PyTorch, NVIDIA TensorRT med mera. Det kan användas för dina CPU- eller GPU-arbetsbelastningar.

Det finns huvudsakligen två metoder som du kan använda för att utnyttja Triton-modeller när du distribuerar dem till onlineslutpunkten: Distribution utan kod eller fullkodsdistribution (Bring your own container).

  • Distribution utan kod för Triton-modeller är ett enkelt sätt att distribuera dem eftersom du bara behöver använda Triton-modeller för distribution.
  • Fullkodsdistribution (Bring your own container) för Triton-modeller är ett mer avancerat sätt att distribuera dem eftersom du har fullständig kontroll över hur du anpassar de konfigurationer som är tillgängliga för Triton-slutsatsdragningsservern.

För båda alternativen utför Triton-slutsatsdragningsservern inferens baserat på Triton-modellen enligt definitionen av NVIDIA. Till exempel kan ensemblemodeller användas för mer avancerade scenarier.

Triton stöds i både hanterade onlineslutpunkter och Kubernetes onlineslutpunkter.

I den här artikeln får du lära dig hur du distribuerar en modell med hjälp av distribution utan kod för Triton till en hanterad onlineslutpunkt. Information finns om hur du använder CLI (kommandorad), Python SDK v2 och Azure Machine Learning-studio. Om du vill anpassa ytterligare direkt med Triton-slutsatsdragningsserverns konfiguration läser du Använda en anpassad container för att distribuera en modell och BYOC-exemplet för Triton (distributionsdefinition och slutpunkt till slutpunkt-skript).

Kommentar

Användning av NVIDIA Triton Inference Server-containern styrs av licensavtalet för NVIDIA AI Enterprise Software och kan användas i 90 dagar utan en företagsproduktprenumeration. Mer information finns i NVIDIA AI Enterprise på Azure Machine Learning.

Förutsättningar

Innan du följer stegen i den här artikeln kontrollerar du att du har följande förutsättningar:

  • En fungerande Python 3.8-miljö (eller senare).

  • Du måste ha ytterligare Python-paket installerade för bedömning och kan installera dem med koden nedan. De omfattar:

    • Numpy – en matris och numeriskt databehandlingsbibliotek
    • Triton Inference Server Client – Underlättar begäranden till Triton Inference Server
    • Pillow – ett bibliotek för bildåtgärder
    • Gevent – ett nätverksbibliotek som används vid anslutning till Triton Server
pip install numpy
pip install tritonclient[http]
pip install pillow
pip install gevent
  • Åtkomst till virtuella datorer i NCv3-serien för din Azure-prenumeration.

    Viktigt!

    Du kan behöva begära en kvotökning för din prenumeration innan du kan använda den här serien med virtuella datorer. Mer information finns i NCv3-serien.

NVIDIA Triton Inference Server kräver en specifik modelllagringsplatsstruktur, där det finns en katalog för varje modell och underkataloger för modellversionen. Innehållet i varje modellversionsunderkatalog bestäms av typen av modell och kraven för den serverdel som stöder modellen. Så här ser du hela modelllagringsplatsens struktur https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_repository.md#model-files

Informationen i det här dokumentet baseras på användning av en modell som lagras i ONNX-format, så katalogstrukturen för modelllagringsplatsen är <model-repository>/<model-name>/1/model.onnx. Mer specifikt utför den här modellen bildidentifiering.

Informationen i den här artikeln baseras på kodexempel som finns i lagringsplatsen azureml-examples . Om du vill köra kommandona lokalt utan att behöva kopiera/klistra in YAML och andra filer klonar du lagringsplatsen och ändrar sedan katalogerna till cli katalogen på lagringsplatsen:

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

Om du inte redan har angett standardinställningarna för Azure CLI sparar du standardinställningarna. Använd följande kommandon för att undvika att skicka in värdena för din prenumeration, arbetsyta och resursgrupp flera gånger. Ersätt följande parametrar med värden för din specifika konfiguration:

  • Ersätt <subscription> med ditt Azure-prenumerations-ID.
  • Ersätt <workspace> med namnet på din Azure Machine Learning-arbetsyta.
  • Ersätt <resource-group> med den Azure-resursgrupp som innehåller din arbetsyta.
  • Ersätt <location> med Den Azure-region som innehåller din arbetsyta.

Dricks

Du kan se vilka dina aktuella standardvärden är med hjälp az configure -l av kommandot .

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Definiera distributionskonfigurationen

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

Det här avsnittet visar hur du kan distribuera till en hanterad onlineslutpunkt med hjälp av Azure CLI med Machine Learning-tillägget (v2).

Viktigt!

För Triton no-code-deployment stöds för närvarande inte testning via lokala slutpunkter .

  1. Om du vill undvika att skriva in en sökväg för flera kommandon använder du följande kommando för att ange en BASE_PATH miljövariabel. Den här variabeln pekar på katalogen där modellen och tillhörande YAML-konfigurationsfiler finns:

    BASE_PATH=endpoints/online/triton/single-model
    
  2. Använd följande kommando för att ange namnet på slutpunkten som ska skapas. I det här exemplet skapas ett slumpmässigt namn för slutpunkten:

    export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
    
  3. Skapa en YAML-konfigurationsfil för slutpunkten. I följande exempel konfigureras slutpunktens namn och autentiseringsläge. Den som används i följande kommandon finns i /cli/endpoints/online/triton/single-model/create-managed-endpoint.yml lagringsplatsen azureml-examples som du klonade tidigare:

    create-managed-endpoint.yaml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
    name: my-endpoint
    auth_mode: aml_token
    
  4. Skapa en YAML-konfigurationsfil för distributionen. I följande exempel konfigureras en distribution med namnet blue till slutpunkten som definierades i föregående steg. Den som används i följande kommandon finns i /cli/endpoints/online/triton/single-model/create-managed-deployment.yml lagringsplatsen azureml-examples som du klonade tidigare:

    Viktigt!

    För att Triton no-code-deployment (NCD) ska fungera krävs inställningen type till triton_model​ , type: triton_model​. Mer information finns i YAML-schema för CLI-modell (v2).

    Den här distributionen använder en Standard_NC6s_v3 virtuell dator. Du kan behöva begära en kvotökning för din prenumeration innan du kan använda den här virtuella datorn. Mer information finns i NCv3-serien.

    $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
    

Distribuera till Azure

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

  1. Om du vill skapa en ny slutpunkt med YAML-konfigurationen använder du följande kommando:

    az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
    
  2. Om du vill skapa distributionen med YAML-konfigurationen använder du följande kommando:

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
    

Testa slutpunkten

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

När distributionen är klar använder du följande kommando för att göra en bedömningsbegäran till den distribuerade slutpunkten.

Dricks

Filen /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py i lagringsplatsen azureml-examples används för bedömning. Avbildningen som skickas till slutpunkten behöver förbearbetning för att uppfylla storleks-, typ- och formatkraven och efterbearbetningen för att visa den förutsagda etiketten. triton_densenet_scoring.py Använder tritonclient.http biblioteket för att kommunicera med Triton-slutsatsdragningsservern. Den här filen körs på klientsidan.

  1. Använd följande kommando för att hämta slutpunktsbedömnings-uri:

    scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv)
    scoring_uri=${scoring_uri%/*}
    
  2. Använd följande kommando för att hämta en autentiseringsnyckel:

    auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
    
  3. Om du vill poängsätta data med slutpunkten använder du följande kommando. Den skickar bilden av en påfågel (https://aka.ms/peacock-pic) till slutpunkten:

    python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token --image_path $BASE_PATH/data/peacock.jpg
    

    Svaret från skriptet liknar följande text:

    Is server ready - True
    Is model ready - True
    /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt
    84 : PEACOCK
    

Ta bort slutpunkten och modellen

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

  1. När du är klar med slutpunkten använder du följande kommando för att ta bort den:

    az ml online-endpoint delete -n $ENDPOINT_NAME --yes
    
  2. Använd följande kommando för att arkivera din modell:

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

Nästa steg

Mer information finns i följande artiklar: