Triton Çıkarım Sunucusu ile yüksek performanslı hizmet sunma

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Azure Machine Learning'de NVIDIA Triton Çıkarım Sunucusu'nu çevrimiçi uç noktalarla kullanmayı öğrenin.

Triton, çıkarım için iyileştirilmiş çok çerçeveli, açık kaynak yazılımdır. TensorFlow, ONNX Runtime, PyTorch, NVIDIA TensorRT ve daha fazlası gibi popüler makine öğrenmesi çerçevelerini destekler. CPU veya GPU iş yükleriniz için kullanılabilir.

Triton modellerini çevrimiçi uç noktaya dağıtırken kullanmak için kullanabileceğiniz başlıca iki yaklaşım vardır: Kod içermeyen dağıtım veya tam kod (Kendi kapsayıcınızı getirin) dağıtımı.

  • Triton modelleri için kod içermeyen dağıtım, yalnızca triton modellerini dağıtmaya getirmeniz gerektiğinden bunları dağıtmanın basit bir yoludur.
  • Triton modelleri için tam kod dağıtımı (Kendi kapsayıcınızı getirin), Triton çıkarım sunucusu için kullanılabilir yapılandırmaları özelleştirme konusunda tam denetime sahip olduğunuzdan bunları dağıtmanın daha gelişmiş bir yoludur.

Her iki seçenek için de Triton çıkarım sunucusu, NVIDIA tarafından tanımlanan Triton modeline göre çıkarım gerçekleştirir. Örneğin, daha gelişmiş senaryolar için grup modelleri kullanılabilir.

Triton hem yönetilen çevrimiçi uç noktalarda hem de Kubernetes çevrimiçi uç noktalarında desteklenir.

Bu makalede, Triton için kod içermeyen dağıtımı kullanarak modeli yönetilen bir çevrimiçi uç noktaya dağıtmayı öğreneceksiniz. CLI (komut satırı), Python SDK v2 ve Azure Machine Learning stüdyosu kullanma hakkında bilgi sağlanır. Triton çıkarım sunucusunun yapılandırmasını kullanarak daha doğrudan özelleştirmek istiyorsanız, Modeli dağıtmak için özel kapsayıcı kullanma bölümüne ve Triton için KCG örneğine (dağıtım tanımı ve uçtan uca betik) bakın.

Not

NVIDIA Triton Çıkarım Sunucusu kapsayıcısının kullanımı NVIDIA AI Enterprise Software lisans sözleşmesine tabidir ve kurumsal ürün aboneliği olmadan 90 gün boyunca kullanılabilir. Daha fazla bilgi için bkz . Azure Machine Learning'de NVIDIA AI Enterprise.

Önkoşullar

Bu makaledeki adımları takip etmeden önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

  • Çalışan bir Python 3.8 (veya üzeri) ortamı.

  • Puanlama için ek Python paketlerinin yüklü olması gerekir ve bunları aşağıdaki kodla yükleyebilirsiniz. Bu ölçümler şunlardır:

    • Numpy - Dizi ve sayısal bilgi işlem kitaplığı
    • Triton Çıkarım Sunucusu İstemcisi - Triton Çıkarım Sunucusuna yönelik istekleri kolaylaştırır
    • Pillow - Görüntü işlemleri için bir kitaplık
    • Gevent - Triton Server'a bağlanırken kullanılan ağ kitaplığı
pip install numpy
pip install tritonclient[http]
pip install pillow
pip install gevent
  • Azure aboneliğiniz için NCv3 serisi VM'lere erişim.

    Önemli

    Bu vm serisini kullanabilmek için önce aboneliğiniz için kota artışı istemeniz gerekebilir. Daha fazla bilgi için bkz . NCv3 serisi.

NVIDIA Triton Çıkarım Sunucusu, model sürümü için her model ve alt dizin için bir dizin bulunan belirli bir model deposu yapısı gerektirir. Her model sürümü alt dizininin içeriği, modelin türüne ve modeli destekleyen arka ucun gereksinimlerine göre belirlenir. Tüm model deposu yapısını görmek için https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_repository.md#model-files

Bu belgedeki bilgiler, ONNX biçiminde depolanan bir modelin kullanılmasına dayandığından, model deposunun dizin yapısı şeklindedir <model-repository>/<model-name>/1/model.onnx. Özellikle, bu model görüntü tanımlama gerçekleştirir.

Bu makaledeki bilgiler, azureml-examples deposunda yer alan kod örneklerini temel alır. YAML ve diğer dosyaları kopyalamak/yapıştırmak zorunda kalmadan komutları yerel olarak çalıştırmak için depoyu kopyalayın ve ardından dizinleri depodaki dizinle cli değiştirin:

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

Azure CLI için varsayılan ayarları henüz ayarlamadıysanız varsayılan ayarlarınızı kaydedin. Aboneliğinizin, çalışma alanınızın ve kaynak grubunuzun değerlerini birden çok kez geçirmekten kaçınmak için aşağıdaki komutları kullanın. Aşağıdaki parametreleri kendi yapılandırmanıza yönelik değerlerle değiştirin:

  • <subscription> öğesini Azure abonelik kimliğinizle değiştirin.
  • değerini Azure Machine Learning çalışma alanı adınızla değiştirin <workspace> .
  • değerini, çalışma alanınızı içeren Azure kaynak grubuyla değiştirin <resource-group> .
  • değerini, çalışma alanınızı içeren Azure bölgesiyle değiştirin <location> .

İpucu

komutunu kullanarak az configure -l geçerli varsayılanlarınızın ne olduğunu görebilirsiniz.

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

Dağıtım yapılandırmasını tanımlama

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

Bu bölümde, Machine Learning uzantısı (v2) ile Azure CLI kullanarak yönetilen bir çevrimiçi uç noktaya nasıl dağıtım yapabileceğiniz gösterilmektedir.

Önemli

Triton kod içermeyen dağıtım için, yerel uç noktalar aracılığıyla test şu anda desteklenmemektedir.

  1. Birden çok komutun yoluna yazılmasını önlemek için aşağıdaki komutu kullanarak bir BASE_PATH ortam değişkeni ayarlayın. Bu değişken, modelin ve ilişkili YAML yapılandırma dosyalarının bulunduğu dizine işaret ediyor:

    BASE_PATH=endpoints/online/triton/single-model
    
  2. Oluşturulacak uç noktanın adını ayarlamak için aşağıdaki komutu kullanın. Bu örnekte, uç nokta için rastgele bir ad oluşturulur:

    export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
    
  3. Uç noktanız için bir YAML yapılandırma dosyası oluşturun. Aşağıdaki örnekte uç noktanın adı ve kimlik doğrulama modu yapılandırılır. Aşağıdaki komutlarda kullanılan, daha önce kopyaladığınız azureml-examples deposunda bulunur /cli/endpoints/online/triton/single-model/create-managed-endpoint.yml :

    create-managed-endpoint.yaml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
    name: my-endpoint
    auth_mode: aml_token
    
  4. Dağıtım için bir YAML yapılandırma dosyası oluşturun. Aşağıdaki örnekte, önceki adımda tanımlanan uç noktaya mavi adlı bir dağıtım yapılandırılır. Aşağıdaki komutlarda kullanılan, daha önce kopyaladığınız azureml-examples deposunda bulunur /cli/endpoints/online/triton/single-model/create-managed-deployment.yml :

    Önemli

    Triton kod içermeyen dağıtım (NCD) işlevinin çalışması için ayarı type triton_model​ gereklidir. type: triton_model​ Daha fazla bilgi için bkz . CLI (v2) modeli YAML şeması.

    Bu dağıtımda bir Standard_NC6s_v3 VM kullanılır. Bu VM'yi kullanabilmeniz için önce aboneliğiniz için kota artışı istemeniz gerekebilir. Daha fazla bilgi için bkz . NCv3 serisi.

    $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
    

Azure’a dağıtın

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

  1. YAML yapılandırmasını kullanarak yeni bir uç nokta oluşturmak için aşağıdaki komutu kullanın:

    az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
    
  2. YAML yapılandırmasını kullanarak dağıtımı oluşturmak için aşağıdaki komutu kullanın:

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

Uç noktayı test edin

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

Dağıtımınız tamamlandıktan sonra, dağıtılan uç noktaya puanlama isteğinde bulunmak için aşağıdaki komutu kullanın.

İpucu

Azureml-examples deposundaki dosya /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py puanlama için kullanılır. Uç noktaya geçirilen görüntünün boyut, tür ve biçim gereksinimlerini karşılamak için ön işlemeye ve tahmin edilen etiketi göstermek için işlem sonrası işlemeye ihtiyacı vardır. Triton triton_densenet_scoring.py çıkarım sunucusuyla iletişim kurmak için kitaplığını kullanır tritonclient.http . Bu dosya istemci tarafında çalışır.

  1. Uç nokta puanlama uri'sini almak için aşağıdaki komutu kullanın:

    scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv)
    scoring_uri=${scoring_uri%/*}
    
  2. Kimlik doğrulama anahtarı almak için aşağıdaki komutu kullanın:

    auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
    
  3. Uç noktayla veri puanını almak için aşağıdaki komutu kullanın. Uç noktaya bir tavus kuşu (https://aka.ms/peacock-pic) görüntüsünü gönderir:

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

    Betikten gelen yanıt aşağıdaki metne benzer:

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

Uç noktayı ve modeli silme

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

  1. Uç noktayla işiniz bittiğinde silmek için aşağıdaki komutu kullanın:

    az ml online-endpoint delete -n $ENDPOINT_NAME --yes
    
  2. Modelinizi arşivlerken aşağıdaki komutu kullanın:

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

Sonraki adımlar

Daha fazla bilgi edinmek için şu makaleleri gözden geçirin: