Kayıt defterleriyle çalışma alanları arasında modelleri, bileşenleri ve ortamları paylaşma

Azure Machine Learning kayıt defteri, kuruluşunuzdaki çalışma alanları arasında işbirliği yapmanızı sağlar. Kayıt defterlerini kullanarak modelleri, bileşenleri ve ortamları paylaşabilirsiniz.

Birden çok çalışma alanında aynı model, bileşen ve ortam kümesini kullanmak istediğiniz iki senaryo vardır:

  • Çalışma alanları arası MLOps: Bir çalışma alanında dev model eğittiğinizde modeli test ve prod çalışma alanlarına dağıtmanız gerekir. Bu durumda, modelin test veya prod çalışma alanlarındaki uç noktalara dağıtıldığı durum ile modeli eğitmek için dev çalışma alanında kullanılan eğitim işi, ölçümler, kod, veriler ve ortam arasında uçtan uca soy ağacı elde etmek istersiniz.
  • Modelleri ve işlem hatlarını farklı ekiplerde paylaşma ve yeniden kullanma: Paylaşma ve yeniden kullanma, işbirliğini ve üretkenliği artırır. Bu senaryoda, eğitilmiş bir modeli ve onu merkezi bir kataloğa eğitmek için kullanılan ilişkili bileşenleri ve ortamları yayımlamak isteyebilirsiniz. Buradan, diğer ekiplerdeki iş arkadaşlarınız kendi denemelerinde paylaştığınız varlıkları arayabilir ve yeniden kullanabilir.

Bu makalede şunların nasıl yapılacağını öğreneceksiniz:

  • Kayıt defterinde bir ortam ve bileşen oluşturun.
  • Çalışma alanında model eğitim işi göndermek için kayıt defterindeki bileşeni kullanın.
  • Eğitilen modeli kayıt defterine kaydedin.
  • Modeli kayıt defterinden çalışma alanında bir çevrimiçi uç noktaya dağıtın ve ardından bir çıkarım isteği gönderin.

Önkoşullar

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

  • Modelleri, bileşenleri ve ortamları paylaşmak için bir Azure Machine Learning kayıt defteri. Kayıt defteri oluşturmak için bkz. Kayıt defteri oluşturmayı öğrenme.

  • Azure Machine Learning çalışma alanı. Bilginiz yoksa bir tane oluşturmak için, Hızlı Başlangıç: Çalışma Alanı Kaynakları Oluşturma makalesindeki adımları kullanın.

    Önemli

    Çalışma alanınızı oluşturduğunuz Azure bölge (konum) Azure Machine Learning kayıt defteri için desteklenen bölgeler listesinde olmalıdır

  • Azure CLI ve ml uzantısı veya Azure Machine Learning Python SDK v2:

    Azure CLI ve uzantıyı yüklemek için bkz. CLI (v2) yükleme, ayarlama ve kullanma.

    Önemli

    • Bu makaledeki CLI örneklerinde Bash (veya uyumlu) kabuğu kullandığınız varsayılır. Örneğin, linux sisteminden veya Linux için Windows Alt Sistemi.

    • Örneklerde ayrıca aboneliğiniz, çalışma alanınız, kaynak grubunuz veya konumunuz için parametreleri belirtmeniz gerekmeyecek şekilde Azure CLI için varsayılanları yapılandırdığınız varsayılır. Varsayılan ayarları ayarlamak için aşağıdaki komutları kullanın. Aşağıdaki parametreleri yapılandırmanızın değerleriyle değiştirin:

      • <subscription> değerini Azure abonelik kimliğiniz ile değiştirin.
      • <workspace> değerini Azure Machine Learning çalışma alanı adınız ile değiştirin.
      • <resource-group> değerini çalışma alanınızı içeren Azure kaynak grubuyla değiştirin.
      • <location> değerini çalışma alanınızı içeren Azure bölgesiyle değiştirin.
      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
      

      komutunu kullanarak az configure -l geçerli varsayılanlarınızın ne olduğunu görebilirsiniz.

