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 v Azure Machine Učení 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 na počítači Azure Učení.

Požadavky

Než budete postupovat podle kroků v tomto článku, ujistěte se, že máte následující požadavky:

  • 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 azure machine Učení.
  • 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 Učení (v2).

  1. 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
    
  2. 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`
    
  3. 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
    
  4. 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í typetriton_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í)

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

  1. 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%/*}
    
  2. 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)
    
  3. 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í)

  1. 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
    
  2. 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: