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 Mašinsko učenje 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 (kommandoraden), Python SDK v2 och Azure Mašinsko učenje 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 Mašinsko učenje.
Förutsättningar
Innan du följer stegen i den här artikeln kontrollerar du att du har följande förutsättningar:
Azure CLI och
ml
tillägget till Azure CLI. Mer information finns i Installera, konfigurera och använda CLI (v2).Viktigt!
CLI-exemplen i den här artikeln förutsätter att du använder Bash-gränssnittet (eller det kompatibla). Till exempel från ett Linux-system eller Windows podsistem za Linux.
En Azure Machine Learning-arbetsyta. Om du inte har någon använder du stegen i Installera, konfigurera och använda CLI (v2) för att skapa en.
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 Mašinsko učenje-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-tillägget v2 (aktuellt)
Det här avsnittet visar hur du kan distribuera till en hanterad onlineslutpunkt med hjälp av Azure CLI med tillägget Mašinsko učenje (v2).
Viktigt!
För Triton no-code-deployment stöds för närvarande inte testning via lokala slutpunkter .
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
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`
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
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
tilltriton_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-tillägget v2 (aktuellt)
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
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-tillägget v2 (aktuellt)
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.
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%/*}
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)
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-tillägget v2 (aktuellt)
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
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:
- Distribuera modeller med REST
- Skapa och använda hanterade onlineslutpunkter i studion
- Säker distribution för onlineslutpunkter
- Så här autoskalar du hanterade onlineslutpunkter
- Visa kostnader för en Azure Mašinsko učenje hanterad onlineslutpunkt
- Få åtkomst till Azure-resurser med en hanterad onlineslutpunkt och hanterad identitet
- Felsöka distribution av hanterade onlineslutpunkter