Örnek depoları klonla

Bu makaledeki kod örnekleri, examples deposundaki nyc_taxi_data_regression örneğini temel alır. Bu dosyaları geliştirme ortamınızda kullanmak için aşağıdaki komutları kullanarak depoyu kopyalayın ve dizinleri örnek olarak değiştirin:

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

CLI örneğinde, examples deponuzun yerel kopyasında dizinleri cli/jobs/pipelines-with-components/nyc_taxi_data_regression olarak değiştirin.

cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression

SDK bağlantısı oluşturma

Ipucu

Bu adım yalnızca Python SDK kullanılırken gereklidir.

hem Azure Machine Learning çalışma alanına hem de kayıt defterine bir istemci bağlantısı oluşturun:

ml_client_workspace = MLClient( credential=credential,
    subscription_id = "<workspace-subscription>",
    resource_group_name = "<workspace-resource-group",
    workspace_name = "<workspace-name>")
print(ml_client_workspace)

ml_client_registry = MLClient(credential=credential,
                        registry_name="<REGISTRY_NAME>",
                        registry_location="<REGISTRY_REGION>")
print(ml_client_registry)

Kayıt defterinde ortam oluşturma

Ortamlar, eğitim işlerini çalıştırmak veya modelleri dağıtmak için gereken docker kapsayıcısını ve Python bağımlılıklarını tanımlar. Ortamlar hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Ipucu

Çalışma alanında veya kayıt defterinde ortam oluşturmak için aynı CLI komutu az ml environment create kullanılabilir. --workspace-name komutuyla çalıştırıldığında bir çalışma alanında ortam oluşturulurken, --registry-name komutuyla çalıştırmak kayıt defterinde ortam oluşturur.

python:3.10 docker görüntüsünü kullanan ve SciKit Learn çerçevesini kullanarak bir eğitim işi çalıştırmak için gereken Python paketleri yükleyen bir ortam oluşturuyoruz. Örnek depoyu kopyaladıysanız ve cli/jobs/pipelines-with-components/nyc_taxi_data_regression klasöründeyseniz, env_train.yml ortam tanımı dosyasını, env_train/Dockerfile docker dosyasına referans veren, görebilmeniz gerekir. içindekiler env_train.yml aşağıdaki gibidir:

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: SKLearnEnv
version: 1-<VERSION>
description: Scikit Learn environment
build:
  path: ./env_train

Ortamı az ml environment create kullanarak aşağıdaki gibi oluşturun.

az ml environment create --file env_train.yml --registry-name <registry-name>

Zaten bu ada ve sürüme sahip bir ortamın kayıt defterinde bulunduğuna dair bir hata alırsanız, version içindeki alanı env_train.yml düzenleyebilir veya CLI'da env_train.yml içindeki sürüm değerini geçersiz kılacak farklı bir sürüm belirtebilirsiniz.

# use shell epoch time as the version
version=$(date +%s)
az ml environment create --file env_train.yml --registry-name <registry-name> --set version=$version

Ipucu

version=$(date +%s) yalnızca Linux'ta çalışır. bu işe yaramazsa değerini rastgele bir sayıyla değiştirin $version .

name ve version ortam değerlerini az ml environment create komutunun çıktısından not edin ve bunları aşağıdaki az ml environment show komutlarıyla kullanın. Sonraki bölümde kayıt defterinde bir bileşen oluştururken name ve version gerekecek.

az ml environment show --name SKLearnEnv --version 1 --registry-name <registry-name>

Ipucu

Farklı bir ortam adı veya sürümü kullandıysanız, --name ve --version parametrelerini buna göre değiştirin.

Kayıt defterindeki tüm ortamları listelemek için de kullanabilirsiniz az ml environment list --registry-name <registry-name> .

Azure Machine Learning Studio'da tüm ortamları görüntüleyebilirsiniz. Genel kullanıcı arabirimine gidip Kayıt Defterleri girişini aradığınızdan emin olun.

Kayıt defterindeki ortamların ekran görüntüsü.

Not

Kayıt defteri kaynağının sistem tarafından atanan yönetilen kimliği, bu kayıt defteriyle ilişkilendirilmiş Azure Container Registry (ACR) örneğinde AcrPull iznine sahiptir. Bir çalışma alanı işleminin ortam görüntüsünü çekmesi gerektiğinde, AzureML Kayıt Defteri görüntünün çalışma alanı işlemi tarafından çekilmesine olanak sağlayan uygun bir kapsam haritasına sahip bir ACR belirteci oluşturur ve döndürür. Ne çalışma alanının ne de işlem tarafından yönetilen kimliğin, kayıt defterinin ACR'sine doğrudan erişimi yok.

Kayıt defterinde bileşen oluşturma

Bileşenler, Azure Machine Learning Machine Learning işlem hatlarının yeniden kullanılabilir yapı taşlarıdır. Tek bir işlem hattı adımının kodunu, komutunu, ortamını, giriş arabirimini ve çıkış arabirimini bir bileşene paketleyebilirsiniz. Ardından, farklı bir işlem hattı yazdığınızda bağımlılıkları ve kodu taşıma konusunda endişelenmenize gerek kalmadan bileşeni birden çok işlem hattında yeniden kullanabilirsiniz.

Bir çalışma alanında bileşen oluşturmak, bu bileşeni o çalışma alanı içindeki herhangi bir işlem hattı işinde kullanmanıza olanak tanır. Bir kayıt defterinde bileşen oluşturmak, bileşeni kuruluşunuzdaki herhangi bir çalışma alanında bulunan herhangi bir işlem hattında kullanmanıza olanak tanır. Bir kayıt defterinde bileşen oluşturmak, kuruluşunuzdaki farklı ekiplerin denemeleri için kullanılabilecek modüler yeniden kullanılabilir yardımcı programlar veya paylaşılan eğitim görevleri oluşturmanın harika bir yoludur.

Bileşenler hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

klasöründe cli/jobs/pipelines-with-components/nyc_taxi_data_regressionolduğunuzdan emin olun. Scikit Learn eğitim betiğini train.ymlpaketleyen bileşen tanım dosyasını train_src/train.py bulursunuz. train.yml özenle seçilmiş ortamısklearn-1.5azureml kayıt defterinden kullanır. önceki adımda oluşturduğunuz Scikit Learn ortamını kullanmak için içindeki environment alanını düzenleyebilir train.yml veya seçilen ortamı tutabilirsiniz. Bileşen tanım dosyası train.yml aşağıdaki örneğe benzer:

# <component>
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: train_linear_regression_model
display_name: TrainLinearRegressionModel
version: 1
type: command
inputs:
  training_data: 
    type: uri_folder
  test_split_ratio:
    type: number
    min: 0
    max: 1
    default: 0.2
outputs:
  model_output:
    type: mlflow_model
  test_data:
    type: uri_folder
code: ./train_src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
  python train.py 
  --training_data ${{inputs.training_data}} 
  --test_data ${{outputs.test_data}} 
  --model_output ${{outputs.model_output}}
  --test_split_ratio ${{inputs.test_split_ratio}}
# </component>

Düzenlenmiş ortam yerine önceki adımda kendi ortamınızı kullanmak istiyorsanız, environment alanını azureml://registries/<registry-name>/environments/SKLearnEnv/versions/1 olarak güncelleyin. az ml component create Bileşeni aşağıdaki gibi oluşturmak için komutunu çalıştırın.

az ml component create --file train.yml --registry-name <registry-name>

Ipucu

Çalışma alanında veya kayıt defterinde bileşenler oluşturmak için aynı CLI komutu az ml component create kullanılabilir. Komut --workspace-name ile çalıştırıldığında bileşen bir çalışma alanında oluşturulurken, komut --registry-name ile çalıştırıldığında bileşen kayıt defterinde oluşturulur.

öğesini düzenlememek train.ymlisterseniz, CLI'da ortam adını aşağıdaki gibi geçersiz kılabilirsiniz:

az ml component create --file train.yml --registry-name <registry-name> --set environment=azureml://registries/<registry-name>/environments/SKLearnEnv/versions/1

Ipucu

Bileşen adının zaten kayıt defterinde mevcut olduğunu belirten bir hata alırsanız, train.yml içinde sürümü düzenleyebilir veya CLI'da sürümü rastgele bir sürümle geçersiz kılabilirsiniz.

Komponentin name ve version değerlerini az ml component create komutunun çıktısından not alın ve bunları aşağıdaki az ml component show komutları ile kullanın. Çalışma alanında bir eğitim işi gönderirken sonraki bölümde name ve version'e ihtiyacınız olacak.

az ml component show --name <component_name> --version <component_version> --registry-name <registry-name>

Kayıt defterindeki tüm bileşenleri listelemek için de kullanabilirsiniz az ml component list --registry-name <registry-name> .

Azure Machine Learning stüdyosunda tüm bileşenlere göz atabilirsiniz. Genel kullanıcı arabirimine gidip Kayıt Defterleri girişini aradığınızdan emin olun.

Kayıt defterindeki bileşenlerin ekran görüntüsü.

Kayıt defterindeki bileşeni kullanarak bir ortamda işlem hattı görevi çalıştırma

Bir kayıt defterinden bir bileşeni kullanan bir işlem hattı işi çalıştırılırken hesaplama kaynakları ve eğitim verileri çalışma alanında yereldir. İşleri çalıştırma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Önceki bölümde oluşturulan Scikit Learn eğitim bileşeniyle bir model eğitmek için bir işlem hattı görevi çalıştırıyoruz. Klasör cli/jobs/pipelines-with-components/nyc_taxi_data_regression içinde olduğunuzu kontrol edin. Eğitim veri kümesi klasöründe bulunur data_transformed . single-job-pipeline.yml dosyasının train_job bölümünün altındaki component bölümünü, önceki bölümde oluşturulan eğitim bileşenine başvuracak şekilde düzenleyin. Elde edilen single-job-pipeline.yml sonuç aşağıdaki gibidir:

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset

jobs:
  train_job:
    type: command
    component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
    compute: azureml:cpu-cluster
    inputs:
      training_data: 
        type: uri_folder
        path: ./data_transformed
    outputs:
      model_output: 
        type: mlflow_model
      test_data: 

Önemli olan, bu işlem hattının belirli bir çalışma alanında olmayan bir bileşeni kullanarak çalışma alanında çalıştırılacak olmasıdır. Bileşen, kuruluşunuzdaki herhangi bir çalışma alanıyla kullanılabilecek bir kayıt defterindedir. Bu eğitim işini, eğitim kodunu ve ortamı söz konusu çalışma alanında kullanılabilir hale getirme konusunda endişelenmeden erişiminiz olan herhangi bir çalışma alanında çalıştırabilirsiniz.

Uyarı

  • İşlem hattı işini çalıştırmadan önce, işi çalıştırdığınız çalışma alanının bileşeni oluşturduğunuz kayıt defteri tarafından desteklenen Azure bir bölgede olduğunu onaylayın.
  • Çalışma alanının bir cpu-cluster adlı işlem kümesine sahip olduğunu onaylayın veya jobs.train_job.compute altında, işlem kümenizin adıyla compute alanını düzenleyin.

az ml job create komutunu kullanarak işlem hattı işini çalıştırın.

az ml job create --file single-job-pipeline.yml 

Ipucu

Varsayılan çalışma alanını ve kaynak grubunu önkoşullar bölümünde açıklandığı gibi yapılandırmadıysanız, çalışması için --workspace-name ve --resource-group parametrelerini belirtmeniz az ml job create gerekir.

Alternatif olarak, single-job-pipeline.yml düzenlemesini atlayabilir ve CLI tarafından kullanılan train_job bileşen adını geçersiz kılabilirsiniz.

az ml job create --file single-job-pipeline.yml --set jobs.train_job.component=azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1

Eğitim işinde kullanılan bileşen bir kayıt defteri aracılığıyla paylaşıldığından, işi farklı aboneliklerde bile kuruluşunuzda erişiminiz olan herhangi bir çalışma alanına gönderebilirsiniz. Örneğin, dev-workspace, test-workspace ve prod-workspace eğitim işini bu üç çalışma alanında çalıştırmak, üç az ml job create komutu çalıştırmak kadar kolaydır.

az ml job create --file single-job-pipeline.yml --workspace-name dev-workspace --resource-group <resource-group-of-dev-workspace>
az ml job create --file single-job-pipeline.yml --workspace-name test-workspace --resource-group <resource-group-of-test-workspace>
az ml job create --file single-job-pipeline.yml --workspace-name prod-workspace --resource-group <resource-group-of-prod-workspace>

Azure Machine Learning Stüdyosu'da işi görüntülemek için iş çıkışındaki uç nokta bağlantısını seçin. Burada eğitim ölçümlerini analiz edebilir, işin kayıt defterindeki bileşeni ve ortamı kullandığını doğrulayabilir ve eğitilen modeli gözden geçirebilirsiniz. Çıktıdan işin name not edin veya Azure Machine Learning Stüdyosu'daki işe genel bakış bölümünden aynı bilgileri bulun. Kayıt defterinde model oluşturmayla ilgili sonraki bölümde eğitilen modeli indirmek için bu bilgilere ihtiyacınız olacaktır.

Azure Machine Learning Studio'daki işlem hattının ekran görüntüsü.

Kayıt defterinde model oluşturma

Bu bölümde kayıt defterinde model oluşturmayı öğreneceksiniz. Azure Machine Learning model yönetimi hakkında daha fazla bilgi edinmek için manage models gözden geçirin. Kayıt defterinde model oluşturmanın iki farklı yolunu inceleyeceğiz. İlki yerel dosyalardandır. İkincisi, çalışma alanında kayıtlı bir modeli kayıt defterine kopyalamaktır.

Her iki seçenekte de MLflow biçiminde bir model oluşturursunuz ve bu da çıkarım kodu yazmadan çıkarım için bu modeli dağıtmanıza yardımcı olur.

Yerel dosyalardan kayıt defterinde model oluşturma

Önceki bölümdeki işin adıyla <job-name> değerini değiştirerek train_job çıktısından kullanılabilir olan modeli indirin. Model, MLflow meta veri dosyalarıyla birlikte ./artifacts/model/ içinde kullanılabilir olmalıdır.

# fetch the name of the train_job by listing all child jobs of the pipeline job
train_job_name=$(az ml job list --parent-job-name <job-name> --query [0].name | sed 's/\"//g')
# download the default outputs of the train_job
az ml job download --name $train_job_name 
# review the model files
ls -l ./artifacts/model/

Ipucu

Varsayılan çalışma alanını ve kaynak grubunu önkoşullar bölümünde açıklandığı gibi yapılandırmadıysanız, çalışması için --workspace-name ve --resource-group parametrelerini belirtmeniz az ml model create gerekir.

Uyarı

az ml job list öğesinin çıktısı sed öğesine geçirilir. Bu yalnızca Linux kabuklarında çalışır. Windows kullanıyorsanız az ml job list --parent-job-name <job-name> --query [0].name çalıştırın ve tren işi adında gördüğünüz tüm tırnakları çıkarın.

Modeli indiremiyorsanız, önceki bölümdeki eğitim işi tarafından eğitilen örnek MLflow modelini cli/jobs/pipelines-with-components/nyc_taxi_data_regression/artifacts/model/ klasöründe bulabilirsiniz.

Modeli kayıt defterinde oluşturun:

# create model in registry
az ml model create --name nyc-taxi-model --version 1 --type mlflow_model --path ./artifacts/model/ --registry-name <registry-name>

Ipucu

  • "Model adı ve sürümü zaten mevcutsa ve bir hata alırsanız, version parametresi için rastgele bir sayı kullanın."
  • Çalışma alanında veya kayıt defterinde model oluşturmak için aynı CLI komutu az ml model create kullanılabilir. Komutunu --workspace-name ile çalıştırmak modeli çalışma alanında oluştururken, komutunu --registry-name ile çalıştırmak modeli kayıt defterinde oluşturur.

