레지스트리를 사용하여 작업 영역 간에 모델, 구성 요소 및 환경 공유

Azure Machine Learning 레지스트리를 사용하면 조직 내의 작업 영역에서 협업할 수 있습니다. 레지스트리를 사용하면 모델, 구성 요소 및 환경을 공유할 수 있습니다.

여러 작업 영역에서 동일한 모델, 구성 요소 및 환경 세트를 사용하려는 두 가지 시나리오가 있습니다.

  • 작업 영역 간 MLOps: dev 작업 영역에서 모델을 학습시키고 있으며 모델을 testprod 작업 영역에 배포해야 합니다. 이 시나리오에서는 모델이 test 또는 prod 작업 영역에 배포되는 엔드포인트와 dev 작업 영역에서 모델을 학습시키는 데 사용된 학습 작업, 메트릭, 코드, 데이터 및 환경 간에 엔드투엔드 계보를 사용하려고 합니다.
  • 여러 팀이 모델과 파이프라인을 공유하고 재사용: 공유 및 재사용은 협업과 생산성을 향상시킵니다. 이 시나리오에서는 학습된 모델과 모델 학습에 사용된 관련 구성 요소 및 환경을 중앙 카탈로그에 게시하려 할 수 있습니다. 이때 다른 팀의 동료가 여러분이 공유한 자신을 검색하여 자신의 실험에 재사용할 수 있습니다.

이 문서에서는 다음을 수행하는 방법을 알아봅니다.

  • 레지스트리에서 환경 및 구성 요소를 만듭니다.
  • 레지스트리의 구성 요소를 사용하여 작업 영역에서 모델 학습 작업을 제출합니다.
  • 학습된 모델을 레지스트리에 등록합니다.
  • 레지스트리의 모델을 작업 영역의 온라인 엔드포인트에 배포한 다음, 유추 요청을 제출합니다.

필수 조건

이 문서의 단계를 수행하기 전에 다음과 같은 필수 구성 요소가 있는지 확인합니다.

  • 모델, 구성 요소 및 환경을 공유하기 위한 Azure Machine Learning 레지스트리입니다. 레지스트리를 만들려면 레지스트리를 만드는 방법을 참조하세요.

  • Azure Machine Learning 작업 영역 리소스가 없으면 빠른 시작: 작업 영역 리소스 만들기 문서의 단계에서 리소스를 만듭니다.

    Important

    작업 영역을 만드는 Azure 지역(위치)은 Azure Machine Learning 레지스트리를 지원하는 지역 목록에 있어야 합니다.

  • Azure CLI 및 ml 확장 또는 Azure Machine Learning Python SDK v2:

    Azure CLI 및 확장을 설치하려면 CLI(v2) 설치, 설정 및 사용을 참조하세요.

    Important

    • 이 문서의 CLI 예제에서는 Bash(또는 호환) 셸을 사용한다고 가정합니다. 예를 들어 Linux 시스템 또는 Linux용 Windows 하위 시스템에서 이러한 예제를 사용합니다.

    • 또한 이 예제에서는 구독, 작업 영역, 리소스 그룹 또는 위치에 대한 매개 변수를 지정할 필요가 없도록 Azure CLI에 대한 기본값을 구성한 것으로 가정합니다. 기본값을 설정하려면 다음 명령을 사용합니다. 다음 매개 변수를 구성의 값으로 바꿉니다.

      • <subscription> 를 Azure 구독 ID로 바꿉니다.
      • <workspace>을(를) Azure Machine Learning 작업 영역 이름으로 바꿉니다.
      • <resource-group>을 작업 영역이 포함된 Azure 리소스 그룹으로 바꿉니다.
      • <location>을 작업 영역이 포함된 Azure 지역으로 바꿉니다.
      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
      

      현재 기본값은 az configure -l 명령을 사용하여 확인할 수 있습니다.

예제 리포지토리 복제

이 문서의 코드 예제는 예제 리포지토리nyc_taxi_data_regression 샘플을 기반으로 합니다. 개발 환경에서 이러한 파일을 사용하려면 다음 명령을 사용하여 리포지토리를 복제하고 디렉터리를 예제로 변경합니다.

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

CLI 예제의 경우 예제 리포지토리의 로컬 복제본에서 디렉터리를 cli/jobs/pipelines-with-components/nyc_taxi_data_regression으로 변경합니다.

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

SDK 연결 만들기

이 단계는 Python SDK를 사용하는 경우에만 필요합니다.

Azure Machine Learning 작업 영역 및 레지스트리 모두에 클라이언트를 연결합니다.

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)

레지스트리에서 환경 만들기

환경은 학습 작업을 실행하거나 모델을 배포하는 데 필요한 docker 컨테이너 및 Python 종속성을 정의합니다. 환경에 대한 자세한 내용은 다음 문서를 참조하세요.

동일한 CLI 명령 az ml environment create를 사용하여 작업 영역 또는 레지스트리에서 환경을 만들 수 있습니다. --workspace-name 명령을 사용하여 이 명령을 실행하면 작업 영역에서 환경이 만들어지고, --registry-name을 사용하여 이 명령을 실행하면 레지스트리에서 환경이 만들어집니다.

python:3.8 docker 이미지를 사용하고 SciKit Learn 프레임워크를 사용하여 학습 작업을 실행하는 데 필요한 Python 패키지를 설치하는 환경을 만들겠습니다. 예제 리포지토리를 복제했으며 예제가 cli/jobs/pipelines-with-components/nyc_taxi_data_regression 폴더에 있는 경우 env_train/Dockerfile docker 파일을 참조하는 env_train.yml 환경 정의 파일을 볼 수 있습니다. 아래의 env_train.yml 파일은 참조용으로 표시되었습니다.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: SKLearnEnv
version: 1
build:
  path: ./env_train

다음과 같이 az ml environment create를 사용하여 환경을 만듭니다.

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

이 이름과 버전을 가진 환경이 레지스트리에 이미 있다는 오류가 발생하는 경우 env_train.yml 파일의 version 필드를 편집하거나, CLI에서 env_train.yml의 버전 값을 재정의하는 다른 버전을 지정하면 됩니다.

# 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

version=$(date +%s)는 Linux에서만 작동합니다. 이 명령이 작동하지 않는 경우 $version을 난수로 바꿉니다.

az ml environment create 명령의 출력에서 환경의 nameversion을 적어 두고 다음과 같이 az ml environment show 명령에서 사용합니다. 다음 섹션에서 레지스트리에 구성 요소를 만들 때 nameversion이 필요합니다.

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

다른 환경 이름 또는 버전을 사용한 경우 그에 맞게 --name--version 매개 변수를 바꿉니다.

az ml environment list --registry-name <registry-name> 명령을 사용하여 레지스트리의 모든 환경을 나열할 수도 있습니다.

Azure Machine Learning 스튜디오의 모든 환경을 찾아볼 수 있습니다. 전역 UI로 이동하여 레지스트리 항목을 찾습니다.

레지스트리의 환경 스크린샷

레지스트리에서 구성 요소 만들기

구성 요소는 Azure Machine Learning에서 Machine Learning 파이프라인의 재사용 가능한 구성 요소입니다. 개별 파이프라인 단계의 코드, 명령, 환경, 입력 인터페이스 및 출력 인터페이스를 한 구성 요소에 패키징할 수 있습니다. 그런 다음, 다른 파이프라인을 작성할 때마다 종속성 및 코드 이식에 대해 걱정할 필요 없이 여러 파이프라인에서 구성 요소를 재사용할 수 있습니다.

작업 영역에서 구성 요소를 만들면 해당 작업 영역 내의 모든 파이프라인 작업에서 구성 요소를 사용할 수 있습니다. 레지스트리에서 구성 요소를 만들면 조직 내 모든 작업 영역의 모든 파이프라인에서 구성 요소를 사용할 수 있습니다. 레지스트리에서 구성 요소를 만드는 것은 조직 내의 여러 팀이 실험에 사용할 수 있는 모듈형 재사용 가능한 유틸리티 또는 공유 학습 작업을 빌드하는 훌륭한 방법입니다.

구성 요소에 대한 자세한 내용은 다음 문서를 참조하세요.

현재 위치가 cli/jobs/pipelines-with-components/nyc_taxi_data_regression 폴더인지 확인합니다. Scikit Learn 학습 스크립트 train_src/train.py큐레이팅된 환경AzureML-sklearn-0.24-ubuntu18.04-py37-cpu을 패키징하는 구성 요소 정의 파일 train.yml을 찾을 수 있습니다. 큐레이팅된 환경 대신 이전 단계에서 만든 Scikit Learn 환경을 사용하겠습니다. train.ymlenvironment 필드를 편집하여 Scikit Learn 환경을 참조할 수 있습니다. 결과 구성 요소 정의 파일 train.yml은 다음 예제와 비슷합니다.

# <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/<registry-name>/environments/SKLearnEnv/versions/1`
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}}

다른 이름 또는 버전을 사용한 경우 environment: azureml://registries/<registry-name>/environments/<sklearn-environment-name>/versions/<sklearn-environment-version>이 보다 일반적인 표현입니다. 따라서 <registry-name>, <sklearn-environment-name><sklearn-environment-version>을 이에 맞게 바꿔야 합니다. 그런 다음, az ml component create 명령을 실행하여 다음과 같이 구성 요소를 만듭니다.

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

동일한 CLI 명령 az ml component create를 사용하여 작업 영역 또는 레지스트리에서 구성 요소를 만들 수 있습니다. --workspace-name 명령을 사용하여 이 명령을 실행하면 작업 영역에서 구성 요소가 만들어지고, --registry-name을 사용하여 이 명령을 실행하면 레지스트리에서 구성 요소가 만들어집니다.

train.yml을 편집하지 않으려는 경우 다음과 같이 CLI에서 환경 이름을 재정의할 수 있습니다.

az ml component create --file train.yml --registry-name <registry-name>` --set environment=azureml://registries/<registry-name>/environments/SKLearnEnv/versions/1
# or if you used a different name or version, replace `<sklearn-environment-name>` and `<sklearn-environment-version>` accordingly
az ml component create --file train.yml --registry-name <registry-name>` --set environment=azureml://registries/<registry-name>/environments/<sklearn-environment-name>/versions/<sklearn-environment-version>

구성 요소의 이름이 레지스트리에 이미 있다는 오류가 발생하면 train.yml에서 버전을 편집하거나 CLI에서 버전을 임의의 버전으로 재정의하면 됩니다.

az ml component create 명령의 출력에서 구성 요소의 nameversion을 적어 두고 다음과 같이 az ml component show 명령에서 사용합니다. 다음 섹션에서 작업 영역에 학습 제출 작업을 만들 때 nameversion이 필요합니다.

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

az ml component list --registry-name <registry-name> 명령을 사용하여 레지스트리의 모든 구성 요소를 나열할 수도 있습니다.

Azure Machine Learning 스튜디오에서 모든 구성 요소를 찾아볼 수 있습니다. 전역 UI로 이동하여 레지스트리 항목을 찾습니다.

레지스트리의 구성 요소를 보여주는 스크린샷

레지스트리의 구성 요소를 사용하여 작업 영역에서 파이프라인 작업 실행

레지스트리의 구성 요소를 사용하는 파이프라인 작업을 실행하는 경우 컴퓨팅 리소스 및 학습 데이터는 작업 영역에 로컬입니다. 작업 실행에 대한 자세한 내용은 다음 문서를 참조하세요.

이전 섹션에서 만든 Scikit Learn 학습 구성 요소를 사용하여 파이프라인 작업을 실행하고 모델을 학습시킬 것입니다. 현재 위치가 cli/jobs/pipelines-with-components/nyc_taxi_data_regression 폴더인지 확인합니다. 학습 데이터 세트는 data_transformed 폴더에 있습니다. 이전 섹션에서 만든 학습 구성 요소를 참조하도록 single-job-pipeline.yml 파일의 train_job 섹션 아래에서 component 섹션을 편집합니다. 최종 single-job-pipeline.yml은 아래와 같습니다.

$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: 

이 파이프라인이 특정 작업 영역에 없는 구성 요소를 사용하여 작업 영역에서 실행된다는 것이 핵심입니다. 구성 요소는 조직의 모든 작업 영역에서 사용할 수 있는 레지스트리에 있습니다. 해당 작업 영역에서 학습 코드 및 환경을 사용할 수 있도록 만드는 것에 대해 걱정하지 않고 액세스 권한이 있는 모든 작업 영역에서 이 학습 작업을 실행할 수 있습니다.

Warning

  • 파이프라인 작업을 실행하기 전에, 작업을 실행할 작업 영역이 구성 요소를 만든 레지스트리에서 지원하는 Azure 지역에 있는지 확인합니다.
  • 작업 영역에 이름이 cpu-cluster인 컴퓨팅 클러스터가 있는지 확인하거나 jobs.train_job.compute 아래에서 compute 필드를 컴퓨팅 이름으로 편집합니다.

az ml job create 명령을 사용하여 파이프라인 작업을 실행합니다.

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

필수 구성 요소 섹션에 설명된 대로 기본 작업 영역 및 리소스 그룹을 구성하지 않은 경우 작업할 az ml job create--workspace-name--resource-group 매개 변수를 지정해야 합니다.

또는 single-job-pipeline.yml 편집을 건너뛰고 CLI에서 train_job이 사용하는 구성 요소 이름을 재정의할 수 있습니다.

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

