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.
APPLIES TO:
Azure CLI ml extension v2 (current)
Python SDK azure-ai-ml v2 (current)
Azure Machine Learning'de, modeli çevrimiçi uç noktaya dağıtmak için özel bir kapsayıcı kullanabilirsiniz. Özel kapsayıcı dağıtımları, Azure Machine Learning'in kullandığı 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 görüntüsü gibi çeşitli araçlar ve teknolojileri kullanın.
- Azure Machine Learning'in sunduğu yerleşik izleme, ölçeklendirme, uyarı ve kimlik doğrulamasından yararlanmaya devam edin.
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'yı ve uzantıyı
mlyüklemek için bkz. CLI'yi (v2) yükleme ve ayarlama.Bu makaledeki örneklerde Bash kabuğu veya uyumlu bir kabuk kullandığınız varsayılır. Örneğin, Linux sisteminde veya Linux için Windows Alt Sistemi'nde kabuk 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 Engine, installed and running locally. This prerequisite is highly recommended. Modeli yerel olarak dağıtmak için buna ihtiyacınız vardır ve hata ayıklama için yararlıdır.
Deployment examples
The following table lists deployment examples that use custom containers and take advantage of various tools and technologies.
| Example | Azure CLI betiği | Description |
|---|---|---|
| minimal/multimodel | deploy-custom-container-minimal-multimodel | Azure Machine Learning çıkarım minimum görüntüsünü genişleterek birden fazla modeli tek bir dağıtımda dağıtır. |
| minimal/single-model | 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 çıkarım minimal 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 | deploy-custom-container-tfserving-half-plus-two-integrated | 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/single-model | 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ğı 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 varsayılan görüntüyü veya Microsoft'un sağladığı görüntülerden birini kullanmanız istenebilir.
Kaynak kodu indirme
The steps in this article use code samples from the azureml-examples repository. 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 hakkında 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ğıtma
Çevrimiçi uç noktanızı Azure'a dağıtmak için aşağıdaki bölümlerde yer alan adımları izleyin.
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 tfserving-endpoint.yml adlı bir YAML dosyası oluşturabilirsiniz:
$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 tfserving-deployment.yml adlı bir YAML dosyası oluşturabilirsiniz:
$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.
Base image
environment YAML'deki bölümde veya Environment Python'daki oluşturucuda, temel görüntüyü parametre olarak belirtirsiniz. 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 için Dockerfile'ın nasıl oluşturulacağını görmek için diğer örneklere bakabilirsiniz. Bazı sunucular CMD yönergeleri yerine ENTRYPOINT yönergeleri kullanır.
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:
- Liveness routes: To check whether a server is running, you use a liveness route.
- Readiness routes: To check whether a server is ready to do work, you use a readiness route.
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.
Scoring routes
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
When you deploy a model as an online endpoint, Azure Machine Learning mounts your model to your endpoint. Model bağlandığında, yeni bir Docker görüntüsü oluşturmak zorunda kalmadan modelin yeni sürümlerini dağıtabilirsiniz. By default, a model registered with the name my-model and version 1 is located on the following path inside your deployed container: /var/azureml-app/azureml-models/my-model/1.
Örneğin, aşağıdaki kurulumu göz önünde bulundurun:
- /azureml-examples/cli/endpoints/online/custom-container yerel makinenizde bir dizin yapısı
- Model adı:
half_plus_two
tfserving-deployment.yml dosyanızın bölümünde aşağıdaki satırları içerdiğini model varsayalım. Azure Machine Learning'de modeli kaydetmek için kullandığınız isme name değeri bu bölümde atıfta bulunur.
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
Değerin model_mount_path 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 BYOC (Kendi kapsayıcınızı getirin) senaryosunda kullanılabilir. KCG senaryosunda, çevrimiçi dağıtımın kullandığı ortamın parametresi yapılandırılmış olmalıdırinference_config. Ortamı oluştururken parametre belirtmek inference_config için Azure ML CLI veya Python SDK'sını kullanabilirsiniz. Studio kullanıcı arabirimi ş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, parametresini model_mount_path 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 yolunun altındadır:
Uç noktanızı ve dağıtımınızı oluşturma
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