Çalışma alanından kayıt dizinine model aktarma

Bu iş akışında, modeli önce çalışma alanında oluşturur ve ardından kayıt defteriyle paylaşırsınız. Bu iş akışı, modeli paylaşmadan önce çalışma alanında test etmek istediğinizde kullanışlıdır. Örneğin, uç noktalara dağıtın ve bazı test verileriyle çıkarım yapmayı deneyin ve her şey iyi görünüyorsa modeli kayıt defterine kopyalayın. Bu iş akışı, farklı teknikler, çerçeveler veya parametreler kullanarak bir dizi model geliştirirken ve bunlardan yalnızca birini üretim adayı olarak kayıt defterine yükseltmek istediğinizde de yararlı olabilir.

Önceki bölümde yer alan işlem hattı işinin adına sahip olduğunuzdan emin olun ve komutta bunu değiştirerek eğitim işi adını getirin. Ardından eğitim işinin çıktısını kullanarak modeli çalışma alanına kaydedersiniz. --path parametresinin, azureml://jobs/$train_job_name/outputs/artifacts/paths/model söz dizimiyle train_job çıkışına nasıl başvurduğuna dikkat edin.

# fetch the name of the train_job by listing all child jobs of the pipeline job
train_job_name=$(az ml job list --parent-job-name <job-name> --workspace-name <workspace-name> --resource-group <workspace-resource-group> --query [0].name | sed 's/\"//g')
# create model in workspace
az ml model create --name nyc-taxi-model --version 1 --type mlflow_model --path azureml://jobs/$train_job_name/outputs/artifacts/paths/model 

Ipucu

  • Model adı ve sürümünün version zaten var olduğunu belirten bir hata alırsanız parametre için rastgele bir sayı kullanın.
  • Varsayılan çalışma alanını ve kaynak grubunu önkoşullar bölümünde açıklandığı gibi yapılandırmadıysanız, çalışması için --workspace-name ve --resource-group parametrelerini belirtmeniz az ml model create gerekir.

Model adını ve sürümünü not edin. Modelin çalışma alanına kaydedilip kaydedilmediğini Studio kullanıcı arabiriminde göz atarak veya komutunu kullanarak az ml model show --name nyc-taxi-model --version $model_version doğrulayabilirsiniz.

Ardından, modeli çalışma alanından kayıt defterine paylaşacaksınız.

# share model registered in workspace to registry
az ml model share --name nyc-taxi-model --version 1 --registry-name <registry-name> --share-with-name <new-name> --share-with-version <new-version>

Ipucu

  • Komutu değiştirdiyseniz doğru model adını ve sürümünü kullandığınızdan emin olun az ml model create.
  • --share-with-name ve --share-with-version parametreleri gereklidir. Modelin kayıt defterinde sahip olacağı adı ve sürümü belirtir.

** Modelin name ve version değerlerini az ml model create komutunun çıktısından kaydederek, bunları az ml model show komutlarla birlikte aşağıdaki gibi kullanın. Modeli çıkarım için çevrimiçi bir uç noktaya dağıtırken sonraki bölümde name ve version'e gereksinim duyacaksınız.

az ml model show --name <model_name> --version <model_version> --registry-name <registry-name>

Ayrıca az ml model list --registry-name <registry-name> kullanarak kayıt defterindeki tüm modelleri listeleyebilir veya Azure Machine Learning Stüdyosu kullanıcı arabirimindeki tüm bileşenlere göz atabilirsiniz. Genel kullanıcı arabirimine gidip Kayıt Defterleri hub'ını aradığınızdan emin olun.

Aşağıdaki ekran görüntüsünde, Azure Machine Learning Stüdyosu kayıt defterindeki bir model gösterilmektedir. İş çıkışından bir model oluşturduysanız ve modeli çalışma alanından kayıt defterine kopyaladıysanız, modelin modeli eğiten işe bir bağlantısı olduğunu görürsünüz. Modeli eğitmek için kullanılan kodu, ortamı ve verileri gözden geçirmek üzere eğitim işine gitmek için bu bağlantıyı kullanabilirsiniz.

Kayıt defterindeki modellerin ekran görüntüsü.

Modeli kayıt defterinden çalışma alanında çevrimiçi uç noktaya dağıtma

Son bölümde, kayıt defterinden bir çalışma alanında çevrimiçi uç noktaya bir model dağıtacaksınız. Çalışma alanının konumu kayıt defteri tarafından desteklenen konumlardan biri olması koşuluyla, kuruluşunuzda erişiminiz olan herhangi bir çalışma alanını dağıtmayı seçebilirsiniz. Eğer bir modeli bir dev çalışma alanında eğittiyseniz ve şimdi modeli test veya prod çalışma alanına dağıtmanız gerekiyorsa, modeli eğitmek için kullanılan kod, ortam ve verilerle ilgili silsile bilgisini korurken bu özellik yararlıdır.

Çevrimiçi uç noktalar, REST API'leri aracılığıyla modelleri dağıtmanıza ve çıkarım istekleri göndermenize olanak tanır. Daha fazla bilgi için bkz. Çevrimiçi uç nokta kullanarak makine öğrenmesi modelini dağıtma ve puanlandırma.

Ipucu

Bu örnek basitlik için anahtar tabanlı kimlik doğrulamasını kullanır. Üretim dağıtımları için Microsoft kimlik tabanlı erişim denetimi aracılığıyla gelişmiş güvenlik sağlayan Microsoft Entra belirteç tabanlı kimlik doğrulaması (aad_token) önerir. Daha fazla bilgi için bkz. Çevrimiçi uç noktalar için istemcilerin kimliğini doğrulama.

Çevrimiçi uç nokta oluşturma.

az ml online-endpoint create --name reg-ep-1234

Önceki adımdaki model adını ve sürümünü referans almak için cli/jobs/pipelines-with-components/nyc_taxi_data_regression klasöründe bulunan deploy.yml satırını model: güncelleyin. Çevrimiçi uç noktaya bir dağıtım yapın. deploy.yml aşağıda referans olarak verilmiştir.

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: demo
endpoint_name: reg-ep-1234
model: azureml://registries/<registry-name>/models/nyc-taxi-model/versions/1
instance_type: Standard_DS3_v2
instance_count: 1

Çevrimiçi dağıtımı oluşturun. Dağıtımın tamamlanması birkaç dakika sürer.

az ml online-deployment create --file deploy.yml --all-traffic

Puanlama URI'sini getirin ve örnek bir puanlama isteği gönderin. Puanlama isteği için örnek veriler klasöründe bulunur scoring-data.jsoncli/jobs/pipelines-with-components/nyc_taxi_data_regression .

ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n reg-ep-1234 -o tsv --query primaryKey)
SCORING_URI=$(az ml online-endpoint show -n reg-ep-1234 -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @./scoring-data.json

Önemli

  • Kullanıcı Atamalı Kimlik ile oluşturulan uç noktalar için manuel rol ataması gereklidir. Kimliğin abonelik düzeyinde ACRPull ve Storage Blob Data Reader rollerine sahip olması gerekir.

Ipucu

  • curl komutu yalnızca Linux üzerinde çalışır.
  • Varsayılan çalışma alanını ve kaynak grubunu önkoşullar bölümünde açıklandığı gibi yapılandırmadıysanız, az ml online-endpoint ve az ml online-deployment komutlarının çalışması için --workspace-name ve --resource-group parametrelerini belirtmeniz gerekir.

Kaynakları temizleme

Eğer dağıtımı kullanmayacaksanız, maliyetleri azaltmak için silmelisiniz. Aşağıdaki örnek uç noktayı ve temel alınan tüm dağıtımları siler:

az ml online-endpoint delete --name reg-ep-1234 --yes --no-wait

Sonraki adımlar