학습 작업에 사용되는 구성 요소는 레지스트리를 통해 공유되므로, 다른 구독에서도 조직 내에서 액세스할 수 있는 모든 작업 영역에 작업을 제출할 수 있습니다. 예를 들어 dev-workspace, test-workspaceprod-workspace가 있는 경우 이러한 세 작업 영역에서 학습 작업을 실행하려면 간단하게 az ml job create 명령을 세 번 실행하면 됩니다.

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 스튜디오의 작업 출력에서 엔드포인트 링크를 선택하여 작업을 봅니다. 여기서 학습 메트릭을 분석하고, 레지스트리의 구성 요소 및 환경이 작업에 사용되고 있는지 확인하고, 학습된 모델을 검토할 수 있습니다. 출력에서 작업의 name을 적어 두거나 Azure Machine Learning 스튜디오의 작업 개요에서 동일한 정보를 찾습니다. 레지스트리에서 모델을 만드는 방법에 대한 다음 섹션에서 학습된 모델을 다운로드하려면 이 정보가 필요합니다.

Azure Machine Learning 스튜디오 파이프라인의 스크린샷.

레지스트리에서 모델 만들기

이 섹션에서는 레지스트리에서 모델을 만드는 방법을 알아봅니다. 모델 관리를 검토하여 Azure Machine Learning의 모델 관리에 대해 자세히 알아보세요. 레지스트리에서 모델을 만드는 두 가지 방법을 살펴보겠습니다. 첫 번째는 로컬 파일로 만드는 것입니다. 두 번째는 작업 영역에 등록된 모델을 레지스트리에 복사하는 것입니다.

두 옵션 모두 MLflow 형식으로 모델을 만듭니다. 그러면 유추 코드를 작성하지 않고도 유추를 위해 이 모델을 배포하는 데 도움이 됩니다.

로컬 파일에서 레지스트리에 모델 만들기

<job-name>을 이전 섹션의 작업 이름으로 바꿔서 train_job의 출력으로 사용할 수 있는 모델을 다운로드합니다. 이 모델은 MLflow 메타데이터 파일과 함께 ./artifacts/model/에서 받을 수 있습니다.

# 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/

필수 구성 요소 섹션에 설명된 대로 기본 작업 영역 및 리소스 그룹을 구성하지 않은 경우 작업할 az ml model create--workspace-name--resource-group 매개 변수를 지정해야 합니다.

Warning

az ml job list의 출력은 sed에 전달됩니다. 이 방법은 Linux 셸에서만 작동합니다. Windows를 사용하는 경우 az ml job list --parent-job-name <job-name> --query [0].name 을 실행하고 학습 작업 이름에 보이는 따옴표를 제거합니다.

모델을 다운로드할 수 없는 경우 이전 섹션에서 학습 작업으로 학습시킨 샘플 MLflow 모델을 cli/jobs/pipelines-with-components/nyc_taxi_data_regression/artifacts/model/ 폴더에서 찾을 수 있습니다.

다음과 같이 레지스트리에서 모델을 만듭니다.

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

  • 모델 이름과 버전이 있다는 오류가 발생하면 version 매개 변수에 난수를 사용합니다.
  • 동일한 CLI 명령 az ml model create를 사용하여 작업 영역 또는 레지스트리에서 모델을 만들 수 있습니다. --workspace-name 명령을 사용하여 이 명령을 실행하면 작업 영역에서 모델이 만들어지고, --registry-name을 사용하여 이 명령을 실행하면 레지스트리에서 모델이 만들어집니다.

작업 영역에서 레지스트리로 모델 공유

이 워크플로에서는 먼저 작업 영역에서 모델을 만든 다음, 레지스트리에 공유하겠습니다. 이 워크플로는 모델을 공유하기 전에 작업 영역에서 모델을 테스트하려는 경우에 유용합니다. 예를 들어 모델을 엔드포인트에 배포하고, 테스트 데이터로 유추를 시도한 다음, 모든 것이 정상이면 모델을 레지스트리에 복사합니다. 이 워크플로는 다양한 기술, 프레임워크 또는 매개 변수를 사용하여 일련의 모델을 개발하고, 그 중 하나만 프로덕션 후보로서 레지스트리로 승격하려는 경우에도 유용하게 활용할 수 있습니다.

이전 섹션의 파이프라인 작업 이름이 있는지 확인하고 해당 명령에서 이름을 바꿔 아래의 학습 작업 이름을 가져옵니다. 그런 다음, 학습 작업 출력의 모델을 작업 영역에 등록합니다. --path 매개 변수가 azureml://jobs/$train_job_name/outputs/artifacts/paths/model 구문을 사용하여 train_job 출력을 참조하는 방법을 살펴봅니다.

# 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 

  • 모델 이름과 버전이 있다는 오류가 발생하면 version 매개 변수에 난수를 사용합니다.
  • 필수 구성 요소 섹션에 설명된 대로 기본 작업 영역 및 리소스 그룹을 구성하지 않은 경우 작업할 az ml model create--workspace-name--resource-group 매개 변수를 지정해야 합니다.

모델 이름과 버전을 적어둡니다. Studio UI에서 모델을 검색하거나 az ml model show --name nyc-taxi-model --version $model_version 명령을 사용하여 모델이 작업 영역에 등록되었는지 확인할 수 있습니다.

다음으로, 이제 모델을 작업 영역에서 레지스트리로 공유합니다.

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

  • az ml model create 명령에서 모델을 변경한 경우 올바른 모델 이름과 버전을 사용해야 합니다.
  • 위의 명령에는 두 개의 선택적 매개 변수 "--share-with-name" 및 "--share-with-version"이 있습니다. 이러한 항목이 제공되지 않으면 새 모델은 공유되는 모델과 동일한 이름과 버전을 갖습니다. az ml model create 명령의 출력에서 모델의 nameversion을 적어 두고 다음과 같이 az ml model show 명령에서 사용합니다. 다음 섹션에서 유추를 위해 모델을 온라인 엔드포인트에 배포할 때 nameversion이 필요합니다.
az ml model show --name <model_name> --version <model_version> --registry-name <registry-name>

az ml model list --registry-name <registry-name>를 사용하여 레지스트리의 모든 모델을 나열하거나 Azure Machine Learning 스튜디오 UI에서 모든 구성 요소를 찾아볼 수도 있습니다. 전역 UI로 이동하여 레지스트리 허브를 찾아야 합니다.

다음 스크린샷은 Azure Machine Learning 스튜디오의 레지스트리에 있는 모델을 보여 줍니다. 작업 출력에서 모델을 만든 후 작업 영역에서 레지스트리로 모델을 복사한 경우 모델을 학습시킨 작업의 링크가 모델에 있는 것을 볼 수 있습니다. 해당 링크를 통해 학습 작업으로 이동하여 모델을 학습시키는 데 사용된 코드, 환경 및 데이터를 검토할 수 있습니다.

레지스트리의 모델 스크린샷

레지스트리에서 작업 영역의 온라인 엔드포인트로 모델 배포

마지막 섹션에서는 레지스트리에서 작업 영역의 온라인 엔드포인트로 모델을 배포합니다. 작업 영역의 위치가 레지스트리에서 지원하는 위치 중 하나인 경우 조직 내에서 액세스 권한이 있는 작업 영역을 배포하도록 선택할 수 있습니다. 이 기능은 dev 작업 영역에서 모델을 학습시켰으며 이제 모델을 test 또는 prod 작업 영역에 배포해야 하고 모델을 학습시키는 데 사용된 코드, 환경 및 데이터에 대한 계보 정보를 유지해야 하는 경우에 유용합니다.

온라인 엔드포인트를 사용하면 REST API를 통해 모델을 배포하고 유추 요청을 제출할 수 있습니다. 자세한 내용은 온라인 엔드포인트를 사용하여 기계 학습 모델 배포 및 채점 방법을 참조하세요.

온라인 엔드포인트를 만듭니다.

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

이전 단계의 모델 이름과 버전을 참조하도록 cli/jobs/pipelines-with-components/nyc_taxi_data_regression 폴더에 있는 model:deploy.yml을 업데이트합니다. 온라인 엔드포인트에 대한 온라인 배포를 만듭니다. 아래의 deploy.yml 파일은 참조용으로 표시되었습니다.

$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_DS2_v2
instance_count: 1

온라인 배포를 만듭니다. 배포를 완료하려면 몇 분이 걸립니다.

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

채점 URI를 가져오고 샘플 채점 요청을 제출합니다. 채점 요청에 대한 샘플 데이터는 cli/jobs/pipelines-with-components/nyc_taxi_data_regression 폴더의 scoring-data.json에 있습니다.

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

  • curl 명령은 Linux에서만 작동합니다.
  • 필수 구성 요소 섹션에 설명된 대로 기본 작업 영역 및 리소스 그룹을 구성하지 않은 경우 작업할 az ml online-endpointaz ml online-deployment 명령의 --workspace-name--resource-group 매개 변수를 지정해야 합니다.

리소스 정리

배포를 더 이상 사용하지 않으려는 경우 요금이 발생하지 않도록 배포를 삭제해야 합니다. 다음 예제에서는 엔드포인트 및 모든 기본 배포를 삭제합니다.

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

다음 단계