Aracılığıyla paylaş


Çevrimiçi uç nokta kullanarak makine öğrenmesi modelini dağıtma ve puanlandırma

Ş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 .

  • 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.

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>"

Uç noktayı yapılandırma

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.

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ırma

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:

  1. 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.
  2. 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:

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.

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

Ş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.

İ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": {}
}

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.

Ç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

Ç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.

  1. 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/
    
  2. Modeli kaydedin:

    az ml model create -n my-model -v 1 -f endpoints/online/managed/sample/model.yml
    
  3. 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
    
  4. 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.

Ö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.

Kayıtlı varlıkları kullanan bir dağıtımı yapılandırma

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

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.

Not

İşlem hedefi olarak yönetilen uç noktalar yerine Kubernetes'i kullanmak için bkz. Kubernetes işlem hedefine giriş.

Ardından çevrimiçi uç noktanızı Azure'a dağıtın.

Azure’a dağıtın

  1. Uç noktayı Azure bulutunda oluşturun:

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. 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".

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

  1. 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
    
  2. 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.

Modelinizi kullanarak verileri puan eklemek için uç noktayı çağırma

  1. 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
    
  2. 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)
    
  3. 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.

  4. Çağırma günlüklerini görmek için yeniden çalıştırın get-logs .

(İ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:

  1. Dosyayı çevrimiçi/model-1/onlinescoring/score.py açın.

  2. İşlevin son satırını init() değiştirin: sonra logging.info("Init complete")ekleyin logging.info("Updated successfully").

  3. Dosyayı kaydedin.

  4. Ş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.

  5. 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.

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.

(İsteğe bağlı) Otomatik ölçeklendirmeyi yapılandırma

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