ŞUNLAR IÇIN GEÇERLIDIR:
Azure CLI ml uzantısı v2 (geçerli)
Python SDK azure-ai-ml v2 (geçerli)
Bu makalede, modelinizi gerçek zamanlı çıkarımda kullanmak üzere çevrimiçi bir uç noktaya dağıtmayı öğreneceksiniz. Hata ayıklamak için yerel makinenize bir model dağıtarak başlarsınız. Ardından modeli Azure'da dağıtıp test eder, dağıtım günlüklerini görüntüler ve hizmet düzeyi sözleşmesini (SLA) izlersiniz. Bu makalenin sonunda, gerçek zamanlı çıkarım için kullanabileceğiniz ölçeklenebilir bir HTTPS/REST uç noktanız vardır.
Çevrimiçi uç noktalar, gerçek zamanlı çıkarım için kullanılan uç noktalardır. İki tür çevrimiçi uç nokta vardır: yönetilen çevrimiçi uç noktalar ve Kubernetes çevrimiçi uç noktaları. Farklılıklar hakkında daha fazla bilgi için bkz . Yönetilen çevrimiçi uç noktalar ve Kubernetes çevrimiçi uç noktaları.
Yönetilen çevrimiçi uç noktalar makine öğrenmesi modellerinizi anahtar teslimi şeklinde dağıtmanıza yardımcı olur. Yönetilen çevrimiçi uç noktalar Azure'da ölçeklenebilir ve tam olarak yönetilen bir şekilde güçlü CPU ve GPU makineleriyle çalışır. Yönetilen çevrimiçi uç noktalar modellerinizi sunma, ölçeklendirme, güvenli hale getirme ve izleme işlemleriyle ilgilenir. Bu yardım, temel alınan altyapıyı ayarlama ve yönetme ek yükünden sizi kurtarır.
Bu makaledeki ana örnek, dağıtım için yönetilen çevrimiçi uç noktaları kullanır. Bunun yerine Kubernetes'i kullanmak için, bu belgedeki yönetilen çevrimiçi uç nokta tartışmasıyla satır içi notlara bakın.
Önkoşullar
ŞUNLAR IÇIN GEÇERLIDIR:
Azure CLI ml uzantısı v2 (geçerli)
Azure CLI ve ml Azure CLI uzantısı yüklenir ve yapılandırılır. Daha fazla bilgi için bkz. CLI'yi (v2) yükleme ve ayarlama.
Bash kabuğu veya uyumlu bir kabuk, örneğin Linux sistemindeki bir kabuk veya Linux için Windows Alt Sistemi. Bu makaledeki Azure CLI örneklerinde bu tür bir kabuk kullandığınız varsayılır.
Azure Machine Learning çalışma alanı. Çalışma alanı oluşturma yönergeleri için bkz. Ayarlama.
Azure Machine Learning'deki işlemlere erişim vermek için Azure rol tabanlı erişim denetimi (Azure RBAC) kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza Azure Machine Learning çalışma alanı için Sahip veya Katkıda Bulunan rolü atanmalıdır veya özel bir rol izin vermelidir Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Çevrimiçi uç noktaları veya dağıtımları oluşturmak ve yönetmek için Azure Machine Learning studio kullanıyorsanız, kaynak grubu sahibinden ek izin Microsoft.Resources/deployments/write almanız gerekir. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanlarına erişimi yönetme.
(İsteğe bağlı) Yerel olarak dağıtmak için Docker Engine'i yerel bilgisayarınıza yüklemeniz gerekir. Sorunlarda hata ayıklamayı kolaylaştıran bu seçeneği kesinlikle öneririz .
ŞUNLAR IÇIN GEÇERLIDIR:
Python SDK'sı azure-ai-ml v2 (geçerli)
Azure Machine Learning çalışma alanı. Çalışma alanı oluşturma adımları için bkz. Çalışma alanı oluşturma.
Python v2 için Azure Machine Learning SDK'sı. SDK'yı yüklemek için aşağıdaki komutu kullanın:
pip install azure-ai-ml azure-identity
SDK'nın mevcut yüklemesini en son sürüme güncelleştirmek için aşağıdaki komutu kullanın:
pip install --upgrade azure-ai-ml azure-identity
Daha fazla bilgi için bkz. Python için Azure Machine Learning Paketi istemci kitaplığı.
Azure RBAC, Azure Machine Learning'deki işlemlere erişim vermek için kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza Azure Machine Learning çalışma alanı için Sahip veya Katkıda Bulunan rolü atanmalıdır veya özel bir rol izin vermelidir Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanlarına erişimi yönetme.
(İsteğe bağlı) Yerel olarak dağıtmak için Docker Engine'i yerel bilgisayarınıza yüklemeniz gerekir. Sorunlarda hata ayıklamayı kolaylaştıran bu seçeneği kesinlikle öneririz .
Bu makaledeki adımları izlemeden önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:
- Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
- Azure Machine Learning çalışma alanı ve işlem örneği. Bu kaynaklara sahip değilseniz bkz. Başlamak için ihtiyacınız olan kaynakları oluşturma.
- Azure RBAC, Azure Machine Learning'deki işlemlere erişim vermek için kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza Azure Machine Learning çalışma alanı için Sahip veya Katkıda Bulunan rolü atanmalıdır veya özel bir rol izin vermelidir
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.
Makine öğrenmesi için Azure CLI ve CLI uzantısı bu adımlarda kullanılır, ancak bunlar ana odak noktası değildir. Bunlar, şablonları Azure'a geçirmek ve şablon dağıtımlarının durumunu denetlemek için yardımcı program olarak daha fazla kullanılır.
Azure CLI ve ml Azure CLI uzantısı yüklenir ve yapılandırılır. Daha fazla bilgi için bkz. CLI'yi (v2) yükleme ve ayarlama.
Bash kabuğu veya uyumlu bir kabuk, örneğin Linux sistemindeki bir kabuk veya Linux için Windows Alt Sistemi. Bu makaledeki Azure CLI örneklerinde bu tür bir kabuk kullandığınız varsayılır.
Azure Machine Learning çalışma alanı. Çalışma alanı oluşturma yönergeleri için bkz. Ayarlama.
- Azure RBAC, Azure Machine Learning'deki işlemlere erişim vermek için kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza Azure Machine Learning çalışma alanı için Sahip veya Katkıda Bulunan rolü atanmalıdır veya özel bir rol izin vermelidir
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.
Dağıtım için yeterli sanal makine (VM) kotası ayırdığınızdan emin olun. Azure Machine Learning, bazı VM sürümlerinde yükseltme yapmak amacıyla işlem kaynaklarınızdan 20% rezerv eder. Örneğin, bir dağıtımda 10 örnek istiyorsanız, VM sürümü için her çekirdek sayısı için 12 kotanız olmalıdır. Ek işlem kaynaklarının hesaplanmaması hataya neden olur. Bazı VM sürümleri ek kota ayırmasından muaftır. Kota ayırma hakkında daha fazla bilgi için bkz. Sanal makine kotasının dağıtım için ayarlanması.
Alternatif olarak, Azure Machine Learning paylaşılan kota havuzundan kotayı sınırlı bir süre için kullanabilirsiniz. Azure Machine Learning, çeşitli bölgelerdeki kullanıcıların kullanılabilirliğe bağlı olarak sınırlı bir süre için test gerçekleştirmek için kotaya erişebileceği paylaşılan bir kota havuzu sağlar.
Model kataloğundan yönetilen bir çevrimiçi uç noktaya Llama-2, Phi, Nemotron, Mistral, Dolly ve Deci-DeciLM modellerini dağıtmak için stüdyoyu kullandığınızda Azure Machine Learning, test yapabilmeniz için paylaşılan kota havuzuna kısa bir süre için erişmenizi sağlar. Paylaşılan kota havuzu hakkında daha fazla bilgi için bkz . Azure Machine Learning paylaşılan kotası.
Sisteminizi hazırlama
Ortam değişkenlerini belirleme
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ğerlerinin birden çok kez geçirilmesini önlemek için şu kodu çalıştırın:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Örnek deposunu kopyalama
Bu makaleyi takip etmek için önce azureml-examples deposunu kopyalayın ve ardından deponun azureml-examples/cli dizinine geçin:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli
Yalnızca en son commit'i depoya kopyalamak için --depth 1 kullanın; bu, işlemin tamamlanma süresini kısaltır.
Bu öğreticideki komutlar, cli dizinindeki deploy-local-endpoint.sh ve deploy-managed-online-endpoint.sh dosyalarında yer alır. YAML yapılandırma dosyaları uç noktalarda/çevrimiçi/yönetilen/örnek/ alt dizinindedir.
Not
Kubernetes çevrimiçi uç noktaları için YAML yapılandırma dosyaları endpoints/online/kubernetes/ alt dizinindedir.
Örnek deposunu kopyalama
Eğitim örneklerini çalıştırmak için önce azureml-examples deposunu kopyalayın ve ardından azureml-examples/sdk/python/endpoints/online/managed dizinine geçin:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Yalnızca en son commit'i depoya kopyalamak için --depth 1 kullanın; bu, işlemin tamamlanma süresini kısaltır.
Bu makaledeki bilgiler online-endpoints-simple-deployment.ipynb not defterini temel alır. Kodların sırası biraz farklı olsa da, bu makaleyle aynı içeriği içerir.
Azure Machine Learning çalışma alanına bağlanma
Çalışma alanı , Azure Machine Learning için en üst düzey kaynaktır. Azure Machine Learning'i kullanırken oluşturduğunuz tüm yapıtlarla çalışmak için merkezi bir yer sağlar. Bu bölümde, dağıtım görevlerini gerçekleştirdiğiniz çalışma alanına bağlanacaksınız. Birlikte ilerlemek için online-endpoints-simple-deployment.ipynb not defterinizi açın.
Gerekli kitaplıkları içeri aktarın:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration
)
from azure.identity import DefaultAzureCredential
Not
Kubernetes çevrimiçi uç noktasını kullanıyorsanız, KubernetesOnlineEndpoint ve KubernetesOnlineDeployment sınıfını azure.ai.ml.entities kütüphanesinden içeri aktarın.
Çalışma alanı ayrıntılarını yapılandırın ve çalışma alanına bir tanıtıcı alın.
Bir çalışma alanına bağlanmak için şu tanımlayıcı parametrelerine ihtiyacınız vardır: abonelik, kaynak grubu ve çalışma alanı adı. Gerekli Azure Machine Learning çalışma alanına ilişkin bir tanıtıcı elde etmek için, MLClient içindeki bu ayrıntıları azure.ai.ml kullanırsınız. Bu örnek varsayılan Azure kimlik doğrulamasını kullanır.
# enter details of your Azure Machine Learning workspace
subscription_id = "<subscription ID>"
resource_group = "<resource group>"
workspace = "<workspace name>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Yerel makinenizde Git yüklüyse örnek deposunu kopyalamak için yönergeleri izleyebilirsiniz. Aksi takdirde, örnek deposundaki dosyaları indirmek için yönergeleri izleyin.
Örnek deposunu kopyalama
Bu makaleyi takip etmek için önce azureml-examples deposunu kopyalayın ve ardından azureml-examples/cli/endpoints/online/model-1 dizinine geçin.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
Yalnızca en son commit'i depoya kopyalamak için --depth 1 kullanın; bu, işlemin tamamlanma süresini kısaltır.
Örnek deposundan dosya indirme
Örnek depoyu kopyaladıysanız, yerel makinenizde bu örnekteki dosyaların kopyaları zaten vardır ve sonraki bölüme atlayabilirsiniz. Depoyu kopyalamadıysanız yerel makinenize indirin.
-
Örnek deposuna gidin (azureml-examples).
-
<> Sayfadaki Kod düğmesine gidin ve Yerel sekmesinde ZIP İndir'i seçin.
-
/cli/endpoints/online/model-1/model klasörünü ve /cli/endpoints/online/model-1/onlinescoring/score.py dosyasını bulun.
Ortam değişkenlerini belirleme
Bu makaledeki örneklerde kullanabilmek için aşağıdaki ortam değişkenlerini ayarlayın. Değerleri Azure abonelik kimliğiniz, çalışma alanınızın bulunduğu Azure bölgesi, çalışma alanını içeren kaynak grubu ve çalışma alanı adıyla değiştirin:
export SUBSCRIPTION_ID="<subscription ID>"
export LOCATION="<your region>"
export RESOURCE_GROUP="<resource group>"
export WORKSPACE="<workspace name>"
Şablon örneklerinden birkaçı, çalışma alanınız için Azure Blob Depolama'ya dosya yüklemenizi gerektirir. Aşağıdaki adımlar çalışma alanını sorgular ve bu bilgileri örneklerde kullanılan ortam değişkenlerinde depolar:
Erişim belirteci alma:
TOKEN=$(az account get-access-token --query accessToken -o tsv)
REST API sürümünü ayarlayın:
API_VERSION="2022-05-01"
Depolama bilgilerini alın:
# Get values for storage account
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/datastores?api-version=$API_VERSION&isDefault=true" \
--header "Authorization: Bearer $TOKEN")
AZUREML_DEFAULT_DATASTORE=$(echo $response | jq -r '.value[0].name')
AZUREML_DEFAULT_CONTAINER=$(echo $response | jq -r '.value[0].properties.containerName')
export AZURE_STORAGE_ACCOUNT=$(echo $response | jq -r '.value[0].properties.accountName')
Örnek deposunu kopyalama
Bu makaleyi takip etmek için önce azureml-examples deposunu kopyalayın ve ardından azureml-examples dizinine geçin:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
Yalnızca en son commit'i depoya kopyalamak için --depth 1 kullanın; bu, işlemin tamamlanma süresini kısaltır.
Uç noktayı tanımlama
Çevrimiçi uç nokta tanımlamak için uç nokta adını ve kimlik doğrulama modunu belirtin. Yönetilen çevrimiçi uç noktalar hakkında daha fazla bilgi için bkz . Çevrimiçi uç noktalar.
Uç nokta adı ayarlama
Uç nokta adınızı ayarlamak için aşağıdaki komutu çalıştırın. değerini Azure bölgesinde benzersiz bir adla değiştirin <YOUR_ENDPOINT_NAME> . Adlandırma kuralları hakkında daha fazla bilgi için Uç nokta sınırları bölümüne bakın.
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Aşağıdaki kod parçacığı uç noktaları/çevrimiçi/yönetilen/örnek/endpoint.yml dosyasını gösterir:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key
Uç nokta YAML biçimi başvurusu aşağıdaki tabloda açıklanmıştır. Bu özniteliklerin nasıl belirtileceğini öğrenmek için çevrimiçi uç nokta YAML başvurusuna bakın. Yönetilen uç noktalarla ilgili sınırlar hakkında bilgi için bkz. Azure Machine Learning çevrimiçi uç noktaları ve toplu iş uç noktaları.
| Tuş |
Açıklama |
$schema |
(İsteğe bağlı) YAML şeması. YAML dosyasındaki tüm kullanılabilir seçenekleri görmek için, şemayı bir tarayıcıdaki önceki kod parçacığında görüntüleyebilirsiniz. |
name |
Uç noktanın adı. |
auth_mode |
Anahtar tabanlı kimlik doğrulaması için kullanın key . Azure Machine Learning belirteç tabanlı kimlik doğrulaması için kullanın aml_token . Microsoft Entra belirteç tabanlı kimlik doğrulaması (önizleme) için kullanın aad_token . Kimlik doğrulaması hakkında daha fazla bilgi için bkz . Çevrimiçi uç noktalar için istemcilerin kimliğini doğrulama. |
Önce çevrimiçi uç noktanın adını tanımlayın ve ardından uç noktayı yapılandırın.
değerini Azure bölgesinde benzersiz bir adla değiştirin <YOUR_ENDPOINT_NAME> veya rastgele bir ad tanımlamak için örnek yöntemi kullanın. Kullanmadığınız yöntemi sildiğinizden emin olun. Adlandırma kuralları hakkında daha fazla bilgi için Uç nokta sınırları bölümüne bakın.
# method 1: define an endpoint name
endpoint_name = "<YOUR_ENDPOINT_NAME>"
# method 2: example way to define a random name
import datetime
endpoint_name = "endpt-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name = endpoint_name,
description="this is a sample endpoint",
auth_mode="key"
)
Önceki kod anahtar tabanlı kimlik doğrulaması için kullanır key . Azure Machine Learning belirteç tabanlı kimlik doğrulamasını kullanmak için kullanın aml_token. Microsoft Entra belirteç tabanlı kimlik doğrulamasını (önizleme) kullanmak için kullanın aad_token. Kimlik doğrulaması hakkında daha fazla bilgi için bkz . Çevrimiçi uç noktalar için istemcilerin kimliğini doğrulama.
Azure'a stüdyodan dağıttığınızda, buna eklenecek bir uç nokta ve dağıtım oluşturursunuz. Bu sırada, uç nokta ve dağıtım için ad sağlamanız istenir.
Uç nokta adı ayarlama
Uç nokta adınızı ayarlamak için aşağıdaki komutu çalıştırarak rastgele bir ad oluşturun. Azure bölgesinde benzersiz olmalıdır. Adlandırma kuralları hakkında daha fazla bilgi için Uç nokta sınırları bölümüne bakın.
export ENDPOINT_NAME=endpoint-`echo $RANDOM`
Uç noktayı ve dağıtımı tanımlamak için bu makalede azure resource manager şablonları (ARM şablonları) online-endpoint.json ve online-endpoint-deployment.jsonkullanılır. Çevrimiçi uç nokta ve dağıtım tanımlama şablonlarını kullanmak için Azure'a Dağıtma bölümüne bakın.
Dağıtımı tanımlama
Dağıtım, gerçek çıkarım yapan modeli barındırmak için gereken bir kaynak kümesidir. Bu örnekte, regresyona neden olan bir scikit-learn model dağıtır ve modeli belirli bir giriş isteğinde çalıştırmak için puanlama betiği score.py kullanırsınız.
Dağıtımın temel öznitelikleri hakkında bilgi edinmek için bkz . Çevrimiçi dağıtımlar.
Dağıtım yapılandırmanız, dağıtmak istediğiniz modelin konumunu kullanır.
Aşağıdaki kod parçacığı uç noktaları/çevrimiçi/yönetilen/örnek/blue-deployment.yml dosyasını gösterir ve dağıtımı yapılandırmak için gerekli tüm girişleri içerir:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: ../../model-1/model/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yaml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
blue-deployment.yml dosyası aşağıdaki dağıtım özniteliklerini belirtir:
-
model: path parametresini kullanarak model özelliklerini satır içi olarak belirtir (dosyaların nereden yükleneceği). CLI, model dosyalarını otomatik olarak karşıya yükler ve modeli otomatik olarak oluşturulan bir adla kaydeder.
-
environment: Dosyaların nereden yükleneceğini içeren satır içi tanımları kullanır. CLI conda.yaml dosyasını otomatik olarak yükler ve ortamı kaydeder. Daha sonra, ortamı oluşturmak için dağıtım, temel görüntü için image parametresini kullanır. Bu örnekte, bu mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest.
conda_file Bağımlılıklar temel görüntünün üzerine yüklenir.
-
code_configuration: Puanlama modeli için Python kaynağı gibi yerel dosyaları dağıtım sırasında geliştirme ortamından karşıya yükler.
YAML şeması hakkında daha fazla bilgi için çevrimiçi uç nokta YAML başvurusuna bakın.
Not
İşlem hedefi olarak yönetilen çevrimiçi uç noktalar yerine Kubernetes uç noktalarını kullanmak için:
- Azure Machine Learning stüdyosu kullanarak Kubernetes kümenizi oluşturun ve Azure Machine Learning çalışma alanınıza işlem hedefi olarak ekleyin.
- Yönetilen uç nokta YAML yerine Kubernetes'i hedeflemek için uç nokta YAML'sini kullanın. değerini
compute kayıtlı işlem hedefinizin adıyla değiştirmek için YAML'yi düzenlemeniz gerekir. Kubernetes dağıtımı için geçerli olan diğer özelliklere sahip olan bu deployment.yaml dosyasını kullanabilirsiniz.
Bu makalede yönetilen çevrimiçi uç noktalar için kullanılan tüm komutlar, Kubernetes uç noktaları için geçerli olmayan aşağıdaki özellikler dışında Kubernetes uç noktaları için de geçerlidir:
Dağıtımı yapılandırmak için aşağıdaki kodu kullanın:
model = Model(path="../model-1/model/sklearn_regression_model.pkl")
env = Environment(
conda_file="../model-1/environment/conda.yaml",
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest",
)
blue_deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
-
Model: path parametresini kullanarak model özelliklerini satır içi olarak belirtir (dosyaların nereden yükleneceği). SDK, model dosyalarını otomatik olarak karşıya yükler ve modeli otomatik olarak oluşturulan bir adla kaydeder.
-
Environment: Dosyaların nereden yükleneceğini içeren satır içi tanımları kullanır. SDK, conda.yaml dosyasını otomatik olarak karşıya yükleyip ortamı kaydeder. Daha sonra, ortamı oluşturmak için dağıtım, temel görüntü için image parametresini kullanır. Bu örnekte, bu mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest.
conda_file Bağımlılıklar temel görüntünün üzerine yüklenir.
-
CodeConfiguration: Puanlama modeli için Python kaynağı gibi yerel dosyaları dağıtım sırasında geliştirme ortamından karşıya yükler.
Çevrimiçi dağıtım tanımı hakkında daha fazla bilgi için bkz . OnlineDeployment Sınıfı.
Azure'a dağıttığınızda, buna eklemek için bir uç nokta ve dağıtım oluşturursunuz. Bu sırada, uç nokta ve dağıtım için ad sağlamanız istenir.
Puanlama betiğini anlama
Çevrimiçi uç noktalar için puanlama betiğinin biçimi, CLI'nın önceki sürümünde ve Python SDK'sında kullanılan biçimle aynıdır.
içinde code_configuration.scoring_script belirtilen puanlama betiğinin bir init() işlevi ve bir run() işlevi olmalıdır.
Puanlama betiğinin bir init() işlevi ve bir run() işlevi olmalıdır.
Puanlama betiğinin bir init() işlevi ve bir run() işlevi olmalıdır.
Puanlama betiğinin bir init() işlevi ve bir run() işlevi olmalıdır. Bu makalede score.py dosyası kullanılır.
Dağıtım için bir şablon kullandığınızda, önce puanlama dosyasını Blob Depolama'ya yüklemeniz ve ardından kaydetmeniz gerekir:
Aşağıdaki kod, puanlama dosyasını karşıya yüklemek için Azure CLI komutunu az storage blob upload-batch kullanır:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s cli/endpoints/online/model-1/onlinescoring --account-name $AZURE_STORAGE_ACCOUNT
Aşağıdaki kod, kodu kaydetmek için bir şablon kullanır:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/code-version.json \
--parameters \
workspaceName=$WORKSPACE \
codeAssetName="score-sklearn" \
codeUri="https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score"
Bu örnekte, daha önce kopyaladığınız veya indirdiğiniz depodan score.py dosyası kullanılır:
import os
import logging
import json
import numpy
import joblib
def init():
"""
This function is called when the container is initialized/started, typically after create/update of the deployment.
You can write the logic here to perform init operations like caching the model in memory
"""
global model
# AZUREML_MODEL_DIR is an environment variable created during deployment.
# It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
# Please provide your model's folder name if there is one
model_path = os.path.join(
os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
)
# deserialize the model file back into a sklearn model
model = joblib.load(model_path)
logging.info("Init complete")
def run(raw_data):
"""
This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
In the example we extract the data from the json input and call the scikit-learn model's predict()
method and return the result back
"""
logging.info("model 1: request received")
data = json.loads(raw_data)["data"]
data = numpy.array(data)
result = model.predict(data)
logging.info("Request processed")
return result.tolist()
kapsayıcı init() başlatıldığında veya başlatıldığında işlev çağrılır. Başlatma genellikle dağıtım oluşturulduktan veya güncelleştirildikten kısa bir süre sonra gerçekleşir.
init işlevi, modeli önbelleğe alma gibi genel başlatma işlemleri için mantık yazacak yerdir (bu score.py dosyasında gösterildiği gibi).
Uç nokta her çağrıldığında, run() işlevi de çağrılır. Gerçek puanlama ve tahmini yapar. bu score.py dosyasında işlev bir run() JSON girişinden veri ayıklar, scikit-learn modelinin predict() yöntemini çağırır ve ardından tahmin sonucunu döndürür.
Yerel uç nokta kullanarak yerel olarak dağıtma ve hata ayıklama
Azure'a dağıtmadan önce kodunuzu ve yapılandırmanızı doğrulamak ve hatalarını ayıklamak için uç noktanızı yerel olarak test etmenizi kesinlikle öneririz . Azure CLI ve Python SDK'sı yerel uç noktaları ve dağıtımları destekler, ancak Azure Machine Learning studio ve ARM şablonları desteklemez.
Yerel olarak dağıtmak için Docker Altyapısı'nın yüklü ve çalışır durumda olması gerekir. Docker Altyapısı genellikle bilgisayar başlatıldığında başlar. Aksi takdirde Docker Altyapısı sorunlarını giderebilirsiniz.
Azure Machine Learning çıkarım HTTP sunucusu Python paketini kullanarak Docker Engine olmadan skorlama betiğinizi yerel olarak hata ayıklayabilirsiniz. Çıkarım sunucusuyla hata ayıklama, yerel uç noktalara dağıtmadan önce puanlama betiğinin hatalarını ayıklamanıza yardımcı olur, böylece dağıtım kapsayıcısı yapılandırmalarından etkilenmeden hata ayıklayabilirsiniz.
Azure'a dağıtmadan önce çevrimiçi uç noktalarda yerel olarak hata ayıklama hakkında daha fazla bilgi için bkz . Çevrimiçi uç nokta hata ayıklama.
Modeli yerel olarak dağıtma
İlk olarak bir uç nokta oluşturun. İsteğe bağlı olarak, yerel uç nokta için bu adımı atlayabilirsiniz. Dağıtımı doğrudan oluşturabilirsiniz (sonraki adım), bu da gerekli meta verileri oluşturur. Modelleri yerel olarak dağıtmak, geliştirme ve test amacıyla kullanışlıdır.
az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
ml_client.online_endpoints.begin_create_or_update(endpoint, local=True)
Stüdyo yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
Şablon yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
Şimdi uç noktanın altında adlı blue bir dağıtım oluşturun.
az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml
bayrağı CLI'yi --local Docker ortamında uç noktayı dağıtmaya yönlendirir.
ml_client.online_deployments.begin_create_or_update(
deployment=blue_deployment, local=True
)
bayrağı, local=True uç noktayı Docker ortamında dağıtmak için SDK'ya yönlendirir.
Stüdyo yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
Şablon yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
İpucu
Uç noktalarınızı yerel olarak test etmek ve hatalarını ayıklamak için Visual Studio Code kullanın. Daha fazla bilgi için bkz . Visual Studio Code'da çevrimiçi uç noktalarda yerel olarak hata ayıklama.
Yerel dağıtımın başarılı olduğunu doğrulayın
Modelin hatasız dağıtılıp dağıtılmadığını görmek için dağıtım durumunu denetleyin:
az ml online-endpoint show -n $ENDPOINT_NAME --local
Çıktı aşağıdaki JSON'a benzer şekilde görünmelidir.
provisioning_state parametresi Succeeded'dir.
{
"auth_mode": "key",
"location": "local",
"name": "docs-endpoint",
"properties": {},
"provisioning_state": "Succeeded",
"scoring_uri": "http://localhost:49158/score",
"tags": {},
"traffic": {}
}
ml_client.online_endpoints.get(name=endpoint_name, local=True)
yöntemi varlığıManagedOnlineEndpoint.
provisioning_state parametresi Succeeded'dir.
ManagedOnlineEndpoint({'public_network_access': None, 'provisioning_state': 'Succeeded', 'scoring_uri': 'http://localhost:49158/score', 'swagger_uri': None, 'name': 'endpt-10061534497697', 'description': 'this is a sample endpoint', 'tags': {}, 'properties': {}, 'id': None, 'Resource__source_path': None, 'base_path': '/path/to/your/working/directory', 'creation_context': None, 'serialize': <msrest.serialization.Serializer object at 0x7ffb781bccd0>, 'auth_mode': 'key', 'location': 'local', 'identity': None, 'traffic': {}, 'mirror_traffic': {}, 'kind': None})
Stüdyo yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
Şablon yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
Aşağıdaki tabloda için provisioning_stateolası değerler yer alır:
| Değer |
Açıklama |
Creating |
Kaynak oluşturuluyor. |
Updating |
Kaynak güncelleştiriliyor. |
Deleting |
Kaynak siliniyor. |
Succeeded |
Oluşturma veya güncelleştirme işlemi başarılı oldu. |
Failed |
Oluşturma, güncelleştirme veya silme işlemi başarısız oldu. |
Modelinizi kullanarak verileri puan eklemek için yerel uç noktayı çağırma
komutunu kullanarak invoke ve bir JSON dosyasında depolanan sorgu parametrelerini geçirerek modeli puanlamak için uç noktayı çağırın:
az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
REST istemcisi (curl gibi) kullanmak istiyorsanız puanlama URI'sine sahip olmanız gerekir. Puanlama URI'sini almak için komutunu çalıştırın az ml online-endpoint show --local -n $ENDPOINT_NAME. Döndürülen verilerde özniteliğini scoring_uri bulun.
komutunu kullanarak invoke ve bir JSON dosyasında depolanan sorgu parametrelerini geçirerek modeli puanlamak için uç noktayı çağırın.
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
request_file="../model-1/sample-request.json",
local=True,
)
REST istemcisi (curl gibi) kullanmak istiyorsanız puanlama URI'sine sahip olmanız gerekir. Puanlama URI'sini almak için aşağıdaki kodu çalıştırın. Döndürülen verilerde özniteliğini scoring_uri bulun.
endpoint = ml_client.online_endpoints.get(endpoint_name, local=True)
scoring_uri = endpoint.scoring_uri
Stüdyo yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
Şablon yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
Çağırma işleminden çıktı için günlükleri gözden geçirin
Örnek score.py dosyasında, run() yöntemi bazı çıkışları konsola günlüğe kaydeder.
Komutunu kullanarak get-logs bu çıkışı görüntüleyebilirsiniz:
az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME
Yöntemini kullanarak get_logs bu çıkışı görüntüleyebilirsiniz:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, local=True, lines=50
)
Stüdyo yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
Şablon yerel uç noktaları desteklemez. Uç noktayı yerel olarak test etme adımları için bkz. Azure CLI veya Python sekmeleri.
Çevrimiçi uç noktanızı Azure'a dağıtma
Ardından çevrimiçi uç noktanızı Azure'a dağıtın. Üretim için en iyi uygulama olarak, dağıtımınızda kullandığınız modeli ve ortamı kaydetmenizi öneririz.
Modelinizi ve ortamınızı kaydetme
Dağıtım sırasında kayıtlı adlarını ve sürümlerini belirtebilmeniz için modelinizi ve ortamınızı Azure'a dağıtımdan önce kaydetmenizi öneririz. Varlıklarınızı kaydettikten sonra, dağıtımları her oluşturduğunuzda karşıya yüklemenize gerek kalmadan yeniden kullanabilirsiniz. Bu uygulama yeniden üretilebilirliği ve izlenebilirliği artırır.
Azure'a dağıtımın aksine, yerel dağıtım kayıtlı modellerin ve ortamların kullanılmasını desteklemez. Bunun yerine, yerel dağıtım yerel model dosyalarını kullanır ve yalnızca yerel dosyaları olan ortamları kullanır.
Azure'a dağıtım için yerel veya kayıtlı varlıkları (modeller ve ortamlar) kullanabilirsiniz. Makalenin bu bölümünde, Azure'a yapılan dağıtım kayıtlı varlıkları kullanır, ancak bunun yerine yerel varlıkları kullanma seçeneğiniz vardır. Yerel dağıtım için kullanılacak yerel dosyaları karşıya yükleyen bir dağıtım yapılandırması örneği için bkz . Dağıtımı yapılandırma.
Modeli ve ortamı kaydetmek için veya model: azureml:my-model:1biçimini environment: azureml:my-env:1 kullanın.
Kayıt için, model ve environment YAML tanımlarını ayrı YAML dosyalarına ayıklayabilir ve uç noktalarını noktalarda/çevrimiçi/yönetilen/örnek klasörüne yerleştirebilir, az ml model create ve az ml environment create komutlarını kullanabilirsiniz. Bu komutlar hakkında daha fazla bilgi edinmek için ve az ml model create -hkomutunu çalıştırınaz ml environment create -h.
Model için bir YAML tanımı oluşturun. Dosyayı model.yml adlandırın:
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: my-model
path: ../../model-1/model/
Modeli kaydedin:
az ml model create -n my-model -v 1 -f endpoints/online/managed/sample/model.yml
Ortam için bir YAML tanımı oluşturun. Dosyayı environment.yml adlandırın:
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: my-env
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
conda_file: ../../model-1/environment/conda.yaml
Ortamı kaydedin:
az ml environment create -n my-env -v 1 -f endpoints/online/managed/sample/environment.yml
Modelinizi varlık olarak kaydetme hakkında daha fazla bilgi için bkz. Azure CLI veya Python SDK'sını kullanarak model kaydetme. Ortam oluşturma hakkında daha fazla bilgi için bkz. Özel ortam oluşturma.
Modeli kaydetme:
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="../model-1/model/",
type=AssetTypes.CUSTOM_MODEL,
name="my-model",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
Ortamı kaydedin:
from azure.ai.ml.entities import Environment
env_docker_conda = Environment(
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
conda_file="../model-1/environment/conda.yaml",
name="my-env",
description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)
Dağıtım sırasında kayıtlı adını ve sürümünü belirtebilmeniz için modelinizi varlık olarak kaydetmeyi öğrenmek için bkz. Azure CLI veya Python SDK'sını kullanarak model kaydetme.
Ortam oluşturma hakkında daha fazla bilgi için bkz. Özel ortam oluşturma.
Modeli kaydedin
Model kaydı, çalışma alanında tek bir model dosyası veya birden çok dosya içeren bir dizin içerebilen mantıksal bir varlıktır. Üretim için en iyi uygulama olarak modeli ve ortamı kaydedin. Bu makalede uç noktayı ve dağıtımı oluşturmadan önce modeli içeren model klasörünü kaydedin.
Örnek modeli kaydetmek için şu adımları izleyin:
Azure Machine Learning stüdyosu'a gidin.
Sol bölmede Modeller sayfasını seçin.
Kaydet'i ve ardından Yerel dosyalardan'ı seçin.
Model türü için Belirtilmemiş tür'e tıklayın.
Gözat'ı ve ardından Klasöre gözat'ı seçin.
Daha önce kopyaladığınız veya indirdiğiniz deponun yerel kopyasından \azureml-examples\cli\endpoints\online\model-1\model klasörünü seçin. İstendiğinde Yüklemeyi Başlat ve yüklemenin bitmesini bekleyin.
sonrakiseçin.
Model için tanıdık bir ad girin. Bu makaledeki adımlarda, modelin olarak adlandırıldığını model-1varsayalım.
Kaydı tamamlamak için İleri'yi ve ardından Kaydet'i seçin.
Kayıtlı modellerle çalışma hakkında daha fazla bilgi için bkz. Kayıtlı modellerle çalışma.
Ortamı oluşturma ve kaydetme
Sol bölmede Ortamlar sayfasını seçin.
Özel ortamlar sekmesini ve ardından Oluştur'u seçin.
Ayarlar sayfasında ortam için my-env gibi bir ad girin.
Ortam kaynağı seç için Mevcut docker görüntüsünü isteğe bağlı conda kaynağıyla kullan'ı seçin.
Özelleştir sayfasına gitmek için İleri'yi seçin.
Daha önce kopyaladığınız veya indirdiğiniz depodan \azureml-examples\cli\endpoints\online\model-1\environment\conda.yaml dosyasının içeriğini kopyalayın.
İçeriği metin kutusuna yapıştırın.
Oluştur sayfasına gelene kadar İleri'yi ve ardından Oluştur'u seçin.
Stüdyoda ortam oluşturma hakkında daha fazla bilgi için bkz. Ortam oluşturma.
Modeli şablon kullanarak kaydetmek için önce model dosyasını Blob Depolama'ya yüklemeniz gerekir. Aşağıdaki örnek, çalışma alanınızın varsayılan depolama alanına dosya yüklemek için komutunu kullanır az storage blob upload-batch :
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT
Dosyayı karşıya yükledikten sonra, model kaydı oluşturmak için şablonu kullanın. Aşağıdaki örnekte parametresi modelin modelUri yolunu içerir:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/model-version.json \
--parameters \
workspaceName=$WORKSPACE \
modelAssetName="sklearn" \
modelUri="azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl"
Ortamın bir bölümü, modeli barındırmak için gereken model bağımlılıklarını belirten bir conda dosyasıdır. Aşağıdaki örnekte conda dosyasının içeriğinin ortam değişkenlerine nasıl okunduğu gösterilmektedir:
CONDA_FILE=$(cat cli/endpoints/online/model-1/environment/conda.yaml)
Aşağıdaki örnekte, ortamı kaydetmek için şablonun nasıl kullanılacağı gösterilmektedir. Önceki adımdaki conda dosyasının içeriği, parametresi kullanılarak şablona condaFile geçirilir:
ENV_VERSION=$RANDOM
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/environment-version.json \
--parameters \
workspaceName=$WORKSPACE \
environmentAssetName=sklearn-env \
environmentAssetVersion=$ENV_VERSION \
dockerImage=mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1 \
condaFile="$CONDA_FILE"
Önemli
Dağıtımınız için özel bir ortam tanımlarken paketin azureml-inference-server-http conda dosyasına eklendiğinden emin olun. Bu paket, çıkarım sunucusunun düzgün çalışması için gereklidir. Kendi özel ortamınızı yaratmaya aşina değilseniz, minimal-py-inference kullanmayan özel modeller için mlflow veya mlflow-py-inference kullanan modeller için mlflow gibi seçilmiş ortamlarımızdan birini kullanabilirsiniz. Bu seçilmiş ortamları Azure Machine Learning studio örneğinizin Ortamlar sekmesinde bulabilirsiniz.
Dağıtım yapılandırmanız, dağıtmak istediğiniz kayıtlı modeli ve kayıtlı ortamınızı kullanır.
Dağıtım tanımınızda kayıtlı varlıkları (model ve ortam) kullanın. Aşağıdaki kod örneği, uç birimleri/çevrimiçi/yönetilen/örnek/blue-deployment-with-registered-assets.yml dosyasını gösterir ve dağıtımı yapılandırmak için gerekli olan tüm bilgileri içerir:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1
Bir dağıtımı yapılandırmak için kayıtlı modeli ve ortamı kullanın:
model = "azureml:my-model:1"
env = "azureml:my-env:1"
blue_deployment_with_registered_assets = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
Stüdyodan dağıtım yaptığınızda, buna ek olarak bir uç nokta ve bir dağıtım işlemi oluşturursunuz. Bu sırada, uç nokta ve dağıtım için ad girmeniz istenir.
Farklı CPU ve GPU örneği türleri ve görüntüleri kullanma
Hem yerel dağıtım hem de Azure'a dağıtım için dağıtım tanımınızda CPU veya GPU örneği türlerini ve görüntülerini belirtebilirsiniz.
blue-deployment-with-registered-assets.yml dosyasındaki dağıtım tanımınızda genel amaçlı bir tür Standard_DS3_v2 örneği ve GPU olmayan Docker görüntüsü mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestkullanılmıştır. GPU işlemi için bir GPU işlem türü sürümü ve bir GPU Docker görüntüsü seçin.
Desteklenen genel amaçlı ve GPU örneği türleri için bkz. Yönetilen çevrimiçi uç noktalar SKU listesi. Azure Machine Learning CPU ve GPU temel görüntülerinin listesi için bkz . Azure Machine Learning temel görüntüleri.
Hem yerel dağıtım hem de Azure'a dağıtım için dağıtım yapılandırmanızda CPU veya GPU örneği türlerini ve görüntülerini belirtebilirsiniz.
Daha önce genel amaçlı bir tür Standard_DS3_v2 örneği ve GPU olmayan bir Docker görüntüsü mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestkullanan bir dağıtım yapılandırmıştınız. GPU işlemi için bir GPU işlem türü sürümü ve bir GPU Docker görüntüsü seçin.
Desteklenen genel amaçlı ve GPU örneği türleri için bkz. Yönetilen çevrimiçi uç noktalar SKU listesi. Azure Machine Learning CPU ve GPU temel görüntülerinin listesi için bkz . Azure Machine Learning temel görüntüleri.
Ortamın önceki kaydı, mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 parametresini kullanarak değeri environment-version.json şablonuna geçirerek GPU olmayan bir Docker görüntüsü dockerImage belirtir. GPU işlemi için, şablona GPU Docker görüntüsü için bir değer sağlayın (parametresini dockerImage kullanın) ve şablona online-endpoint-deployment.json bir GPU işlem türü sürümü sağlayın (parametresini skuName kullanın).
Desteklenen genel amaçlı ve GPU örneği türleri için bkz. Yönetilen çevrimiçi uç noktalar SKU listesi. Azure Machine Learning CPU ve GPU temel görüntülerinin listesi için bkz . Azure Machine Learning temel görüntüleri.
Ardından çevrimiçi uç noktanızı Azure'a dağıtın.
Azure’a dağıtın
Uç noktayı Azure bulutunda oluşturun:
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Uç noktanın altında adlı blue dağıtımı oluşturun:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
Temel alınan ortamın veya görüntünün ilk kez oluşturulup oluşturulmadığına bağlı olarak dağıtım oluşturma işlemi 15 dakika kadar sürebilir. Aynı ortamı kullanan sonraki dağıtımlar daha hızlı işlenir.
CLI konsolunuzu engellememek isterseniz komutuna bayrağını --no-wait ekleyebilirsiniz. Ancak, bu seçenek dağıtım durumunun etkileşimli görünümünü durdurur.
--all-traffic Dağıtımı oluşturmak için kullanılan koddaki az ml online-deployment create bayrak, uç nokta trafiğinin %100'unu yeni oluşturulan mavi dağıtıma ayırır. Bu bayrağın kullanılması geliştirme ve test amacıyla yararlıdır, ancak üretim için trafiği açık bir komutla yeni dağıtıma yönlendirmek isteyebilirsiniz. Örneğin, kullanın az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".
Uç noktayı oluşturun:
Daha önce tanımladığınız parametreyi endpoint ve daha önce oluşturduğunuz parametreyi MLClient kullanarak artık çalışma alanında uç nokta oluşturabilirsiniz. Bu komut uç nokta oluşturmayı başlatır ve uç nokta oluşturma işlemi devam ederken bir onay yanıtı döndürür.
ml_client.online_endpoints.begin_create_or_update(endpoint)
Dağıtımı oluşturun:
Daha önce tanımladığınız parametreyi blue_deployment_with_registered_assets ve daha önce oluşturduğunuz parametreyi MLClient kullanarak, artık dağıtımı çalışma alanında oluşturabilirsiniz. Bu komut dağıtım oluşturmayı başlatır ve dağıtım oluşturma işlemi devam ederken bir onay yanıtı döndürür.
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
Python konsolunuzu engellememek isterseniz, bayrağını no_wait=True parametrelere ekleyebilirsiniz. Ancak, bu seçenek dağıtım durumunun etkileşimli görünümünü durdurur.
# blue deployment takes 100 traffic
endpoint.traffic = {"blue": 100}
ml_client.online_endpoints.begin_create_or_update(endpoint)
Yönetilen çevrimiçi uç nokta ve dağıtım oluşturma
Doğrudan tarayıcınızda yönetilen bir çevrimiçi uç nokta oluşturmak için stüdyoyu kullanın. Stüdyoda yönetilen bir çevrimiçi uç nokta oluşturduğunuzda, ilk dağıtımı tanımlamanız gerekir. Boş bir yönetilen çevrimiçi uç nokta oluşturamazsınız.
Stüdyoda yönetilen çevrimiçi uç nokta oluşturmanın bir yolu Modeller sayfasındandır. Bu yöntem ayrıca mevcut yönetilen çevrimiçi dağıtıma model eklemenin kolay bir yolunu sağlar. Modelinizi ve ortamınızımodel-1kaydettiğiniz adlı modeli dağıtmak için:
Azure Machine Learning stüdyosu'a gidin.
Sol bölmede Modeller sayfasını seçin.
model-1 adlı modeli seçin.
Gerçek zamanlı uç noktayı>.
Bu eylem, uç noktanızla ilgili ayrıntıları belirtebileceğiniz bir pencere açar.
Azure bölgesinde benzersiz bir uç nokta adı girin. Adlandırma kuralları hakkında daha fazla bilgi için Uç nokta sınırları bölümüne bakın.
Varsayılan seçimi koru: İşlem türü için yönetilir .
Varsayılan seçimi koruyun: kimlik doğrulama türü için anahtar tabanlı kimlik doğrulaması . Kimlik doğrulaması hakkında daha fazla bilgi için bkz . Çevrimiçi uç noktalar için istemcilerin kimliğini doğrulama.
Dağıtım sayfasına gelene kadar İleri'yi seçin. Uç noktanızın etkinliklerinin grafiklerini daha sonra stüdyoda görüntülemek ve Application Insights kullanarak ölçümleri ve günlükleri analiz etmek için Application Insights tanılamasınıEtkin olarak değiştirin.
Kod + ortam sayfasına gitmek için İleri'yi seçin. Aşağıdaki seçenekleri belirleyin:
-
Çıkarım için bir puanlama betiği seçin: Daha önce kopyaladığınız veya indirdiğiniz depodan \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py dosyasına göz atın ve seçin.
-
Ortam bölümünü seçin: Özel ortamlar'ı seçin ve ardından daha önce oluşturduğunuz my-env:1 ortamını seçin.
İleri'yi seçin ve dağıtımı oluşturmanız istenene kadar varsayılanları kabul edin.
Dağıtım ayarlarınızı gözden geçirin ve Oluştur'u seçin.
Alternatif olarak, stüdyodaki Uç Noktalar sayfasından yönetilen bir çevrimiçi uç nokta oluşturabilirsiniz.
Azure Machine Learning stüdyosu'a gidin.
Sol bölmede Uç Noktalar sayfasını seçin.
+Oluştur'u seçin.
Bu eylem, modelinizi seçmeniz ve uç noktanız ve dağıtımınızla ilgili ayrıntıları belirtmeniz için bir pencere açar. Daha önce açıklandığı gibi uç noktanızın ve dağıtımınızın ayarlarını girin ve ardından oluştur'u seçerek dağıtımı oluşturun.
Çevrimiçi uç nokta oluşturmak için şablonu kullanın:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint.json \
--parameters \
workspaceName=$WORKSPACE \
onlineEndpointName=$ENDPOINT_NAME \
identityType=SystemAssigned \
authMode=AMLToken \
location=$LOCATION
Uç nokta oluşturulduktan sonra modeli uç noktaya dağıtın:
resourceScope="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices"
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint-deployment.json \
--parameters \
workspaceName=$WORKSPACE \
location=$LOCATION \
onlineEndpointName=$ENDPOINT_NAME \
onlineDeploymentName=blue \
codeId="$resourceScope/workspaces/$WORKSPACE/codes/score-sklearn/versions/1" \
scoringScript=score.py \
environmentId="$resourceScope/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION" \
model="$resourceScope/workspaces/$WORKSPACE/models/sklearn/versions/1" \
endpointComputeType=Managed \
skuName=Standard_F2s_v2 \
skuCapacity=1
Dağıtımınızdaki hataların hatalarını ayıklamak için bkz . Çevrimiçi uç nokta dağıtımlarında sorun giderme.
Çevrimiçi uç noktanın durumunu denetleme
show uç nokta ve dağıtım bilgilerini provisioning_state görüntülemek için komutunu kullanın:
az ml online-endpoint show -n $ENDPOINT_NAME
komutunu kullanarak çalışma alanı içindeki tüm uç noktaları tablo biçiminde listeleyin list :
az ml online-endpoint list --output table
Modelin hatasız dağıtılıp dağıtılmadığını görmek için uç noktanın durumunu denetleyin:
ml_client.online_endpoints.get(name=endpoint_name)
yöntemini kullanarak çalışma alanı içindeki tüm uç noktaları tablo biçiminde listeleyin list :
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
yöntemi, varlıkların ManagedOnlineEndpoint listesini (yineleyici) döndürür.
Daha fazla parametre belirterek daha fazla bilgi edinebilirsiniz. Örneğin, tablo gibi uç noktaların listesinin çıktısını alın:
print("Kind\tLocation\tName")
print("-------\t----------\t------------------------")
for endpoint in ml_client.online_endpoints.list():
print(f"{endpoint.kind}\t{endpoint.location}\t{endpoint.name}")
Yönetilen çevrimiçi uç noktaları görüntüleme
Tüm yönetilen çevrimiçi uç noktalarınızı Uç Noktalar sayfasında görüntüleyebilirsiniz. Uç nokta URI'si, durum, test araçları, etkinlik izleyicileri, dağıtım günlükleri ve örnek tüketim kodu gibi kritik bilgileri bulmak için uç noktanın Ayrıntılar sayfasına gidin.
Sol bölmede Uç Noktalar'ı seçerek çalışma alanındaki tüm uç noktaların listesini görüntüleyin.
(İsteğe bağlı) Yalnızca Yönetilenişlem türlerini göstermek için İşlem türünde bir filtre oluşturun.
Uç noktanın Ayrıntılar sayfasını görüntülemek için bir uç nokta adı seçin.
Şablonlar kaynakları dağıtmak için kullanışlıdır, ancak bunları kaynakları listelemek, göstermek veya çağırmak için kullanamazsınız. Bu işlemleri gerçekleştirmek için Azure CLI, Python SDK veya stüdyoyu kullanın. Aşağıdaki kod Azure CLI'yi kullanır.
show Uç nokta ve dağıtım parametresindeki provisioning_state bilgileri görüntülemek için komutunu kullanın:
az ml online-endpoint show -n $ENDPOINT_NAME
komutunu kullanarak çalışma alanı içindeki tüm uç noktaları tablo biçiminde listeleyin list :
az ml online-endpoint list --output table
Çevrimiçi dağıtımın durumunu denetleme
Modelin hatasız dağıtılıp dağıtılmadığını görmek için günlükleri denetleyin.
Kapsayıcıdan günlük çıktısını görmek için aşağıdaki CLI komutunu kullanın:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Varsayılan olarak, günlükler çıkarım sunucusu kapsayıcısından çekilir. Depolama başlatıcı kapsayıcısından günlükleri görmek için bayrağını --container storage-initializer ekleyin. Dağıtım günlükleri hakkında daha fazla bilgi için bkz . Kapsayıcı günlüklerini alma.
Yöntemini kullanarak günlük çıkışını get_logs görüntüleyebilirsiniz:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
Varsayılan olarak, günlükler çıkarım sunucusu kapsayıcısından çekilir. Depolama başlatıcı kapsayıcısından günlükleri görmek için seçeneğini ekleyin container_type="storage-initializer" . Dağıtım günlükleri hakkında daha fazla bilgi için bkz . Kapsayıcı günlüklerini alma.
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50, container_type="storage-initializer"
)
Günlük çıkışını görüntülemek için uç noktanın sayfasından Günlükler sekmesini seçin. Uç noktanızda birden çok dağıtım varsa, görmek istediğiniz günlüğü içeren dağıtımı seçmek için açılan listeyi kullanın.
Varsayılan olarak, günlükler çıkarım sunucusundan çekilir. Depolama başlatıcı kapsayıcısından günlükleri görmek için Azure CLI veya Python SDK'sını kullanın (ayrıntılar için her sekmeye bakın). Depolama başlatıcı kapsayıcısından alınan günlükler, kod ve model verilerinin kapsayıcıya başarıyla indirilip indirilmediği hakkında bilgi sağlar. Dağıtım günlükleri hakkında daha fazla bilgi için bkz . Kapsayıcı günlüklerini alma.
Şablonlar kaynakları dağıtmak için kullanışlıdır, ancak bunları kaynakları listelemek, göstermek veya çağırmak için kullanamazsınız. Bu işlemleri gerçekleştirmek için Azure CLI, Python SDK veya stüdyoyu kullanın. Aşağıdaki kod Azure CLI'yi kullanır.
Kapsayıcıdan günlük çıktısını görmek için aşağıdaki CLI komutunu kullanın:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Varsayılan olarak, günlükler çıkarım sunucusu kapsayıcısından çekilir. Depolama başlatıcı kapsayıcısından günlükleri görmek için bayrağını --container storage-initializer ekleyin. Dağıtım günlükleri hakkında daha fazla bilgi için bkz . Kapsayıcı günlüklerini alma.
Modelinizi kullanarak verileri puan eklemek için uç noktayı çağırma
Uç noktayı çağırmak invoke ve bazı verileri puanlarken istediğiniz komutu veya REST istemcisini kullanın:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Uç noktada kimlik doğrulaması yapmak için kullanılan anahtarı alın:
Kimlik doğrulama anahtarını ve izin veren Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/actionMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/actionözel bir role atayarak hangi Microsoft Entra güvenlik sorumlularının kimlik doğrulama anahtarını alabileceğini denetleyebilirsiniz. Çalışma alanlarında yetkilendirmeyi yönetme hakkında daha fazla bilgi için bkz. Azure Machine Learning çalışma alanına erişimi yönetme.
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
Verileri puanlama için curl kullanın.
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
Kimlik doğrulama kimlik bilgilerini almak için show ve get-credentials komutlarını kullandığınıza dikkat edin. Ayrıca bayrağını --query yalnızca gerekli öznitelikleri filtrelemek için kullandığınıza dikkat edin. Bayrak hakkında --query daha fazla bilgi edinmek için bkz . Azure CLI komut çıkışını sorgulama.
Çağırma günlüklerini görmek için yeniden çalıştırın get-logs .
MLClient parametresini kullanarak daha önce oluşturduğunuz uç noktaya bir tanıtıcı alırsınız. Ardından aşağıdaki parametrelerle komutunu kullanarak invoke uç noktayı çağırabilirsiniz:
-
endpoint_name: Uç noktanın adı.
-
request_file: İstek verilerini içeren dosya.
-
deployment_name: Bir uç noktada test edilecek belirli dağıtımın adı.
JSON dosyası kullanarak örnek bir istek gönderin.
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Yönetilen çevrimiçi dağıtımınızı test etmek için uç noktanın ayrıntılar sayfasındaki Test sekmesini kullanın. Örnek girişi girin ve sonuçları görüntüleyin.
Uç noktanın ayrıntı sayfasında Test sekmesini seçin.
Test etmek istediğiniz dağıtımı seçmek için açılan listeyi kullanın.
Örnek girişi girin.
Test'i seçin.
Şablonlar kaynakları dağıtmak için kullanışlıdır, ancak bunları kaynakları listelemek, göstermek veya çağırmak için kullanamazsınız. Bu işlemleri gerçekleştirmek için Azure CLI, Python SDK veya stüdyoyu kullanın. Aşağıdaki kod Azure CLI'yi kullanır.
Uç noktayı çağırmak invoke ve bazı verileri puanlarken istediğiniz komutu veya REST istemcisini kullanın:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file cli/endpoints/online/model-1/sample-request.json
(İsteğe bağlı) Dağıtımı güncelleştirme
Kodu, modeli veya ortamı güncelleştirmek istiyorsanız YAML dosyasını güncelleştirin. Ardından komutunu çalıştırın az ml online-endpoint update .
Örnek sayısını (dağıtımınızı ölçeklendirmek için) diğer model ayarlarıyla (kod, model veya ortam gibi) tek update bir komutta güncelleştirirseniz, önce ölçeklendirme işlemi gerçekleştirilir. Diğer güncelleştirmeler daha sonra uygulanır. Bu işlemleri üretim ortamında ayrı ayrı gerçekleştirmek iyi bir uygulamadır.
Nasıl update çalıştığını anlamak için:
Dosyayı çevrimiçi/model-1/onlinescoring/score.py açın.
İşlevin son satırını init() değiştirin: sonra logging.info("Init complete")ekleyin logging.info("Updated successfully").
Dosyayı kaydedin.
Şu komutu çalıştırın:
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
YAML kullanılarak güncelleştirilmesi bildirim temellidir. Yani, YAML'deki değişiklikler temel Resource Manager kaynaklarına (uç noktalar ve dağıtımlar) yansıtılır. Bildirim temelli bir yaklaşım GitOps'yi kolaylaştırır üzerinden gider.
YAML'nizdeki öznitelikleri geçersiz kılmak veya YAML Tek öznitelikler için kullanmak --set özellikle geliştirme ve test senaryolarında değerlidir. Örneğin, ilk dağıtımın instance_count değerini büyütmek için bayrağını --set instance_count=2 kullanabilirsiniz. Ancak YAML güncelleştirilemediğinden bu teknik GitOps'yi kolaylaştırmaz.
YAML dosyasının belirtilmesi zorunlu değildir . Örneğin, belirli bir dağıtım için farklı eşzamanlılık ayarlarını test etmek istiyorsanız, gibi az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4bir şey deneyebilirsiniz. Bu yaklaşım tüm mevcut yapılandırmayı korur ancak yalnızca belirtilen parametreleri güncelleştirir.
Uç nokta oluşturulduğunda veya güncelleştirildiğinde çalıştırılan işlevi değiştirdiğinizden init() , ileti Updated successfully günlüklerde görüntülenir. Çalıştırarak günlükleri alın:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Komutu update yerel dağıtımlarla da çalışır. Bayrağıyla az ml online-deployment update aynı --local komutu kullanın.
Kodu, modeli veya ortamı güncelleştirmek istiyorsanız, yapılandırmayı güncelleştirin ve ardından MLClient için 'nin online_deployments.begin_create_or_update yöntemini çalıştırın.
Örnek sayısını (dağıtımınızı ölçeklendirmek için) diğer model ayarlarıyla (kod, model veya ortam gibi) tek begin_create_or_update bir yöntemde güncelleştirirseniz, önce ölçeklendirme işlemi gerçekleştirilir. Ardından diğer güncelleştirmeler uygulanır. Bu işlemleri üretim ortamında ayrı ayrı gerçekleştirmek iyi bir uygulamadır.
Nasıl begin_create_or_update çalıştığını anlamak için:
Dosyayı çevrimiçi/model-1/onlinescoring/score.py açın.
İşlevin son satırını init() değiştirin: sonra logging.info("Init complete")ekleyin logging.info("Updated successfully").
Dosyayı kaydedin.
yöntemini çalıştırın:
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
Uç nokta oluşturulduğunda veya güncelleştirildiğinde çalıştırılan işlevi değiştirdiğinizden init() , ileti Updated successfully günlüklerde görüntülenir. Çalıştırarak günlükleri alın:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
begin_create_or_update yöntemi yerel dağıtımlarla da çalışır. bayrağıyla local=True aynı yöntemi kullanın.
Şu anda yalnızca bir dağıtımın örnek sayısı için güncelleştirmeler yapabilirsiniz. Örnek sayısını ayarlayarak tek bir dağıtımın ölçeğini büyütmek veya küçültmek için aşağıdaki yönergeleri kullanın:
- Uç noktanın Ayrıntılar sayfasını açın ve güncelleştirmek istediğiniz dağıtımın kartını bulun.
- Dağıtımın adının yanındaki düzenle simgesini (kalem simgesi) seçin.
- Dağıtımla ilişkili örnek sayısını güncelleştirin.
Dağıtım ölçek türü için Varsayılan veya Hedef Kullanım arasında seçim yapın.
-
Varsayılan'ı seçerseniz Örnek sayısı için sayısal bir değer de belirtebilirsiniz.
-
Hedef Kullanım'ı seçerseniz, dağıtımı otomatik olarak ölçeklerken parametreler için kullanılacak değerleri belirtebilirsiniz.
- Dağıtımınız için örnek sayılarını güncelleştirmeyi tamamlamak için Güncelleştir'i seçin.
Şu anda ARM şablonu kullanarak dağıtımı güncelleştirme seçeneği yoktur.
Not
Bu bölümdeki dağıtım güncelleştirmesi yerinde sıralı güncelleştirme örneğidir.
- Yönetilen bir çevrimiçi uç nokta için dağıtım, aynı anda düğümlerin 20% ile yeni yapılandırmaya güncelleştirilir. Yani, dağıtımın 10 düğümü varsa, bir kerede 2 düğüm güncelleştirilir.
- Kubernetes çevrimiçi uç noktası için sistem, yeni yapılandırmayla yinelemeli olarak yeni bir dağıtım örneği oluşturur ve eskisini siler.
- Üretim kullanımı için, bir web hizmetini güncelleştirmek için daha güvenli bir alternatif sunan mavi-yeşil dağıtımı göz önünde bulundurun.
Otomatik ölçeklendirme uygulamanızdaki yükü işlemek için tam olarak doğru miktarda kaynak çalıştırır. Yönetilen çevrimiçi uç noktalar, Azure İzleyici otomatik ölçeklendirme özelliğiyle tümleştirme aracılığıyla otomatik ölçeklendirmeyi destekler. Otomatik ölçeklendirmeyi yapılandırmak için bkz . Çevrimiçi uç noktaları otomatik ölçeklendirme.
(İsteğe bağlı) Azure İzleyici kullanarak SLA'yı izleme
Ölçümleri görüntülemek ve SLA'nıza göre uyarılar ayarlamak için Çevrimiçi uç noktaları izleme başlığı altında açıklanan adımları izleyin.
(İsteğe bağlı) Log Analytics ile tümleştirme
get-logs CLI komutu veya get_logs SDK metodu, otomatik seçilmiş bir örnekten yalnızca son birkaç yüz satır günlük sağlar. Ancak Log Analytics, günlükleri dur türlü depolamak ve analiz etmek için bir yol sağlar. Günlüğü kullanma hakkında daha fazla bilgi için bkz. Günlükleri kullanma.
Uç noktayı ve dağıtımı silme
Uç noktayı ve temel aldığı tüm dağıtımları silmek için aşağıdaki komutu kullanın:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Uç noktayı ve temel aldığı tüm dağıtımları silmek için aşağıdaki komutu kullanın:
ml_client.online_endpoints.begin_delete(name=endpoint_name)
Uç noktayı ve dağıtımı kullanmayacaksanız bunları silin. Uç noktayı silerek tüm temel dağıtımlarını da silebilirsiniz.
- Azure Machine Learning stüdyosu'a gidin.
- Sol bölmede Uç Noktalar sayfasını seçin.
- Bir uç nokta seçin.
-
Sil'i seçin.
Alternatif olarak, uç nokta ayrıntıları sayfasındaki Sil simgesini seçerek yönetilen çevrimiçi uç noktayı doğrudan silebilirsiniz.
Uç noktayı ve temel aldığı tüm dağıtımları silmek için aşağıdaki komutu kullanın:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
İlgili içerik