Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Azure CLI ml uzantısı v2 (geçerli)
Python SDK azure-ai-ml v2 (geçerli)
Azure Machine Learning bir modeli çevrimiçi uç noktaya dağıtmak için özel bir kapsayıcı kullanabilirsiniz. Özel kapsayıcı dağıtımları, Azure Machine Learning tarafından kullanılan varsayılan Python Flask sunucusu dışındaki web sunucularını kullanabilir.
Özel dağıtım kullandığınızda şunları yapabilirsiniz:
- TensorFlow Serving (TF Serving), TorchServe, Triton Çıkarım Sunucusu, Plumber R paketi ve Azure Machine Learning çıkarım minimal imajı gibi çeşitli araçları ve teknolojileri kullanın.
- Yine de Azure Machine Learning'in sunduğu yerleşik izleme, ölçeklendirme, uyarı ve kimlik doğrulamasından yararlanın.
Bu makalede, TensorFlow modeli sunmak için TF Sunum görüntüsünün nasıl kullanılacağı gösterilmektedir.
Prerequisites
Azure Machine Learning çalışma alanı. Çalışma alanı oluşturma yönergeleri için bkz. Çalışma alanı oluşturma.
Azure CLI ve
mluzantısı veya Azure Machine Learning Python SDK v2:Azure CLI ve
mluzantısını yüklemek için bakınız: Install ve set up the CLI (v2).Bu makaledeki örneklerde Bash kabuğu veya uyumlu bir kabuk kullandığınız varsayılır. Örneğin, Linux işletim sisteminde veya Linux için Windows Alt Sistemi üzerinde komut dizisini kullanabilirsiniz.
Çalışma alanınızı içeren ve sizin veya hizmet sorumlunuzun Katkıda Bulunan erişimine sahip olduğu bir Azure kaynak grubu. Çalışma alanınızı yapılandırmak için Çalışma alanını oluşturma adımlarını kullanırsanız, bu gereksinimi karşılarsınız.
Docker Altyapısı, yerel olarak yüklenir ve çalışır. Bu önkoşul kesinlikle önerilir. Modeli yerel olarak dağıtmak için buna ihtiyacınız vardır ve hata ayıklama için yararlıdır.
Dağıtım örnekleri
Aşağıdaki tabloda, özel kapsayıcılar kullanan ve çeşitli araç ve teknolojilerden yararlanan deployment örnekleri listelenir.
| Example | Azure CLI komut dosyası | Description |
|---|---|---|
| minimal/multimodel | deploy-custom-container-minimal-multimodel | Azure Machine Learning çıkarım minimum görüntüsünü genişleterek tek bir dağıtıma birden çok model dağıtır. |
| minimal/tek modelli | deploy-custom-container-minimal-single-model | Azure Machine Learning çıkarım minimum görüntüsünü genişleterek tek bir model dağıtır. |
| mlflow/multideployment-scikit | deploy-custom-container-mlflow-multideployment-scikit | Tek bir uç noktanın arkasındaki iki ayrı dağıtıma farklı Python gereksinimleri olan iki MLFlow modeli dağıtır. Azure Machine Learning minimal çıkarım görüntüsünü kullanır. |
| r/multimodel-plumber | deploy-custom-container-r-multimodel-plumber | Bir uç noktaya üç regresyon modeli dağıtır. Plumber R paketini kullanır. |
| tfserving/half-plus-two | deploy-custom-container-tfserving-half-plus-two | TF Serving özel bir kapsayıcı kullanarak Yarım Artı İki modelini dağıtır. Standart model kayıt işlemini kullanır. |
| tfserving/half-plus-two-integrated | özel-konteyner-dağıt-tfserving-yarım-artı-iki-entegre | TF Servisi özel konteyneri kullanarak resme entegre edilmiş model ile Yarım Artı İki modelini dağıtır. |
| torchserve/densenet | deploy-custom-container-torchserve-densenet | TorchServe özel kapsayıcısı kullanarak tek bir model dağıtır. |
| triton/tek modelli | deploy-custom-container-triton-single-model | Özel bir kapsayıcı kullanarak Triton modeli dağıtımı gerçekleştirilir. |
Bu makalede, tfserving/half-plus-two örneğinin nasıl kullanılacağı size gösterilmektedir.
Warning
Microsoft destek ekipleri özel görüntüden kaynaklanan sorunları gidermeye yardımcı olmayabilir. Sorunlarla karşılaşırsanız, sorunun görüntünüze özgü olup olmadığını görmek için sizden varsayılan görüntüyü veya Microsoft'un sağladığı görüntülerden birini kullanmanızı isteyebilirler.
Kaynak kodu indirme
Bu makaledeki adımlarda azureml-examples deposundaki kod örnekleri kullanılır. Depoyu kopyalamak için aşağıdaki komutları kullanın:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Ortam değişkenlerini başlatma
TensorFlow modeli kullanmak için birkaç ortam değişkenine ihtiyacınız vardır. Bu değişkenleri tanımlamak için aşağıdaki komutları çalıştırın:
BASE_PATH=endpoints/online/custom-container/tfserving/half-plus-two
AML_MODEL_NAME=tfserving-mounted
MODEL_NAME=half_plus_two
MODEL_BASE_PATH=/var/azureml-app/azureml-models/$AML_MODEL_NAME/1
TensorFlow modelini indirme
Giriş değerini ikiye bölen ve sonucta iki tane ekleyen bir modeli indirin ve sıkıştırmasını açın:
wget https://aka.ms/half_plus_two-model -O $BASE_PATH/half_plus_two.tar.gz
tar -xvf $BASE_PATH/half_plus_two.tar.gz -C $BASE_PATH
TF Sunum görüntüsünü yerel olarak test etme
Görüntünüzü test etmek üzere yerel olarak çalıştırmak için Docker'ı kullanın:
docker run --rm -d -v $PWD/$BASE_PATH:$MODEL_BASE_PATH -p 8501:8501 \
-e MODEL_BASE_PATH=$MODEL_BASE_PATH -e MODEL_NAME=$MODEL_NAME \
--name="tfserving-test" docker.io/tensorflow/serving:latest
sleep 10
Görüntüye canlılık ve puanlama istekleri gönderme
Kapsayıcı içindeki işlemin çalışıp çalışmadığını denetlemek için bir canlılık isteği gönderin. 200 Tamam yanıt durum kodunu almanız gerekir.
curl -v http://localhost:8501/v1/models/$MODEL_NAME
Etiketlenmemiş veriler için tahminler alıp alabildiğinizi denetlemek için bir puanlama isteği gönderin:
curl --header "Content-Type: application/json" \
--request POST \
--data @$BASE_PATH/sample_request.json \
http://localhost:8501/v1/models/$MODEL_NAME:predict
Resmi durdurma
Test işlemini yerel olarak tamamladığınızda görüntüyü durdurun:
docker stop tfserving-test
Çevrimiçi uç noktanızı Azure'a dağıtın
Çevrimiçi uç noktanızı Azure dağıtmak için aşağıdaki bölümlerdeki adımları uygulayın.
Uç noktanız ve dağıtımınız için YAML dosyaları oluşturma
BULUT dağıtımınızı YAML kullanarak yapılandırabilirsiniz. Örneğin, uç noktanızı yapılandırmak için aşağıdaki satırları içeren adlı tfserving-endpoint.yml bir YAML dosyası oluşturun:
$schema: https://azuremlsdk2.blob.core.windows.net/latest/managedOnlineEndpoint.schema.json
name: tfserving-endpoint
auth_mode: aml_token
Dağıtımınızı yapılandırmak için aşağıdaki satırları içeren adlı tfserving-deployment.yml bir YAML dosyası oluşturun:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: tfserving-deployment
endpoint_name: tfserving-endpoint
model:
name: tfserving-mounted
version: <model-version>
path: ./half_plus_two
environment_variables:
MODEL_BASE_PATH: /var/azureml-app/azureml-models/tfserving-mounted/<model-version>
MODEL_NAME: half_plus_two
environment:
#name: tfserving
#version: 1
image: docker.io/tensorflow/serving:latest
inference_config:
liveness_route:
port: 8501
path: /v1/models/half_plus_two
readiness_route:
port: 8501
path: /v1/models/half_plus_two
scoring_route:
port: 8501
path: /v1/models/half_plus_two:predict
instance_type: Standard_DS3_v2
instance_count: 1
Aşağıdaki bölümlerde YAML ve Python parametreleriyle ilgili önemli kavramlar ele alınmaktadır.
Temel görüntü
YAML'deki environment bölümünde veya Python'daki Environment oluşturucusunda, temel görüntüyü parametre olarak belirtin. Bu örnek, docker.io/tensorflow/serving:latest'yi image değeri olarak kullanır.
Kapsayıcınızı incelerseniz, bu sunucunun bir giriş noktası betiği başlatmak için komutları kullandığını ENTRYPOINT görebilirsiniz. Bu betik, MODEL_BASE_PATH ve MODEL_NAME gibi ortam değişkenlerini alır ve 8501 gibi bağlantı noktalarını kullanıma sunar. Bu ayrıntıların tümü bu sunucuyla ilgilidir ve dağıtımınızı nasıl tanımlayabileceğinizi belirlemek için bu bilgileri kullanabilirsiniz. Örneğin, MODEL_BASE_PATH ve MODEL_NAME ortam değişkenlerini dağıtım tanımınızda ayarlarsanız, TF Serving sunucuyu başlatmak için bu değerleri kullanır. Benzer şekilde, dağıtım tanımında her yol 8501 için bağlantı noktasını ayarlarsanız, bu yollara yönelik kullanıcı istekleri TF Sunum sunucusuna doğru şekilde yönlendirilir.
Bu örnek TF Serving vakasına dayanmaktadır. Ancak çalışır durumda kalan ve canlılık, hazır olma ve puanlama yollarına giden isteklere yanıt veren herhangi bir kapsayıcıyı kullanabilirsiniz. Kapsayıcı oluşturmak üzere Bir Dockerfile'ın nasıl oluşturulacağını görmek için diğer örneklere bakın. Bazı sunucular CMD yönergeleri yerine ENTRYPOINT yönergeleri kullanır.
Tavsiye
Üretim dağıtımları için, tekrarlanabilir dağıtımlar sağlamak amacıyla docker.io/tensorflow/serving:2.18.0 kullanmak yerine, belirli bir görüntü sürümüne (örneğin, :latest) sabitleyin.
inference_config parametresi
environment bölümünde veya Environment sınıfında inference_config bir parametredir. Üç yol türü için bağlantı noktasını ve yolu belirtir: canlılık durumu, hazır olma ve puanlama yolları. Eğer inference_config parametresini yönetilen bir çevrimiçi uç nokta ile kendi kapsayıcınızı çalıştırmak istiyorsanız kullanmanız gereklidir.
Hazır olma yolları ile canlılık yolları karşılaştırması
Bazı API sunucuları, sunucunun durumunu denetlemenin bir yolunu sağlar. Durumu denetlemek için belirtebileceğiniz iki yol türü vardır:
- Canlılık yolları: Sunucunun çalışıp çalışmadığını denetlemek için bir canlılık yolu kullanın.
- Hazırlık yolları: Sunucunun çalışmaya hazır olup olmadığını denetlemek için hazır olma yolu kullanın.
Makine öğrenmesi çıkarım bağlamında, bir sunucu model yüklemeden önce canlılık isteğine 200 Tamam durum koduyla yanıt verebilir. Sunucu, yalnızca modeli belleğe yükledikten sonra hazır olma isteğine 200 Tamam durum koduyla yanıt verebilir.
Canlılık ve hazır olma yoklamaları hakkında daha fazla bilgi için bkz. Canlılık, Hazırlık ve Başlangıç Yoklamalarını Yapılandırma.
Canlılık ve hazırlık yollarını seçtiğiniz API sunucusu belirler. Kapsayıcıyı yerel olarak test ederken bu sunucuyu önceki bir adımda tanımlarsınız. Bu makalede, örnek dağıtım, canlılık ve hazır olma yolları için aynı yolu kullanır çünkü TF Serving yalnızca canlılık yolunu tanımlar. Yolları tanımlamanın diğer yolları için diğer örneklere bakın.
Puanlama yolları
Kullandığınız API sunucusu, üzerinde çalışabileceğiniz yükü almak için bir yol sağlar. Makine öğrenmesi çıkarım bağlamında, bir sunucu giriş verilerini belirli bir yol üzerinden alır. Önceki bir adımda kapsayıcıyı yerel olarak test ettiğinizde API sunucunuz için bu yolu belirleyin. Oluşturulacak dağıtımı tanımlarken bu yolu puanlama yolu olarak belirtin.
Dağıtımın başarıyla oluşturulması, uç noktanın scoring_uri parametresini de güncelleştirir. Aşağıdaki komutu çalıştırarak bu gerçeği doğrulayabilirsiniz: az ml online-endpoint show -n <endpoint-name> --query scoring_uri.
Montajlı modeli bul
Modeli çevrimiçi bir uç nokta olarak dağıttığınızda, Azure Machine Learning modelinizi uç noktanıza monte eder. Model bağlandığında, yeni bir Docker görüntüsü oluşturmak zorunda kalmadan modelin yeni sürümlerini dağıtabilirsiniz. Varsayılan olarak, my-model ve sürüm 1 adıyla kaydedilen bir model dağıtılan kapsayıcınızın içindeki şu yolda bulunur: /var/azureml-app/azureml-models/my-model/1.
Örneğin, aşağıdaki kurulumu göz önünde bulundurun:
- Yerel makinenizdeki bir dizin yapısı
/azureml-examples/cli/endpoints/online/custom-container - Model adı:
half_plus_two
Dosyanızın tfserving-deployment.yml bölümünde aşağıdaki satırları içerdiğini model varsayalım. Bu bölümde name değeri, modeli Azure Machine Learning'e kaydetmek için kullandığınız adı ifade eder.
model:
name: tfserving-mounted
version: 1
path: ./half_plus_two
Bu durumda, bir dağıtım oluşturduğunuzda modeliniz şu klasörün altında bulunur: /var/azureml-app/azureml-models/tfserving-mounted/1.
model_mount_path değerini isteğe bağlı olarak yapılandırabilirsiniz. Bu ayarı ayarlayarak modelin bağlandığı yolu değiştirebilirsiniz.
Important
model_mount_path değerinin, Linux'ta geçerli bir mutlak yol olması gerekir (kapsayıcı görüntüsünün konuk işletim sisteminde).
Important
model_mount_path yalnızca bir KCG (kendi kapsayıcınızı getirin) senaryosunda kullanabilirsiniz. BYOC senaryosunda, çevrimiçi dağıtımın kullandığı ortamda inference_config parametresi yapılandırılmış olmalıdır. Ortamı oluştururken inference_config parametresini belirtmek için Azure Machine Learning CLI veya Python SDK'sını kullanın. Stüdyo şu anda bu parametrenin belirtilmesine destek vermemektedir.
değerini model_mount_pathdeğiştirdiğinizde ortam değişkenini MODEL_BASE_PATH de güncelleştirmeniz gerekir. Temel yolun bulunamadığını gösteren bir hata nedeniyle başarısız bir dağıtımı önlemek için MODEL_BASE_PATH ve model_mount_path aynı değere ayarlayın.
Örneğin, model_mount_path parametresini tfserving-deployment.yml dosyanıza ekleyebilirsiniz. Bu dosyadaki MODEL_BASE_PATH değeri de güncelleştirebilirsiniz:
name: tfserving-deployment
endpoint_name: tfserving-endpoint
model:
name: tfserving-mounted
version: 1
path: ./half_plus_two
model_mount_path: /var/tfserving-model-mount
environment_variables:
MODEL_BASE_PATH: /var/tfserving-model-mount
...
Dağıtımınızda modeliniz /var/tfserving-model-mount/tfserving-mounted/1 konumunda bulunur. Artık azureml-app/azureml-models altında değil, belirttiğiniz bağlama yolunda yer almaktadır.
Uç noktanızı ve dağıtım işleminizi oluşturun
YAML dosyanızı oluşturduktan sonra, uç noktanızı oluşturmak için aşağıdaki komutu kullanın:
az ml online-endpoint create --name tfserving-endpoint -f endpoints/online/custom-container/tfserving/half-plus-two/tfserving-endpoint.yml
Dağıtımınızı oluşturmak için aşağıdaki komutu kullanın. Bu adım birkaç dakika sürebilir.
az ml online-deployment create --name tfserving-deployment -f endpoints/online/custom-container/tfserving/half-plus-two/tfserving-deployment.yml --all-traffic
Uç noktayı çağırma
Dağıtımınız tamamlandığında, dağıtılan uç noktaya puanlama isteğinde bulunun.
RESPONSE=$(az ml online-endpoint invoke -n $ENDPOINT_NAME --request-file $BASE_PATH/sample_request.json)
Uç noktayı silme
Uç noktanıza artık ihtiyacınız yoksa, silmek için aşağıdaki komutu çalıştırın:
az ml online-endpoint delete --name tfserving-endpoint