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:
Azure CLI ve
ml
Azure CLI uzantısı. Daha fazla bilgi için bkz . CLI'yi (v2) yükleme, ayarlama ve kullanma.Önemli
Bu makaledeki CLI örneklerinde Bash (veya uyumlu) kabuğu kullandığınız varsayılır. Örneğin, bir Linux sisteminden veya Linux için Windows Alt Sistemi.
Azure Machine Learning çalışma alanı. Yoksa CLI'yı (v2) yükleme, ayarlama ve kullanma bölümünde yer alan adımları kullanarak bir tane oluşturun.
Ç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.
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
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`
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
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)
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
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.
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%/*}
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)
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)
Uç noktayla işiniz bittiğinde silmek için aşağıdaki komutu kullanın:
az ml online-endpoint delete -n $ENDPOINT_NAME --yes
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:
- REST ile modelleri dağıtma
- Stüdyoda yönetilen çevrimiçi uç noktaları oluşturma ve kullanma
- Çevrimiçi uç noktalar için güvenli dağıtım
- Yönetilen çevrimiçi uç noktaları otomatik ölçeklendirme
- Azure Machine Learning yönetilen çevrimiçi uç noktasının maliyetlerini görüntüleme
- Yönetilen çevrimiçi uç nokta ve yönetilen kimlikle Azure kaynaklarına erişme
- Yönetilen çevrimiçi uç nokta dağıtımı sorunlarını giderme