일괄 처리 엔드포인트를 사용하여 파이프라인을 배포하는 방법

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

Azure Machine Learning에서 파이프라인 구성 요소를 편리하게 운용할 수 있는 방법을 제공하여 일괄 처리 엔드포인트 아래에 파이프라인 구성 요소를 배포할 수 있습니다. 이 문서에서는 간단한 파이프라인이 포함된 일괄 처리 배포를 만드는 방법을 알아봅니다. 다음에 대해 알아봅니다.

  • 파이프라인 구성 요소 만들기 및 등록
  • 일괄 처리 엔드포인트 만들기 및 파이프라인 구성 요소 배포
  • 배포 테스트

이 예에 대해

이 예에서는 "hello world!"를 출력하는 간단한 명령 작업으로 구성된 파이프라인 구성 요소를 배포할 예정입니다. 이 구성 요소는 입력이나 출력이 필요하지 않으며 가장 간단한 파이프라인 배포 시나리오입니다.

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

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

이 예의 파일은 다음 위치에 있습니다.

cd endpoints/batch/deploy-pipelines/hello-batch

Jupyter Notebooks에서 따라 하기

복제된 리포지토리에서 sdk-deploy-and-test.ipynb Notebook을 열어 이 예의 Python SDK 버전을 따라갈 수 있습니다.

필수 조건

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

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

  • Azure Machine Learning 작업 영역 작업 영역이 없으면 Azure Machine Learning 작업 영역 관리 문서의 단계에서 새로 만듭니다.

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

    • 일괄 처리 엔드포인트 및 배포 만들기 또는 관리: Microsoft.MachineLearningServices/workspaces/batchEndpoints/*를 허용하는 소유자, 기여자 또는 사용자 지정 역할을 사용합니다.

    • 작업 영역 리소스 그룹에서 ARM 배포 만들기: 작업 영역이 배포된 리소스 그룹에서 Microsoft.Resources/deployments/write를 허용하는 소유자, 기여자 또는 사용자 지정 역할을 사용합니다.

  • Azure Machine Learning을 사용하려면 다음 소프트웨어를 설치해야 합니다.

    Azure CLImlAzure Machine Learning용 확장.

    az extension add -n ml
    

    참고 항목

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

작업 영역에 연결

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

다음 코드에서 구독 ID, 작업 영역, 위치 및 리소스 그룹에 대한 값을 전달합니다.

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

파이프라인 구성 요소 만들기

일괄 처리 엔드포인트는 모델 또는 파이프라인 구성 요소를 배포할 수 있습니다. 파이프라인 구성 요소는 재사용이 가능하며 공유 레지스트리를 사용하여 이러한 구성 요소를 한 작업 영역에서 다른 작업 영역으로 이동함으로써 MLOps 실행을 간소화할 수 있습니다.

이 예의 파이프라인 구성 요소에는 로그에 "hello world" 메시지만 인쇄하는 단일 단계가 포함되어 있습니다. 입력이나 출력이 필요하지 않습니다.

hello-component/hello.yml 파일에는 파이프라인 구성 요소에 대한 구성이 포함되어 있습니다.

hello-component/hello.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
  main_job:
    type: command
    component:
      code: src
      environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
      command: >-
        python hello.py

구성 요소를 등록합니다.

az ml component create -f hello-component/hello.yml

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

  1. 엔드포인트에 사용할 이름을 입력합니다. 일괄 처리 엔드포인트의 이름은 호출 URI를 구성하는 데 사용되므로 각 지역에서 고유해야 합니다. 고유성을 보장하려면 다음 코드에 지정된 이름에 후행 문자를 추가합니다.

    ENDPOINT_NAME="hello-batch"
    
  2. 엔드포인트 구성:

    endpoint.yml 파일에는 엔드포인트 구성이 포함되어 있습니다.

    endpoint.yml

    $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
    name: hello-batch
    description: A hello world endpoint for component deployments.
    auth_mode: aad_token
    
  3. 엔드포인트 만들기:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. 엔드포인트 URI를 쿼리합니다.

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

파이프라인 구성 요소 배포

파이프라인 구성 요소를 배포하려면 일괄 처리 배포를 만들어야 합니다. 배포는 실제 작업을 수행하는 자산을 호스팅하는 데 필요한 리소스 집합입니다.

  1. 컴퓨팅 클러스터를 만듭니다. 일괄 처리 엔드포인트 및 배포는 컴퓨팅 클러스터에서 실행됩니다. 작업 영역에 이미 존재하는 모든 Azure Machine Learning 컴퓨팅 클러스터에서 실행할 수 있습니다. 따라서 여러 일괄 처리 배포가 동일한 컴퓨팅 인프라를 공유할 수 있습니다. 이 예에서는 batch-cluster라는 Azure Machine Learning 컴퓨팅 클러스터에 대해 작업합니다. 컴퓨팅이 작업 영역에 있는지 확인하고, 없으면 만들겠습니다.

    az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
    
  2. 배포 구성:

    deployment.yml 파일에는 배포 구성이 포함되어 있습니다. 추가 속성은 전체 일괄 처리 엔드포인트 YAML 스키마를 확인합니다.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-dpl
    endpoint_name: hello-pipeline-batch
    type: pipeline
    component: azureml:hello_batch@latest
    settings:
        default_compute: batch-cluster
    
  3. 배포 만들기:

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

    az ml batch-deployment create --endpoint $ENDPOINT_NAME -f deployment.yml --set-default
    

    이 새 배포가 이제 기본값임을 나타내기 위해 --set-default 플래그를 사용하는 것에 주목합니다.

  4. 배포를 사용할 준비가 되었습니다.

배포 테스트

배포가 만들어지면 작업을 수신할 준비가 된 것입니다. 다음과 같이 기본 배포를 호출할 수 있습니다.

JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)

이 예에서 파이프라인에는 입력이나 출력이 없습니다. 그러나 파이프라인 구성 요소에 일부가 필요한 경우 호출 시 표시될 수 있습니다. 입출력을 표시하는 방법에 대해 알아보려면 일괄 처리 엔드포인트에 대한 작업 및 입력 데이터 만들기를 참조하거나 전처리를 통해 일괄 처리 채점을 수행하기 위해 파이프라인을 배포하는 방법(미리 보기) 자습서를 참조하세요.

다음을 사용하여 쇼 진행 상황을 모니터링하고 로그를 스트리밍할 수 있습니다.

az ml job stream -n $JOB_NAME

리소스 정리

완료되면 작업 영역에서 연결된 리소스를 삭제합니다.

다음 코드를 실행하여 일괄 처리 엔드포인트와 기본 배포를 삭제합니다. 삭제를 확인하려면 --yes를 사용합니다.

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

(선택 사항) 이후 배포에서 컴퓨팅 클러스터를 재사용할 계획이 아닌 경우 컴퓨팅을 삭제합니다.

az ml compute delete -n batch-cluster

다음 단계