다음을 통해 공유


Azure Machine Learning에서 일괄 처리 배포로 MLflow 모델 배포

적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)

이 문서에서는 일괄 처리 엔드포인트를 사용하여 일괄 처리 유추를 위해 Azure Machine Learning에 MLflow 모델을 배포하는 방법을 설명합니다. MLflow 모델을 일괄 처리 엔드포인트에 배포하면 Azure Machine Learning은 다음 작업을 완료합니다.

  • Machine Learning 일괄 작업을 실행하는 데 필요한 종속성을 포함하는 MLflow 기본 이미지나 큐레이션된 환경을 제공합니다.
  • 병렬 처리를 통해 데이터를 처리하는 데 사용할 수 있는 채점 스크립트를 사용하여 일괄 작업 파이프라인을 만듭니다.

지원되는 입력 파일 형식에 대한 자세한 내용과 MLflow 모델의 작동 방식에 대한 자세한 내용은 일괄 처리 유추 배포 시 고려 사항을 참조하세요.

필수 구성 요소

  • Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다. Azure Machine Learning 평가판 또는 유료 버전을 사용해 보세요.

  • Azure Machine Learning 작업 영역 작업 영역을 만들려면 Azure Machine Learning 작업 영역 관리를 참조하세요.

  • Machine Learning 작업 영역에서 다음 권한이 있는지 확인합니다.

    • 일괄 처리 엔드포인트 및 배포 만들기 또는 관리: Microsoft.MachineLearningServices/workspaces/batchEndpoints/*를 허용하는 소유자, 기여자 또는 사용자 지정 역할을 사용합니다.
    • 작업 영역 리소스 그룹에서 Azure Resource Manager 배포를 만듭니다. 작업 영역이 배포된 리소스 그룹에서 Microsoft.Resources/deployments/write를 허용하는 소유자, 기여자 또는 사용자 지정 역할을 사용합니다.
  • Machine Learning을 사용하려면 다음 소프트웨어를 설치합니다.

    다음 명령을 실행하여 Azure CLIml Azure Machine Learning 확장을 설치합니다.

    az extension add -n ml
    

    Azure CLI용 ml 확장의 버전 2.7에서 일괄 처리 엔드포인트에 대한 파이프라인 구성 요소 배포가 도입되었습니다. az extension update --name ml 명령을 사용하여 최신 버전을 가져옵니다.


작업 영역에 연결

작업 영역은 Machine Learning의 최상위 리소스입니다. 작업 영역은 Machine Learning를 사용하는 경우 만드는 모든 아티팩트를 사용할 수 있는 중앙 집중식 위치를 제공합니다. 이 섹션에서는 배포 작업을 수행하는 작업 영역에 연결합니다.

다음 명령에서 구독 ID, 작업 영역, 위치 및 리소스 그룹에 대한 값을 입력합니다.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

예 살펴보기

이 문서의 예에서는 일괄 처리 예측을 수행하기 위해 일괄 처리 엔드포인트에 MLflow 모델을 배포하는 방법을 보여 줍니다. MLflow 모델은 UCI 심장 질환 데이터 세트를 기반으로 합니다. 데이터베이스에는 76개의 특성이 있지만, 이 예에서는 14개의 하위 집합만 사용합니다. 이 모델은 0(없음)에서 1(있음)까지의 정수 값으로 환자의 심장병 존재 여부를 예측하려고 합니다.

모델은 XGBBoost 분류자를 사용하여 학습됩니다. 모든 필수 전처리는 scikit-learn 파이프라인으로 패키지되어 있어, 원시 데이터에서 예측까지 이어지는 엔드투엔드 파이프라인이 됩니다.

이 문서의 예는 azureml-examples 리포지토리에 포함된 코드 샘플을 기반으로 합니다. YAML 및 기타 파일을 복사/붙여넣기하지 않고 로컬로 명령을 실행하려면 먼저 리포지토리를 복제한 후 디렉터리를 폴더로 변경합니다.

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

이 예의 파일은 다음 폴더에 있습니다.

cd endpoints/batch/deploy-models/heart-classifier-mlflow

Jupyter Notebooks에서 따라하기

공용 Jupyter Notebook을 사용하여 이 샘플을 따라할 수 있습니다. 복제된 리포지토리에서 mlflow-for-batch-tabular.ipynb Notebook을 엽니다.

MLflow 모델 배포

이 섹션에서는 MLflow 모델을 일괄 처리 엔드포인트에 배포하여 새 데이터에 대한 일괄 처리 유추를 실행할 수 있습니다. 배포를 진행하기 전에 모델이 등록되었고 작업 영역에 사용 가능한 컴퓨팅 클러스터가 있는지 확인해야 합니다.

모델 등록

일괄 처리 엔드포인트는 등록된 모델만 배포할 수 있습니다. 이 문서에서는 리포지토리에 있는 모델의 로컬 복사본을 사용합니다. 결과적으로 작업 영역의 레지스트리에만 모델을 게시하면 됩니다.

참고 항목

배포하려는 모델이 이미 등록된 경우 컴퓨팅 클러스터 만들기 섹션으로 진행할 수 있습니다.

다음 명령을 실행하여 모델을 등록합니다.

MODEL_NAME='heart-classifier-mlflow'
az ml model create --name $MODEL_NAME --type "mlflow_model" --path "model"

컴퓨팅 클러스터 만들기

일괄 처리 배포가 일부 사용 가능한 인프라(컴퓨팅)에서 실행될 수 있는지 확인해야 합니다. 일괄 처리 배포는 작업 영역에 이미 있는 모든 Machine Learning 컴퓨팅에서 실행할 수 있습니다. 여러 일괄 처리 배포가 동일한 컴퓨팅 인프라를 공유할 수 있습니다.

이 문서에서는 cpu-cluster라는 Machine Learning 컴퓨팅 클러스터에서 작업합니다. 다음 예에서는 작업 영역에 컴퓨팅이 있는지 확인하거나 새 컴퓨팅을 만듭니다.

다음과 같이 컴퓨팅 클러스터를 만듭니다.

az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5

일괄 처리 엔드포인트 만들기

엔드포인트를 만들려면 이름과 설명이 필요합니다. 엔드포인트 이름은 엔드포인트와 연결된 URI에 표시되므로 Azure 지역 내에서 고유해야 합니다. 예를 들어, WestUS2 지역에는 mybatchendpoint라는 이름을 가진 일괄 처리 엔드포인트가 하나만 있을 수 있습니다.

  1. 나중에 쉽게 참조할 수 있도록 엔드포인트 이름을 변수에 넣으세요.

    다음 명령을 실행합니다.

    ENDPOINT_NAME="heart-classifier"
    
  2. 엔드포인트 만들기:

    1. 새 엔드포인트를 만들려면 다음 코드와 같이 YAML 구성을 만듭니다.

      endpoint.yml

      $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
      name: heart-classifier-batch
      description: A heart condition classifier for batch inference
      auth_mode: aad_token
      
    2. 다음 명령을 사용하여 엔드포인트를 만듭니다.

      az ml batch-endpoint create -n $ENDPOINT_NAME -f endpoint.yml
      

일괄 처리 배포 만들기

MLflow 모델에서는 배포를 만들 때 환경이나 채점 스크립트를 지정할 필요가 없습니다. 환경이나 채점 스크립트는 자동으로 만들어집니다. 하지만 배포에서 유추가 수행되는 방식을 사용자 지정하려는 경우 환경이나 채점 스크립트를 지정할 수 있습니다.

  1. 만들어진 엔드포인트에서 새 배포를 만들려면 다음 코드와 같이 YAML 구성을 만듭니다. 추가 속성은 전체 일괄 처리 엔드포인트 YAML 스키마를 확인합니다.

    deployment-simple/deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
    endpoint_name: heart-classifier-batch
    name: classifier-xgboost-mlflow
    description: A heart condition classifier based on XGBoost
    type: model
    model: azureml:heart-classifier-mlflow@latest
    compute: azureml:batch-cluster
    resources:
      instance_count: 2
    settings:
      max_concurrency_per_instance: 2
      mini_batch_size: 2
      output_action: append_row
      output_file_name: predictions.csv
      retry_settings:
        max_retries: 3
        timeout: 300
      error_threshold: -1
      logging_level: info
    
  2. 다음 명령을 사용하여 배포를 만듭니다.

    az ml batch-deployment create --file deployment-simple/deployment.yml --endpoint-name $ENDPOINT_NAME --set-default
    

Important

모델이 단일 일괄 처리에서 유추를 실행하는 데 걸리는 시간에 따라 배포에서 timeout 값을 구성합니다. 일괄 처리 크기가 클수록 timeout 값은 더 길어집니다. mini_batch_size 값은 일괄 처리의 파일 수를 나타내며 샘플 수는 나타내지 않는다는 점에 유의해야 합니다. 표 형식 데이터로 작업하는 경우 각 파일에 여러 행이 포함될 수 있으며, 이로 인해 일괄 처리 엔드포인트에서 각 파일을 처리하는 데 걸리는 시간이 늘어납니다. 이런 경우에는 시간 제한 오류를 방지하기 위해 높은 timeout 값을 사용합니다.

엔드포인트 호출

엔드포인트 내부에서 특정 배포를 호출할 수 있지만, 엔드포인트 자체를 호출하여 엔드포인트에서 사용할 배포를 결정하도록 하는 것이 일반적입니다. 이러한 형식의 배포를 "기본" 배포라고 합니다. 이 방식을 사용하면 기본 배포를 변경하여 엔드포인트를 호출하는 사용자와의 계약을 변경하지 않고도 배포를 제공하는 모델을 변경할 수 있습니다.

다음 지침을 사용하여 기본 배포를 업데이트합니다.

DEPLOYMENT_NAME="classifier-xgboost-mlflow"
az ml batch-endpoint update --name $ENDPOINT_NAME --set defaults.deployment_name=$DEPLOYMENT_NAME

이제 일괄 처리 엔드포인트를 사용할 준비가 되었습니다.

배포 테스트

엔드포인트를 테스트하려면 모델과 함께 사용할 수 있는 이 리포지토리에 있는 레이블이 지정되지 않은 데이터 샘플을 사용합니다. 일괄 처리 엔드포인트는 클라우드에 위치하고 Machine Learning 작업 영역에서 액세스할 수 있는 데이터만 처리할 수 있습니다. 이 예에서는 샘플을 Machine Learning 데이터 저장소에 업로드합니다. 채점을 위한 엔드포인트를 호출하는 데 사용할 수 있는 데이터 자산을 만듭니다. 일괄 처리 엔드포인트는 다양한 위치에 일괄 처리될 수 있는 데이터를 허용한다는 점을 유념해야 합니다.

  1. 먼저 데이터 자산을 만듭니다. 이 데이터 자산은 일괄 처리 엔드포인트를 사용하여 병렬로 처리하려는 여러 CSV 파일이 있는 폴더로 구성됩니다. 데이터가 이미 데이터 자산으로 등록되었거나 다른 입력 형식을 사용하려는 경우 이 단계를 건너뛰어도 됩니다.

    1. YAML에서 데이터 자산 정의를 만듭니다.

      heart-dataset-unlabeled.yml

      $schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
      name: heart-dataset-unlabeled
      description: An unlabeled dataset for heart classification.
      type: uri_folder
      path: data
      
    2. 데이터 자산을 만듭니다.

      az ml data create -f heart-dataset-unlabeled.yml
      
  2. 데이터를 업로드한 후 엔드포인트를 호출합니다.

    다음 명령에서 배포 이름이 invoke 작업에 표시되지 않는다는 점에 유의해야 합니다. 엔드포인트에는 배포가 하나만 있으므로 엔드포인트는 작업을 기본 배포로 자동 라우팅합니다. 인수/매개 변수 deployment_name을 표시하여 특정 배포를 대상으로 지정할 수 있습니다.

    다음 명령을 실행합니다.

    JOB_NAME = $(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input azureml:heart-dataset-unlabeled@latest --query name -o tsv)
    

    참고 항목

    모든 설치에 jq 유틸리티가 설치되지 않을 수도 있습니다. 설치 지침은 jq 다운로드를 참조하세요.

  3. 명령이 반환되는 즉시 일괄 작업이 시작됩니다. 완료될 때까지 작업 상태를 모니터링할 수 있습니다.

    다음 명령 실행:

    az ml job show -n $JOB_NAME --web
    

출력 분석

배포 구성에 표시된 대로 출력 예측은 predictions.csv 파일에 생성됩니다. 이 작업은 score라는 출력을 생성하며 여기에 이 ​​파일이 배치됩니다. 일괄 처리 작업당 하나의 파일만 생성됩니다.

파일의 구조는 다음과 같습니다.

  • 모델에 전송된 각 데이터 포인트마다 한 행이 있습니다. 표 형식 데이터의 경우 파일 predictions.csv에는 처리된 각 파일에 있는 각 행에 대해 하나의 행이 포함됩니다. 다른 데이터 형식(이미지, 오디오, 텍스트)의 경우 처리된 파일당 한 행이 있습니다.

  • 다음 열은 파일에 지정된 순서로 있습니다.

    • row(선택 사항): 입력 데이터 파일의 해당 행 인덱스입니다. 이 열은 입력 데이터가 테이블 형식인 경우에만 적용됩니다. 예측은 입력 파일에 나타나는 것과 동일한 순서대로 반환됩니다. 행 번호를 통해 해당 예측이 일치하는지 확인할 수 있습니다.

    • prediction: 입력 데이터와 연결된 예측입니다. 이 값은 모델의 predict(). 함수에서 제공되었으므로 "있는 그대로" 반환됩니다.

    • file_name: 데이터를 읽는 파일 이름입니다. 표 형식 데이터에서 이 필드를 사용하여 각 입력 데이터에 속하는 예측을 확인합니다.

다음과 같이 작업 이름을 사용하여 작업 결과를 다운로드할 수 있습니다.

예측을 다운로드하려면 다음 명령을 사용합니다.

az ml job download --name $JOB_NAME --output-name score --download-path ./

파일을 다운로드한 후 원하는 편집 도구로 파일을 열 수 있습니다. 다음 예에서는 Pandas 데이터 프레임을 사용하여 예측을 로드합니다.

import pandas as pd

score = pd.read_csv(
    "named-outputs/score/predictions.csv", names=["row", "prediction", "file"]
)

출력에는 표가 표시됩니다.

Row 예측 파일
0 0 heart-unlabeled-0.csv
1 1 heart-unlabeled-0.csv
2 0 heart-unlabeled-0.csv
... ... ...
307 0 heart-unlabeled-3.csv

이 예에서 입력 데이터에 CSV 형식의 표 형식 데이터가 포함되어 있습니다. 4개의 서로 다른 입력 파일이 있습니다. heart-unlabeled-0.csv, heart-unlabeled-1.csv, heart-unlabeled-2.csv, heart-unlabeled-3.csv.

일괄 처리 유추에 대한 고려 사항 검토

Machine Learning은 채점 스크립트를 지정하지 않고도 MLflow 모델을 일괄 처리 엔드포인트에 배포하는 것을 지원합니다. 이 방식은 일괄 처리와 유사하게 대량의 데이터를 처리해야 하는 모델을 배포하는 편리한 방법입니다. Machine Learning은 MLflow 모델 사양의 정보를 사용하여 유추 프로세스를 오케스트레이션합니다.

작업자의 작업 배포 살펴보기

Batch 엔드포인트는 정형 데이터와 비정형 데이터에 대해 파일 수준에서 작업을 분산합니다. 따라서 이 기능에는 URI 파일URI 폴더만 지원됩니다. 각 작업자는 Mini batch size 파일의 일괄 처리를 한 번에 처리합니다. 테이블 형식 데이터의 경우 일괄 처리 엔드포인트는 작업을 배포할 때 각 파일 내의 행 수를 고려하지 않습니다.

Warning

중첩된 폴더 구조는 유추 중에 탐색되지 않습니다. 폴더를 사용하여 데이터를 분할하는 경우 작업을 진행하기 전에 구조를 평면화해야 합니다.

일괄 배포는 파일당 한 번씩 MLflow 모델의 predict 함수를 호출합니다. 여러 행으로 구성된 CSV 파일의 경우 이 작업으로 인해 기본 컴퓨팅에 메모리 압력이 가해질 수 있습니다. 이러한 동작으로 인해 모델이 단일 파일을 평가하는 데 걸리는 시간이 길어질 수 있으며, 특히 대규모 언어 모델과 같이 비용이 많이 드는 모델의 경우 더욱 그렇습니다. 로그에서 몇 가지 메모리 부족 예외 또는 시간 초과 항목이 발생하는 경우 행이 적은 작은 파일로 데이터를 분할하거나 모델/채점 스크립트 내의 행 수준에서 일괄 처리를 구현하는 것이 좋습니다.

파일 형식에 대한 지원 검토

다음은 환경 및 채점 스크립트 없이 MLflow 모델을 배포할 때 일괄 처리 유추를 지원하는 데이터 형식입니다. 다른 파일 형식을 처리하거나 유추를 다르게 실행하려면 채점 스크립트로 MLflow 모델 배포를 사용자 지정하여 배포를 만들 수 있습니다.

파일 확장명 모델 입력으로 반환된 형식 서명 요구 사항
.csv, .parquet, .pqt pd.DataFrame ColSpec. 제공되지 않으면 열 입력이 적용되지 않습니다.
.png, .jpg, .jpeg, .tiff, .bmp, .gif np.ndarray TensorSpec. 입력은 사용 가능한 경우 텐서 셰이프와 일치하도록 변형됩니다. 사용할 수 있는 서명이 없으면 np.uint8 형식의 텐서가 유추됩니다. 자세한 내용은 이미지를 처리하는 MLflow 모델에 대한 고려 사항을 참조하세요.

Warning

입력 데이터에 지원되지 않는 파일이 있으면 작업이 실패합니다. 이러한 경우 ERROR:azureml:입력 파일 처리 오류: '/mnt/batch/tasks/.../a-given-file.avro'와 유사한 오류가 표시됩니다. 파일 형식 "avro"는 지원되지 않습니다.

MLflow 모델에 대한 서명 적용 이해

일괄 배포 작업은 사용 가능한 MLflow 모델 서명을 사용하여 데이터를 읽는 동안 입력의 데이터 형식을 적용합니다. 결과적으로 사용자의 데이터 입력은 모델 서명에 표시된 형식을 준수합니다. 예상대로 데이터를 구문 분석할 수 없는 경우 작업은 ERROR:azureml:입력 파일 처리 오류: '/mnt/batch/tasks/.../a-given-file.csv'와 유사한 오류와 함께 실패합니다. 예외: 10진법을 사용하는 int()에 대한 리터럴이 잘못되었습니다. 'value'.

MLflow 모델의 서명은 선택 사항이지만 적극 권장됩니다. 이러한 기능은 데이터 호환성 문제를 조기에 검색하는 편리한 방법을 제공합니다. 서명을 사용하여 모델을 로깅하는 방법에 대한 자세한 내용은 사용자 지정 서명, 환경 또는 샘플을 사용하여 모델 로깅을 참조하세요.

MLflow 모델과 연결된 MLmodel 파일을 열어 모델의 모델 서명을 검사할 수 있습니다. MLflow에서 서명이 작동하는 방식에 대한 자세한 내용은 MLflow의 서명을 참조하세요.

버전 지원 검사

일괄 배포는 pyfunc 버전으로만 MLflow 모델 배포를 지원합니다. 다른 버전을 배포하려면 채점 스크립트를 사용하여 모델 배포 사용자 지정을 참조하세요.

채점 스크립트를 사용하여 모델 배포 사용자 지정

배포 정의에서 채점 스크립트를 표시하지 않고도 MLflow 모델을 일괄 처리 엔드포인트에 배포할 수 있습니다. 하지만 이 파일(일반적으로 일괄 처리 드라이버라고 함)을 지정하여 유추 실행을 사용자 지정하도록 옵트인할 수 있습니다.

일반적으로 이 워크플로는 다음 시나리오에서 선택합니다.

  • MLflow 배포의 일괄 처리 배포에서 지원되지 않는 프로세스 파일 형식입니다.
  • mlflow.<flavor>.load() 함수로 특정 버전을 로드하는 등 모델 실행 방식을 사용자 지정합니다.
  • 모델 자체에서 완료되지 않은 경우, 채점 루틴에서 사전 처리나 사후 처리를 완료합니다.
  • 이미지를 나타내는 텐서 그래프 등 표 형식 데이터로는 잘 표현되지 않는 모델의 프레젠테이션을 조정합니다.
  • 메모리 제약 조건으로 인해 각 파일을 한 번에 처리할 수 없으므로, 모델이 데이터를 청크로 읽도록 허용합니다.

Important

MLflow 모델 배포에 대한 채점 스크립트를 나타내려면 배포가 실행되는 환경을 지정해야 합니다.

채점 스크립트 사용

다음 단계에 따라 사용자 지정 채점 스크립트를 사용하여 MLflow 모델을 배포합니다.

  1. MLflow 모델이 배치된 폴더를 식별합니다.

    1. Azure Machine Learning 포털에서 모델로 이동합니다.

    2. 배포할 모델을 선택한 다음 Artifacts 탭을 선택합니다.

    3. 표시된 폴더를 기록합니다. 이 폴더는 모델을 등록할 때 표시되었습니다.

      모델 아티팩트가 저장된 폴더를 보여 주는 스크린샷.

  2. 다음 채점 스크립트를 만듭니다. 이전 폴더 이름 modelinit() 함수에 포함되는 방식에 주목합니다.

    deployment-custom/code/batch_driver.py

    # Copyright (c) Microsoft. All rights reserved.
    # Licensed under the MIT license.
    
    import os
    import glob
    import mlflow
    import pandas as pd
    import logging
    
    
    def init():
        global model
        global model_input_types
        global model_output_names
    
        # AZUREML_MODEL_DIR is an environment variable created during deployment
        # It is the path to the model folder
        # Please provide your model's folder name if there's one
        model_path = glob.glob(os.environ["AZUREML_MODEL_DIR"] + "/*/")[0]
    
        # Load the model, it's input types and output names
        model = mlflow.pyfunc.load(model_path)
        if model.metadata and model.metadata.signature:
            if model.metadata.signature.inputs:
                model_input_types = dict(
                    zip(
                        model.metadata.signature.inputs.input_names(),
                        model.metadata.signature.inputs.pandas_types(),
                    )
                )
            if model.metadata.signature.outputs:
                if model.metadata.signature.outputs.has_input_names():
                    model_output_names = model.metadata.signature.outputs.input_names()
                elif len(model.metadata.signature.outputs.input_names()) == 1:
                    model_output_names = ["prediction"]
        else:
            logging.warning(
                "Model doesn't contain a signature. Input data types won't be enforced."
            )
    
    
    def run(mini_batch):
        print(f"run method start: {__file__}, run({len(mini_batch)} files)")
    
        data = pd.concat(
            map(
                lambda fp: pd.read_csv(fp).assign(filename=os.path.basename(fp)), mini_batch
            )
        )
    
        if model_input_types:
            data = data.astype(model_input_types)
    
        # Predict over the input data, minus the column filename which is not part of the model.
        pred = model.predict(data.drop("filename", axis=1))
    
        if pred is not pd.DataFrame:
            if not model_output_names:
                model_output_names = ["pred_col" + str(i) for i in range(pred.shape[1])]
            pred = pd.DataFrame(pred, columns=model_output_names)
    
        return pd.concat([data, pred], axis=1)
    
  3. 채점 스크립트를 실행할 수 있는 환경을 만듭니다. 이 예의 모델은 MLflow이므로 conda 요구 사항도 모델 패키지에 지정되어 있습니다. MLflow 모델과 포함된 파일에 대한 자세한 내용은 MLmodel 형식을 참조하세요.

    이 단계에서는 파일의 conda 종속성을 사용하여 환경을 빌드합니다. 일괄 배포에 필요한 azureml-core 패키지도 포함해야 합니다.

    모델이 이미 모델 레지스트리에 등록되어 있는 경우, 모델과 관련된 conda.yml 파일을 다운로드하여 복사할 수 있습니다. 해당 파일은 Azure Machine Learning 스튜디오모델>목록에서 모델 선택>Artifacts에서 사용할 수 있습니다. 루트 폴더에서 conda.yml 파일을 선택한 다음 다운로드를 선택하거나 해당 콘텐츠를 복사합니다.

    Important

    이 예제에서는 /heart-classifier-mlflow/environment/conda.yaml에 지정된 conda 환경을 사용합니다. 이 파일은 원래 MLflow conda 종속성 파일을 결합하고 azureml-core 패키지를 추가하여 만들었습니다. conda.yml 파일을 모델에서 직접 사용할 수 없습니다.

    환경 정의는 배포 정의 자체에 익명 환경으로 포함됩니다. 배포에서 다음 줄이 표시됩니다.

    environment:
      name: batch-mlflow-xgboost
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
      conda_file: environment/conda.yaml
    
  4. 배포 구성:

    만들어진 엔드포인트에서 새 배포를 만들려면 다음 코드 조각에 표시된 대로 YAML 구성을 만듭니다. 추가 속성은 전체 일괄 처리 엔드포인트 YAML 스키마를 확인합니다.

    deployment-custom/deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
    endpoint_name: heart-classifier-batch
    name: classifier-xgboost-custom
    description: A heart condition classifier based on XGBoost
    type: model
    model: azureml:heart-classifier-mlflow@latest
    environment:
      name: batch-mlflow-xgboost
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
      conda_file: environment/conda.yaml
    code_configuration:
      code: code
      scoring_script: batch_driver.py
    compute: azureml:batch-cluster
    resources:
      instance_count: 2
    settings:
      max_concurrency_per_instance: 2
      mini_batch_size: 2
      output_action: append_row
      output_file_name: predictions.csv
      retry_settings:
        max_retries: 3
        timeout: 300
      error_threshold: -1
      logging_level: info
    
  5. 배포 만들기:

    다음 코드를 실행하세요.

    az ml batch-deployment create --file deployment-custom/deployment.yml --endpoint-name $ENDPOINT_NAME
    

이제 일괄 처리 엔드포인트를 사용할 준비가 되었습니다.

리소스 정리

연습을 완료한 후 더 이상 필요하지 않은 리소스는 삭제합니다.

일괄 처리 엔드포인트와 모든 기본 배포를 삭제하려면 다음 코드를 실행합니다.

az ml batch-endpoint delete --name $ENDPOINT_NAME --yes

이 명령은 일괄 처리 채점 작업을 삭제하지 않습니다.