일괄 처리 채점에 일괄 처리 엔드포인트(미리 보기) 사용

적용 대상: Azure CLI ml 확장 v1 v2(미리 보기)

참고

이 문서에서는 공개 미리 보기에 있는 최신 버전의 CLI v2를 활용합니다. 최신 버전 업데이트 및 설치에 대한 지침은 CLI(v2) 설치 및 설정 문서를 참조하세요.

일괄 처리 엔드포인트(미리 보기)를 사용하여 일괄 처리 채점을 수행하는 방법을 알아봅니다. 일괄 처리 엔드포인트는 일괄 처리 채점을 위해 모델을 호스트하는 프로세스를 간소화하므로 인프라가 아닌 기계 학습에 집중할 수 있습니다. 자세한 내용은 Azure Machine Learning 엔드포인트(미리 보기)란?을 참조하세요.

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

  • 일괄 처리 엔드포인트 및 기본 일괄 처리 배포 만들기
  • Azure CLI를 사용하여 일괄 처리 채점 작업 시작
  • 일괄 처리 채점 작업 실행 진행률 모니터링 및 채점 결과 확인
  • 기존 흐름에 영향을 주지 않고 자동 생성된 코드 및 환경을 사용하여 기존 엔드포인트에 새 MLflow 모델 배포
  • 새 배포를 테스트하고 기본 배포로 설정
  • 사용 중이 아닌 엔드포인트 및 배포 삭제

중요

이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기 버전은 서비스 수준 계약 없이 제공되며 프로덕션 워크로드에는 사용하지 않는 것이 좋습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

사전 요구 사항

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

  • Azure CLI 및 ml 확장을 설치합니다. CLI(v2)(미리 보기) 설치, 설정 및 사용의 설치 지침을 따르세요.

  • Azure 리소스 그룹이 없고 사용자(또는 사용하는 서비스 주체)에게 Contributor 권한이 있어야 하는 경우 Azure 리소스 그룹을 만듭니다. 리소스 그룹 생성은 CLI(v2) 설치, 설정 및 사용(미리 보기)을 참조하세요.

  • 아직 없는 경우 Azure Machine Learning 작업 영역을 만듭니다. 작업 영역 생성은 CLI(v2)(미리 보기) 설치, 설정 및 사용을 참조하세요.

  • Azure CLI에 대한 기본 작업 영역 및 리소스 그룹을 구성합니다. Machine Learning CLI 명령에는 --workspace/-w--resource-group/-g 매개 변수가 필요합니다. 기본값을 구성하면 값이 여러 번 전달되지 않도록 방지할 수 있습니다. 명령줄에서 이러한 항목을 재정의할 수 있습니다. 다음 코드를 실행하여 기본값을 설정합니다. 자세한 내용은 CLI(v2)(미리 보기) 설치, 설정 및 사용을 참조하세요.

az account set -s "<subscription ID>"
az configure --defaults group="<resource group>" workspace="<workspace name>" location="<location>"

예제 리포지토리 복제

다음 명령을 실행하여 AzureML 예제 리포지토리를 복제하고 cli 디렉터리로 이동합니다. 이 문서에서는 /cli/endpoints/batch의 자산을 사용하며, 엔드투엔드 작업 예제는 /cli/batch-score.sh입니다.

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

엔드포인트 이름을 설정합니다. YOUR_ENDPOINT_NAME을 Azure 지역 내의 고유한 이름으로 대체합니다.

Unix의 경우 다음 명령을 실행합니다.

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

Windows의 경우 다음 명령을 실행합니다.

set ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

참고

두 엔드포인트 이름은 Azure 지역 내에서 고유해야 합니다. 예를 들어 westus2에는 mybatchendpoint라는 일괄 처리 엔드포인트가 하나만 있을 수 있습니다.

컴퓨팅 만들기

일괄 처리 엔드포인트는 로컬이 아닌 클라우드 컴퓨팅 리소스에서만 실행됩니다. 클라우드 컴퓨팅 리소스는 재사용 가능한 가상 컴퓨터 클러스터입니다. 다음 코드를 실행하여 Azure Machine Learning 컴퓨팅 클러스터를 만듭니다. 이 문서의 다음 예제에서는 여기에서 만든 batch-cluster라는 컴퓨팅을 사용합니다. 필요에 따라 조정하고 azureml:<your-compute-name>을 사용하여 컴퓨팅을 참조합니다.

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

참고

일괄 처리 엔드포인트가 호출되고 일괄 처리 채점 작업이 제출될 때까지 클러스터가 0개 노드로 유지되기 때문에 이 시점에는 컴퓨팅에 대한 요금이 청구되지 않습니다. AmlCompute의 비용을 관리하고 최적화하는 방법에 대해 자세히 알아보세요.

일괄 처리 엔드포인트 및 일괄 처리 배포 이해

일괄 처리 엔드포인트는 클라이언트가 일괄 처리 채점 작업을 트리거하기 위해 호출할 수 있는 HTTPS 엔드포인트입니다. 일괄 처리 채점 작업은 여러 입력을 채점하는 작업입니다(자세한 내용은 일괄 처리 엔드포인트란? 참조). 일괄 처리 배포는 실제 일괄 처리 채점을 수행하는 모델을 호스트하는 컴퓨팅 리소스 집합입니다. 하나의 일괄 처리 엔드포인트에 여러 일괄 처리 배포가 있을 수 있습니다.

일괄 처리 배포 중 하나가 엔드포인트의 기본 배포 역할을 합니다. 기본 배포는 엔드포인트가 호출될 때 실제 일괄 처리 채점을 수행하는 데 사용됩니다. 일괄 처리 엔드포인트 및 일괄 처리 배포에 대해 자세히 알아보세요.

다음 YAML 파일은 일괄 처리 엔드포인트 생성을 위해 CLI 명령에 포함할 수 있는 일괄 처리 엔드포인트 정의합니다. 리포지토리에서 이 파일은 /cli/endpoints/batch/batch-endpoint.yml에 있습니다.

$schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
name: mybatchedp
description: my sample batch endpoint
auth_mode: aad_token

다음 표에서는 엔드포인트 YAML의 주요 속성에 대해 설명합니다. 전체 일괄 처리 엔드포인트 YAML 스키마는 CLI(v2) 일괄 처리 엔드포인트 YAML 스키마를 참조하세요.

설명
$schema [선택 사항] YAML 스키마입니다. 위 예제의 스키마를 브라우저에서 보면 일괄 처리 엔드포인트 YAML 파일에서 사용할 수 있는 모든 옵션을 볼 수 있습니다.
name 일괄 처리 엔드포인트의 이름입니다. Azure 지역 수준에서 고유해야 합니다.
auth_mode 일괄 처리 엔드포인트에 대한 인증 방법입니다. 현재는 Azure Active Directory 토큰 기반 인증(aad_token)만 지원됩니다.
defaults.deployment_name 엔드포인트의 기본 배포 역할을 할 배포의 이름입니다.

일괄 처리 배포를 만들려면 다음 항목이 모두 필요합니다.

  • 모델 파일 또는 작업 영역에 등록된 모델(azureml:<model-name>:<model-version>을 사용하여 참조됨).
  • 모델 채점하는 코드입니다.
  • 모델이 실행되는 환경입니다. Conda 종속성을 사용하는 Docker 이미지이거나 azureml:<environment-name>:<environment-version>을 사용하여 참조된 작업 영역에 이미 등록된 환경일 수 있습니다.
  • azureml:<compute-name> 및 리소스 설정을 사용하여 참조된, 미리 생성된 컴퓨팅입니다.

Azure ML 엔터티를 참조하는 방법에 대한 자세한 내용은 Azure ML 엔터티 참조를 참조하세요.

예제 리포지토리에는 필요한 모든 파일이 포함되어 있습니다. 다음 YAML 파일은 모든 필수 입력 및 선택적 설정을 사용하여 일괄 처리 배포를 정의합니다. CLI 명령에 이 파일을 포함시켜 일괄 처리 배포를 생성할 수 있습니다. 리포지토리에서 이 파일은 /cli/endpoints/batch/nonmlflow-deployment.yml에 있습니다.

$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
name: nonmlflowdp
endpoint_name: mybatchedp
model: 
  path: ./mnist/model/
code_configuration:
  code: ./mnist/code/
  scoring_script: digit_identification.py
environment:
  conda_file: ./mnist/environment/conda.yml
  image: mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:latest
compute: azureml:batch-cluster
resources:
  instance_count: 1
max_concurrency_per_instance: 2
mini_batch_size: 10
output_action: append_row
output_file_name: predictions.csv
retry_settings:
  max_retries: 3
  timeout: 30
error_threshold: -1
logging_level: info

다음 표에서는 배포 YAML의 주요 속성에 대해 설명합니다. 전체 일괄 처리 배포 YAML 스키마는 CLI(v2) 일괄 처리 배포 YAML 스키마를 참조하세요.

설명
$schema [선택 사항] YAML 스키마입니다. 위 예제의 스키마를 브라우저에서 보면 일괄 처리 배포 YAML 파일에서 사용할 수 있는 모든 옵션을 볼 수 있습니다.
name 배포의 이름입니다.
endpoint_name 배포를 만들 엔드포인트의 이름입니다.
model 일괄 처리 채점에 사용할 모델입니다. 이 예제에서는 path를 사용하여 인라인으로 모델을 정의합니다. 모델 파일은 자동으로 업로드되고 자동 생성되는 이름 및 버전으로 등록됩니다. 자세한 옵션은 모델 스키마를 따릅니다. 프로덕션 시나리오에 대한 모범 사례로 모델을 별도로 만들고 여기에서 참조해야 합니다. 기존 모델을 참조하려면 azureml:<model-name>:<model-version> 구문을 사용합니다.
code_configuration.code.path 모델을 채점하는 데 필요한 모든 Python 소스 코드가 포함된 디렉터리입니다.
code_configuration.scoring_script 위의 디렉터리에 있는 Python 파일입니다. 이 파일에는 init() 함수와 run() 함수가 있어야 합니다. 비용이 많이 들거나 일반적인 준비에는 init() 함수를 사용합니다(예: 메모리에 모델 로드). init()는 프로세스를 시작할 때 한 번만 호출됩니다. run(mini_batch)를 사용하여 각 항목의 점수를 매길 수 있습니다. mini_batch의 값은 파일 경로 목록입니다. run() 함수는 pandas DataFrame 또는 배열을 반환해야 합니다. 반환되는 각 요소는 mini_batch의 입력 요소의 성공적인 실행 1건을 나타냅니다. 입력과 출력의 상관 관계를 지정하기에 충분한 데이터가 run() 응답에 포함되어 있는지 확인합니다.
environment 모델을 채점하는 환경입니다. 이 예제에서는 conda_fileimage를 사용하여 환경 인라인을 정의합니다. conda_file 종속성은 image 위에 설치됩니다. 환경은 자동으로 생성되는 이름 및 버전으로 자동 등록됩니다. 자세한 옵션은 환경 스키마를 따릅니다. 프로덕션 시나리오에 대한 모범 사례로 환경을 별도로 만들고 여기에서 참조해야 합니다. 기존 환경을 참조하려면 azureml:<environment-name>:<environment-version> 구문을 사용합니다.
compute 일괄 처리 채점을 실행할 컴퓨팅입니다. 이 예제에서는 처음에 만든 batch-cluster를 사용하고 azureml:<compute-name> 구문을 사용하여 참조합니다.
resources.instance_count 각 일괄 처리 채점 작업에 사용할 인스턴스 수입니다.
max_concurrency_per_instance [선택 사항] 인스턴스당 최대 병렬 scoring_script 실행 수입니다.
mini_batch_size [선택 사항] scoring_script에서 한 번의 run() 호출로 처리할 수 있는 파일 수입니다.
output_action [선택 사항] 출력 파일에서 출력을 구성하는 방법입니다. append_rowrun()에서 반환한 모든 출력 결과를 output_file_name이라는 단일 파일에 병합합니다. summary_only는 출력 결과를 병합하지 않고 error_threshold만 계산합니다.
output_file_name [선택 사항] append_rowoutput_action의 일괄 처리 채점 출력 파일 이름입니다.
retry_settings.max_retries [선택 사항] 실패한 scoring_scriptrun()에 대한 최대 시도 횟수입니다.
retry_settings.timeout [선택 사항] scoring_scriptrun()의 미니 일괄 처리 채점에 대한 시간 제한(초)입니다.
error_threshold [선택 사항] 무시해야 하는 입력 파일 채점 오류 수입니다. 전체 입력의 오류 횟수가 이 값을 초과하면 일괄 처리 채점 작업이 중단됩니다. 이 예제에서는 일괄 처리 채점 작업을 종료하지 않고 허용되는 오류 수를 나타내는 -1를 사용합니다.
logging_level [선택 사항] 로그의 세부 정보 표시입니다. 세부 정보 표시가 증가하는 값은 WARNING, INFO 및 DEBUG입니다.

채점 스크립트 이해

앞서 언급했듯이, code_configuration.scoring_script에는 다음 두 함수가 포함되어야 합니다.

  • init(): 비용이 많이 드는 준비 또는 일반적인 준비에 이 함수를 사용합니다. 예를 들어 모델을 글로벌 개체에 로드하는 데 사용합니다. 이 함수는 프로세스를 시작할 때 한 번만 호출됩니다.
  • run(mini_batch): 이 함수는 각 mini_batch에 대해 호출되고 실제 채점을 수행합니다.
    • mini_batch: mini_batch 값은 파일 경로 목록입니다.
    • response: run() 메서드는 pandas 데이터 프레임 또는 배열을 반환해야 합니다. 반환되는 각 출력 요소는 입력 mini_batch에서 입력 요소의 성공적인 실행 1건을 나타냅니다. 입력과 출력 결과의 상관 관계를 지정하는 데 충분한 데이터(예: 각 입력 요소의 식별자)가 run() 응답에 포함되어 있는지 확인합니다.

이 예제에서는 /cli/endpoints/batch/mnist/code/digit_identification.py를 사용합니다. 모델은 배포 중에 생성된 모델 폴더의 경로인 AZUREML_MODEL_DIR에서 init()로 로드됩니다. run(mini_batch)mini_batch의 각 파일을 반복하고 실제 모델 채점을 수행한 후 출력 결과를 반환합니다.

일괄 처리 엔드포인트로 배포하고 일괄 처리 채점 실행

이제 일괄 처리 엔드포인트를 통해 모델을 배포하고 일괄 처리 채점을 실행해 보겠습니다.

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

일괄 처리 엔드포인트를 만드는 가장 간단한 방법은 --name만 제공하는 다음 코드를 실행하는 것입니다.

az ml batch-endpoint create --name $ENDPOINT_NAME

YAML 파일을 사용하여 일괄 처리 엔드포인트를 만들 수도 있습니다. 위의 명령에 --file 매개 변수를 추가하고 YAML 파일 경로를 지정합니다.

일괄 처리 배포 만들기

다음 코드를 실행하여 nonmlflowdp라는 일괄 처리 배포를 일괄 처리 엔드포인트 아래에 만들고 기본 배포로 설정합니다.

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

--set-default 매개 변수는 새로 생성된 배포를 엔드포인트의 기본 배포로 설정합니다. 특히 첫 번째 배포를 만들 때 엔드포인트의 새 기본 배포를 편리하게 만들 수 있는 방법입니다. 프로덕션 시나리오의 모범 사례로, 새 배포를 기본값으로 설정하지 않고 만들고, 확인하고, 나중에 기본 배포를 업데이트하는 것이 좋습니다. 자세한 내용은 새 모델 배포 섹션을 참조하세요.

일괄 처리 엔드포인트 및 배포 세부 정보 확인

show를 사용하여 일괄 처리 엔드포인트 및 배포 세부 정보를 확인합니다.

일괄 처리 배포를 확인하려면 다음 코드를 실행합니다.

az ml batch-deployment show --name nonmlflowdp --endpoint-name $ENDPOINT_NAME

일괄 처리 엔드포인트를 확인하려면 다음 코드를 실행합니다. 새로 만든 배포가 기본 배포로 설정되면 응답의 defaults.deployment_namenonmlflowdp가 표시됩니다.

az ml batch-endpoint show --name $ENDPOINT_NAME

일괄 처리 엔드포인트를 호출하여 일괄 처리 채점 작업 시작

일괄 처리 엔드포인트를 호출하면 일괄 처리 채점 작업이 트리거됩니다. name 작업은 호출 응답에서 반환되며 일괄 처리 채점 진행 상황을 추적하는 데 사용할 수 있습니다. 일괄 처리 채점 작업은 일정 기간 동안 실행됩니다. 전체 입력을 여러 개의 mini_batch로 분할하고 컴퓨팅 클러스터에서 병렬로 처리합니다. 하나의 scoring_scriprun()은 하나의 mini_batch를 가져와서 인스턴스의 프로세스로 처리합니다. 일괄 처리 채점 작업 출력은 클라우드 스토리지, 작업 영역의 기본 Blob Storage 또는 지정한 스토리지에 저장됩니다.

여러 입력 옵션을 통해 일괄 처리 엔드포인트 호출

invoke 엔드포인트에 CLI 또는 REST를 사용할 수 있습니다. REST 환경의 경우 REST에서 일괄 처리 엔드포인트(미리 보기) 사용을 참조하세요.

CLI invoke에서 데이터 입력을 지정하는 세 가지 옵션이 있습니다.

  • 옵션 1: 클라우드의 데이터

    Azure Machine Learning에 등록된 데이터 저장소에서 폴더(접두사 folder: 사용) 또는 파일(접두사 file: 사용)을 지정하려면 --input-path를 사용합니다. 데이터 URI의 구문은 폴더의 경우 folder:azureml://datastores/<datastore-name>/paths/<data-path>/, 특정 파일의 경우 file:azureml://datastores/<datastore-name>/paths/<data-path>/<file-name>입니다. 데이터 URI에 대한 자세한 내용은 Azure Machine Learning 데이터 참조 URI를 참조하세요.

    이 예제에서는 수천 개의 수기 숫자를 포함하는 https://pipelinedata.blob.core.windows.net/sampledata/mnist의 폴더에서 공개적으로 사용 가능한 데이터를 사용합니다. 일괄 처리 채점 작업의 이름은 호출 응답에서 반환됩니다. 이 데이터를 사용하여 일괄 처리 엔드포인트를 호출하려면 다음 코드를 실행합니다. --query name은 호출 응답에서 작업 이름만 반환하기 위해 추가되며, 나중에 일괄 처리 채점 작업 실행 진행률 모니터링일괄 처리 채점 결과 확인에 사용됩니다. 전체 호출 응답을 보려면 --query name -o tsv를 제거합니다. --query 매개 변수에 대한 자세한 내용은 Azure CLI 명령 출력 쿼리를 참조하세요.

    JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input-path folder:https://pipelinedata.blob.core.windows.net/sampledata/mnist --query name -o tsv)
    
  • 옵션 2: 등록된 데이터 세트

    --input-dataset를 사용하여 Azure Machine Learning에 등록된 데이터 세트를 전달합니다. 데이터 세트를 만들려면 az ml dataset create -h에서 지침을 확인하고 데이터 스키마를 따릅니다.

    참고

    이전 버전의 CLI 및 Python SDK를 사용하여 만든 FileDataset도 사용할 수 있습니다. TabularDataset는 지원되지 않습니다.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input-dataset azureml:<dataset-name>:<dataset-version>
    
  • 옵션 3: 로컬로 저장된 데이터

    --input-local-path를 사용하여 로컬에 저장된 데이터 파일을 전달합니다. 데이터 파일은 자동으로 업로드되고 자동 생성되는 이름 및 버전으로 등록됩니다.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input-local-path <local-path>
    

출력 위치 구성 및 설정 덮어쓰기

일괄 처리 채점 결과는 기본적으로 작업 이름(시스템에서 생성된 GUID)으로 이름이 지정된 폴더 내에 있는 작업 영역의 기본 Blob 저장소에 저장됩니다. 일괄 처리 엔드포인트를 호출할 때 채점 출력을 저장할 위치를 구성할 수 있습니다. Azure Machine Learning에 등록된 데이터 저장소에서 folder:를 구성하려면 --output-path를 사용합니다. --output-pathfolder:의 구문은 --input-pathfolder:와 동일합니다. 모든 채점 결과(배포 YAML에 지정된 --set output_file_name=<your-file-name>)를 포함하는 하나의 출력 파일을 원하는 경우 output_action=append_row을 사용하여 새 출력 파일 이름을 구성합니다.

중요

고유한 출력 위치를 사용해야 합니다. 출력 파일이 있으면 일괄 처리 채점 작업이 실패합니다.

컴퓨팅 리소스를 최대한 활용하고 성능을 향상시키기 위해 호출할 때 일부 설정을 덮어쓸 수 있습니다.

  • --instance-count를 사용하여 instance_count를 덮어씁니다. 예를 들어 대량의 데이터 입력에 더 많은 인스턴스를 사용하여 엔드투엔드 일괄 처리 채점의 속도를 높일 수 있습니다.
  • --mini-batch-size를 사용하여 mini_batch_size를 덮어씁니다. 미니 일괄 처리 수는 총 입력 파일 수 및 mini_batch_size에 의해 결정됩니다. mini_batch_size가 작을수록 더 작은 일괄 처리가 생성됩니다. 미니 일괄 처리는 병렬로 실행될 수 있지만 추가 예약 및 호출 오버헤드가 있을 수 있습니다.
  • max_retries, timeouterror_threshold를 비롯한 다른 설정을 덮어쓰려면 --set을 사용합니다. 이러한 설정은 여러 워크로드의 엔드투엔드 일괄 처리 채점 시간에 영향을 줄 수 있습니다.

호출 시 출력 위치를 지정하고 설정을 덮어쓰려면 다음 코드를 실행합니다. 이 예제에서는 작업 영역의 기본 Blob Storage의 엔드포인트와 이름이 동일한 폴더에 출력을 저장하고 임의의 파일 이름을 사용하여 출력 위치를 고유하게 만듭니다. 이 코드는 Unix에서 작동해야 합니다. 고유한 폴더 및 파일 이름으로 바꾸세요.

export OUTPUT_FILE_NAME=predictions_`echo $RANDOM`.csv
JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input-path folder:https://pipelinedata.blob.core.windows.net/sampledata/mnist --output-path folder:azureml://datastores/workspaceblobstore/paths/$ENDPOINT_NAME --set output_file_name=$OUTPUT_FILE_NAME --mini-batch-size 20 --instance-count 5 --query name -o tsv)

일괄 처리 채점 작업 실행 진행률 모니터링

일괄 처리 채점 작업은 일반적으로 전체 입력 집합을 처리하는 데 다소 시간이 소요됩니다.

CLI job show를 사용하여 작업을 볼 수 있습니다. 이전 엔드포인트 호출의 작업 상태를 확인하려면 다음 코드를 실행합니다. 작업 명령에 대해 자세히 알아보려면 az ml job -h를 실행합니다.

STATUS=$(az ml job show -n $JOB_NAME --query status -o tsv)
echo $STATUS
if [[ $STATUS == "Completed" ]]
then
  echo "Job completed"
elif [[ $STATUS ==  "Failed" ]]
then
  echo "Job failed"
  exit 1
else 
  echo "Job status not failed or completed"
  exit 2
fi

일괄 처리 채점 결과 확인

작업이 완료될 때 Azure Storage Explorer에서 채점 결과를 보려면 아래 단계를 따르세요.

  1. Azure Machine Learning 스튜디오에서 일괄 처리 채점 작업을 열려면 다음 코드를 실행합니다. 작업 스튜디오 링크는 invoke의 응답에 interactionEndpoints.Studio.endpoint의 값으로 포함됩니다.

    az ml job show -n $JOB_NAME --web
    
  2. 실행 그래프에서 batchscoring단계를 선택합니다.

  3. 출력 + 로그 탭을 선택한 다음, 데이터 출력 표시를 선택합니다.

  4. 데이터 출력에서 아이콘을 선택하여 Storage Explorer를 엽니다.

Studio screenshot showing view data outputs location

Storage Explorer의 채점 결과는 다음 샘플 페이지와 비슷합니다.

Screenshot of the scoring output

새 모델 배포

일괄 처리 엔드포인트가 있으면 계속해서 모델을 구체화하고 새 배포를 추가할 수 있습니다.

MLflow 모델을 호스팅하는 새 일괄 처리 배포 만들기

기존 일괄 처리 엔드포인트에서 새 일괄 처리 배포를 만들되, 기본 배포로 설정하지 않으려면 다음 코드를 실행합니다.

az ml batch-deployment create --name mlflowdp --endpoint-name $ENDPOINT_NAME --file endpoints/batch/mlflow-deployment.yml

--set-default는 사용되지 않습니다. 일괄 처리 엔드포인트를 다시 show할 경우에는 defaults.deployment_name의 변경 내용이 표시되지 않습니다.

이 예제에서는 MLflow를 사용하여 학습 및 추적된 모델(/cli/endpoints/batch/autolog_nyc_taxi)을 사용 합니다. scoring_scriptenvironment는 모델의 메타데이터를 사용하여 자동 생성될 수 있으며, YAML 파일에는 지정할 필요가 없습니다. MLflow에 대한 자세한 내용은 MLflow 및 Azure Machine Learning을 통해 ML 모델 학습 및 추적(미리 보기)을 참조하세요.

다음은 이 예제에서 MLflow 모델을 배포하는 데 사용하는 YAML 파일로, 최소한의 필수 속성만 포함합니다. 리포지토리의 원본 파일은 /cli/endpoints/batch/mlflow-deployment.yml입니다.

$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
name: mlflowdp
endpoint_name: mybatchedp
model: 
  path: ./autolog_nyc_taxi
compute: azureml:batch-cluster

참고

scoring_scriptenvironment 자동 생성은 Python 함수 모델 버전 및 열 기반 모델 시그니처만 지원합니다.

기본이 아닌 일괄 처리 배포 테스트

기본이 아닌 새 배포를 테스트하려면 다음 코드를 실행합니다. 이 예제에서는 https://pipelinedata.blob.core.windows.net/sampledata/nytaxi/taxi-tip-data.csv에서 공개적으로 사용할 수 있는 csv 파일을 허용하는 다른 모델을 사용합니다.

JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --deployment-name mlflowdp --input-path file:https://pipelinedata.blob.core.windows.net/sampledata/nytaxi/taxi-tip-data.csv --query name -o tsv)

az ml job show -n $JOB_NAME --web

az ml job stream -n $JOB_NAME

STATUS=$(az ml job show -n $JOB_NAME --query status -o tsv)
echo $STATUS
if [[ $STATUS == "Completed" ]]
then
  echo "Job completed"
elif [[ $STATUS ==  "Failed" ]]
then
  echo "Job failed"
  exit 1
else 
  echo "Job status not failed or completed"
  exit 2
fi

--deployment-name을 사용하여 새 배포 이름이 지정됩니다. 이 매개 변수를 사용하면 기본이 아닌 배포를 invoke할 수 있으며, 일괄 처리 엔드포인트의 기본 배포는 업데이트되지 않습니다.

기본 일괄 처리 배포 업데이트

엔드포인트의 기본 일괄 처리 배포를 업데이트하려면 다음 코드를 실행합니다.

az ml batch-endpoint update --name $ENDPOINT_NAME --defaults deployment_name=mlflowdp

이제 일괄 처리 엔드포인트를 다시 show할 경우 defaults.deployment_namemlflowdp로 설정되는 것을 볼 수 있습니다. --deployment-name 매개 변수 없이 직접 일괄 처리 엔드포인트를 invoke할 수 있습니다.

(선택 사항) 배포 업데이트

배포를 업데이트하려면(예: 코드, 모델, 환경 또는 설정 업데이트) YAML 파일을 업데이트한 후 az ml batch-deployment update를 실행합니다. YAML 파일 없이도 --set를 사용하여 업데이트할 수 있습니다. 자세한 내용은 az ml batch-deployment update -h를 확인하세요.

일괄 처리 엔드포인트 및 배포 삭제

이전 일괄 처리 배포를 사용하지 않을 경우 다음 코드를 실행하여 삭제해야 합니다. 삭제를 확인하려면 --yes를 사용합니다.

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

일괄 처리 엔드포인트와 모든 기본 배포를 삭제하려면 다음 코드를 실행합니다. 일괄 처리 채점 작업은 삭제되지 않습니다.

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

다음 단계