Výkonná obsluha se serverem odvozování Triton
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)
Naučte se používat NVIDIA Triton Inference Server ve službě Azure Machine Learning s online koncovými body.
Triton je opensourcový opensourcový software, který je optimalizovaný pro odvozování. Podporuje oblíbené architektury strojového učení, jako jsou TensorFlow, ONNX Runtime, PyTorch, NVIDIA TensorRT a další. Dá se použít pro úlohy procesoru nebo GPU.
Při nasazování modelů Triton do online koncového bodu můžete využít hlavně dva přístupy: nasazení bez kódu nebo úplné nasazení (přineste si vlastní kontejner).
- Nasazení bez kódu pro modely Triton je jednoduchý způsob, jak je nasadit, protože je potřebujete nasadit jenom pomocí modelů Triton.
- Nasazení s úplným kódem (Přineste si vlastní kontejner) pro modely Triton je pokročilejší způsob, jak je nasadit, protože máte plnou kontrolu nad přizpůsobením konfigurací dostupných pro server odvozování Triton.
U obou možností bude server odvozování Triton provádět odvozování na základě modelu Triton, jak je definováno společností NVIDIA. Například v pokročilejších scénářích lze použít souborové modely.
Triton se podporuje jak ve spravovaných online koncových bodech, tak v online koncových bodech Kubernetes.
V tomto článku se dozvíte, jak nasadit model pomocí nasazení bez kódu pro Triton do spravovaného online koncového bodu. Informace najdete v rozhraní příkazového řádku (příkazovém řádku), sadě Python SDK v2 a studio Azure Machine Learning. Pokud chcete přímo přizpůsobit konfiguraci serveru odvozování Tritonu, použijte vlastní kontejner k nasazení modelu a příklad BYOC pro Triton (definice nasazení a kompletní skript).
Poznámka:
Použití kontejneru NVIDIA Triton Inference Server se řídí licenční smlouvou NVIDIA AI Enterprise Software a dá se používat po dobu 90 dnů bez předplatného podnikového produktu. Další informace najdete v tématu NVIDIA AI Enterprise ve službě Azure Machine Learning.
Požadavky
Než budete postupovat podle kroků v tomto článku, ujistěte se, že máte následující požadavky:
Azure CLI a
ml
rozšíření azure CLI. Další informace najdete v tématu Instalace, nastavení a použití rozhraní příkazového řádku (v2).Důležité
Příklady rozhraní příkazového řádku v tomto článku předpokládají, že používáte prostředí Bash (nebo kompatibilní). Například ze systému Linux nebo Subsystém Windows pro Linux.
Pracovní prostor služby Azure Machine Learning. Pokud ho nemáte, vytvořte ho pomocí kroků v části Instalace, nastavení a použití rozhraní příkazového řádku (v2).
Funkční prostředí Pythonu 3.8 (nebo vyšší)
Pro bodování musíte mít nainstalované další balíčky Pythonu a můžete je nainstalovat pomocí následujícího kódu. Patří sem:
- Numpy – matice a numerická výpočetní knihovna
- Klient serveru odvození tritonu – usnadňuje požadavky na server odvození tritonu.
- Polštář – Knihovna pro operace obrázků
- Gevent – Síťová knihovna používaná při připojování k serveru Triton
pip install numpy
pip install tritonclient[http]
pip install pillow
pip install gevent
Přístup k virtuálním počítačům řady NCv3 pro vaše předplatné Azure
Důležité
Před použitím této řady virtuálních počítačů možná budete muset požádat o navýšení kvóty pro vaše předplatné. Další informace najdete v tématu NCv3-series.
NVIDIA Triton Inference Server vyžaduje konkrétní strukturu úložiště modelů, kde je adresář pro každý model a podadresáře pro verzi modelu. Obsah každého podadresáře verze modelu je určen typem modelu a požadavky back-endu, který model podporuje. Zobrazení struktury úložiště všech modelů https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_repository.md#model-files
Informace v tomto dokumentu jsou založeny na použití modelu uloženého ve formátu ONNX, takže adresářová struktura úložiště modelu je <model-repository>/<model-name>/1/model.onnx
. Konkrétně tento model provádí identifikaci obrázků.
Informace v tomto článku vycházejí z ukázek kódu obsažených v úložišti azureml-examples . Pokud chcete příkazy spustit místně, aniž byste museli kopírovat nebo vkládat YAML a další soubory, naklonujte úložiště a potom změňte adresáře do cli
adresáře v úložišti:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples
cd cli
Pokud jste ještě nenastavili výchozí hodnoty pro Azure CLI, uložte výchozí nastavení. Pokud se chcete vyhnout předávání hodnot pro vaše předplatné, pracovní prostor a skupinu prostředků několikrát, použijte následující příkazy. Nahraďte následující parametry hodnotami pro vaši konkrétní konfiguraci:
<subscription>
nahraďte ID vašeho předplatného Azure.- Nahraďte
<workspace>
názvem pracovního prostoru služby Azure Machine Learning. - Nahraďte
<resource-group>
skupinou prostředků Azure, která obsahuje váš pracovní prostor. - Nahraďte
<location>
oblastí Azure, která obsahuje váš pracovní prostor.
Tip
Pomocí příkazu můžete zjistit, jaké jsou az configure -l
vaše aktuální výchozí hodnoty.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Definování konfigurace nasazení
PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)
Tato část ukazuje, jak můžete nasadit do spravovaného online koncového bodu pomocí Azure CLI s rozšířením Machine Learning (v2).
Důležité
V případě nasazení tritonu bez kódu se v současné době nepodporuje testování prostřednictvím místních koncových bodů .
Pokud se chcete vyhnout zadávání cesty pro více příkazů, nastavte proměnnou
BASE_PATH
prostředí pomocí následujícího příkazu. Tato proměnná odkazuje na adresář, ve kterém se nachází model a přidružené konfigurační soubory YAML:BASE_PATH=endpoints/online/triton/single-model
Pomocí následujícího příkazu nastavte název koncového bodu, který se vytvoří. V tomto příkladu se pro koncový bod vytvoří náhodný název:
export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
Vytvořte konfigurační soubor YAML pro váš koncový bod. Následující příklad nakonfiguruje režim názvu a ověřování koncového bodu. Ten použitý v následujících příkazech se nachází v
/cli/endpoints/online/triton/single-model/create-managed-endpoint.yml
úložišti azureml-examples, které jste naklonovali dříve:create-managed-endpoint.yaml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aml_token
Vytvořte konfigurační soubor YAML pro nasazení. Následující příklad nakonfiguruje nasazení s názvem blue na koncový bod definovaný v předchozím kroku. Ten použitý v následujících příkazech se nachází v
/cli/endpoints/online/triton/single-model/create-managed-deployment.yml
úložišti azureml-examples, které jste naklonovali dříve:Důležité
Aby nasazení typu Triton bez kódu (NCD) fungovalo, je vyžadováno
type: triton_model
nastavenítype
triton_model
. Další informace najdete ve schématu YAML modelu CLI (v2).Toto nasazení používá virtuální počítač Standard_NC6s_v3. Před použitím tohoto virtuálního počítače možná budete muset požádat o navýšení kvóty pro vaše předplatné. Další informace najdete v tématu 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
Nasazení do Azure
PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)
Pokud chcete vytvořit nový koncový bod pomocí konfigurace YAML, použijte následující příkaz:
az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
K vytvoření nasazení pomocí konfigurace YAML použijte následující příkaz:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
Testování koncového bodu
PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)
Po dokončení nasazení pomocí následujícího příkazu odešlete žádost o bodování do nasazeného koncového bodu.
Tip
Soubor /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py
v úložišti azureml-examples se používá k bodování. Image předaná koncovému bodu potřebuje předběžné zpracování, aby splňovala požadavky na velikost, typ a formát a následné zpracování, aby se zobrazil predikovaný popisek. Používá triton_densenet_scoring.py
knihovnu tritonclient.http
ke komunikaci se serverem odvozováním Triton. Tento soubor běží na straně klienta.
Pokud chcete získat identifikátor URI bodování koncového bodu, použijte následující příkaz:
scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv) scoring_uri=${scoring_uri%/*}
Ověřovací klíč získáte pomocí následujícího příkazu:
auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
K určení skóre dat pomocí koncového bodu použijte následující příkaz. Odešle obrázek peacock (https://aka.ms/peacock-pic) do koncového bodu:
python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token --image_path $BASE_PATH/data/peacock.jpg
Odpověď skriptu se podobá následujícímu textu:
Is server ready - True Is model ready - True /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt 84 : PEACOCK
Odstranění koncového bodu a modelu
PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)
Jakmile budete s koncovým bodem hotovi, odstraňte ho pomocí následujícího příkazu:
az ml online-endpoint delete -n $ENDPOINT_NAME --yes
K archivaci modelu použijte následující příkaz:
az ml model archive --name $MODEL_NAME --version $MODEL_VERSION
Další kroky
Další informace najdete v těchto článcích:
- Nasazení modelů pomocí REST
- Vytváření a používání spravovaných online koncových bodů v sadě Studio
- Bezpečné zavedení pro online koncové body
- Automatické škálování spravovaných online koncových bodů
- Zobrazení nákladů na online koncový bod spravovaný službou Azure Machine Learning
- Přístup k prostředkům Azure pomocí spravovaného online koncového bodu a spravované identity
- Řešení potíží s nasazením spravovaných online koncových bodů