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

Ç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ı. Uç noktalar ve yönetilen çevrimiçi uç noktalar ile Kubernetes çevrimiçi uç noktaları arasındaki farklar hakkında daha fazla bilgi için bkz . Azure Machine Learning uç noktaları nedir?

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 modellerinizin sunulması, ölçeklendirilmesi, güvenlik altına alınması ve izlenmesiyle ilgilenerek, sizi temel altyapıyı ayarlama ve yönetme yükünden kurtarır.

Bu belgedeki 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)

Bu makaledeki adımları takip etmeden önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

  • Azure Machine Learning’deki işlemlere erişim vermek için Azure rol tabanlı erişim denetimleri (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ü ya da izin veren Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*özel bir rol atanmalıdır. Çevrimiçi uç noktaları/dağıtımları oluşturmak/yönetmek için stüdyoyu kullanırsanız, kaynak grubu sahibinden ek "Microsoft.Resources/deployments/write" iznine sahip olmanız gerekir. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanı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ıklamak daha kolay olması için 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 SKU'larında yükseltme gerçekleştirmek için işlem kaynaklarınızın %20'sini ayırır. Örneğin, bir dağıtımda 10 örnek isterseniz, VM SKU'su için her çekirdek sayısı için 12 kotanız olmalıdır. Ek işlem kaynaklarının hesaplanmaması hataya neden olur. Ek kota rezervasyonundan muaf olan bazı VM SKU'ları vardır. Kota ayırma hakkında daha fazla bilgi için bkz . Dağıtım için sanal makine kota ayırma.

  • Alternatif olarak, Azure Machine Learning'in paylaşılan kota havuzundan gelen kotayı sınırlı bir süre 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 örnek deposunu (azureml-examples) kopyalayın. Ardından aşağıdaki kodu çalıştırarak deponun cli/ dizinine gidin:

git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli

İpucu

Yalnızca en son işlemeyi depoya kopyalamak için kullanın --depth 1 ; bu işlem tamamlanma süresini kısaltılır.

Bu öğreticideki komutlar dosyalarda deploy-local-endpoint.sh ve deploy-managed-online-endpoint.sh dizinde cli , YAML yapılandırma dosyaları ise alt dizinde endpoints/online/managed/sample/ yer alır.

Not

Kubernetes çevrimiçi uç noktaları için YAML yapılandırma dosyaları alt dizindedir endpoints/online/kubernetes/ .

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 bkz . uç nokta sınırları.

Linux için şu komutu çalıştırı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 . Çevrimiçi uç noktaların sınırları.

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 modeli dağıtacak ve belirli bir giriş isteğinde modeli yürütmek için puanlama betiği score.py kullanacaksı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:

blue-deployment.yml

$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-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

blue-deployment.yml dosyası aşağıdaki dağıtım özniteliklerini belirtir:

  • model - kullanarak model özelliklerini satır path içinde belirtir (dosyaların karşıya yüklendiği yer). CLI, model dosyalarını otomatik olarak karşıya yükler ve modeli otomatik olarak oluşturulan bir adla kaydeder.
  • environment - dosyaların karşıya yüklendiği yeri içeren satır içi tanımları kullanan CLI, dosyayı otomatik olarak karşıya yükler conda.yaml ve ortamı kaydeder. Daha sonra, ortamı derlemek için dağıtım temel görüntü için öğesini kullanır image (bu örnekte mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest, temel görüntü için ) ve conda_file bağımlılıklar temel görüntünün üstüne yüklenir.
  • code_configuration - dağıtım sırasında puanlama modeli için Python kaynağı gibi yerel dosyalar geliştirme ortamından karşıya yüklenir.

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 ek ö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

İpucu

Ç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 score.py dosyası kullanılır: score.py

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

run() İşlev, uç nokta her çağrıldığında çağrılır ve gerçek puanlama ile 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 edip çalıştırmanızı kesinlikle öneririz . Azure CLI ve Python SDK'sı yerel uç noktaları ve dağıtımları desteklerken Azure Machine Learning stüdyosu ve ARM şablonu 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.

İpucu

Puanlama betiğinizde Docker Altyapısı olmadan yerel olarak hata ayıklamak için Azure Machine Learning çıkarım HTTP sunucusu Python paketini kullanabilirsiniz. Çı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 bir uç nokta için bu adımı atlayabilir ve doğrudan gerekli meta verileri oluşturacak dağıtımı (sonraki adım) oluşturabilirsiniz. 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 şeklindedirSucceeded.

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

Value Açıklama
Oluşturma Kaynak oluşturuluyor.
Güncelleştirme Kaynak güncelleştiriliyor.
Silme Kaynak siliniyor.
Başarılı Oluşturma/güncelleştirme işlemi başarılı oldu.
Başarısız oldu Oluşturma/güncelleştirme/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 yöntem olarak, dağıtımınızda kullanacağı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ı kaydetmek, her dağıtım oluşturduğunuzda bunları karşıya yüklemenize gerek kalmadan yeniden kullanmanıza ve böylece yeniden üretilebilirliği ve izlenebilirliği artırmanıza olanak tanır.

Not

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 environment: azureml:my-env:1biçimini model: azureml:my-model:1 kullanın. Kayıt için ve'nin model environment YAML tanımlarını ayrı YAML dosyalarına ayıklayabilir ve ve az ml environment createkomutlarını az ml model create kullanabilirsiniz. Bu komutlar hakkında daha fazla bilgi edinmek için ve az ml environment create -hkomutunu çalıştırınaz ml model create -h.

  1. Model için bir YAML tanımı oluşturun:

    $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 ./model.yaml
    
  3. Ortam için bir YAML tanımı oluşturun:

    $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 ./environment.yaml
    

Modelinizi varlık olarak kaydetme hakkında daha fazla bilgi için bkz . CLI kullanarak modelinizi Machine Learning'de varlık olarak kaydetme. Ortam oluşturma hakkında daha fazla bilgi için bkz . CLI ve SDK (v2) ile Azure Machine Learning ortamlarını yönetme.

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 parçacığı, bir dağıtımı yapılandırmak için gerekli tüm girişleri içeren dosyayı gösterir endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml :

blue-deployment-with-registered-assets.yml

$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ız 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:latest kullandı. GPU işlemi için bir GPU işlem türü SKU'su 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 tarafından desteklenen VM SKU'ları. Azure Machine Learning CPU ve GPU temel görüntülerinin listesi için bkz . Azure Machine Learning temel görüntüleri.

Not

Yönetilen uç noktalar yerine Kubernetes'i işlem hedefi olarak 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.

    İpucu

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

    Önemli

    --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, geliştirme ve test amacıyla yararlı olsa da, üretim için trafiği açık bir komutla yeni dağıtıma yönlendirmek isteyebilirsiniz. Örneğin, 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.

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.

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

    İpucu

    Kimlik doğrulama anahtarını ve izin veren Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action Microsoft.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 ve get-credentials komutlarını kullandığınıza show dikkat edin. Ayrıca bayrağını --query yalnızca gerekli öznitelikleri filtrelemek için kullandığınıza da 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 ve komutunu çalıştırın az ml online-endpoint update .

Not

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

    Not

    YAML kullanılarak güncelleştirilmesi bildirim temellidir. Yani YAML'deki değişiklikler temel alınan Azure 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: Uç noktalarda ve dağıtımlarda yapılan tüm değişiklikler (hatta instance_count) YAML üzerinden gider.

    İpucu

    • YAML'nizdeki öznitelikleri geçersiz kılmak veya YAML dosyasında geçirmeden belirli öznitelikleri ayarlamak için CLI update komutuyla parametresi gibi --set genel güncelleştirme parametrelerini kullanabilirsiniz. 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ĞİlDİ. Örneğin, belirli bir dağıtım için farklı eşzamanlılık ayarı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, tüm mevcut yapılandırmayı tutar 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 yer alır. Ç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 --local aynı az ml online-deployment update komutu kullanın.

Not

Bu bölümdeki dağıtım güncelleştirmesi yerinde sıralı güncelleştirme örneğidir.

  • Yönetilen çevrimiçi uç nokta için dağıtım, bir kerede %20 düğümle 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 bulundurmalısınız.

(İ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ı tamamlayın.

(İsteğe bağlı) Log Analytics ile tümleştirme

get-logs CLI komutu veya get_logs SDK yöntemi, otomatik olarak seçilen bir örnekten yalnızca son birkaç yüz günlük satırını 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 . Çevrimiçi uç noktaları izleme.

Uç noktayı ve dağıtımı silme

Uç noktayı ve temel aldığı tüm dağıtımları silin:

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait