기존 파이프라인 작업을 일괄 처리 엔드포인트에 배포
적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)
일괄 처리 엔드포인트를 사용하면 파이프라인 구성 요소를 배포할 수 있어 Azure Machine Learning에서 파이프라인을 운영하는 편리한 방법을 제공합니다. 일괄 처리 엔드포인트는 배포를 위해 파이프라인 구성 요소를 허용합니다. 그러나 성공적으로 실행되는 파이프라인 작업이 이미 있는 경우 Azure Machine Learning은 해당 작업을 일괄 처리 엔드포인트에 대한 입력으로 수락하고 파이프라인 구성 요소를 자동으로 만들 수 있습니다. 이 문서에서는 기존 파이프라인 작업을 일괄 처리 배포를 위한 입력으로 사용하는 방법을 알아봅니다.
다음에 대해 알아봅니다.
- 배포하려는 파이프라인 작업 실행 및 만들기
- 기존 작업에서 일괄 처리 배포 만들기
- 배포 테스트
이 예에 대해
이 예에서는 "hello world!"를 인쇄하는 간단한 명령 작업으로 구성된 파이프라인을 배포할 예정입니다. 배포 전에 파이프라인 구성 요소를 등록하는 대신 배포에 사용할 기존 파이프라인 작업을 나타냅니다. 그런 다음 Azure Machine Learning은 파이프라인 구성 요소를 자동으로 만들고 이를 일괄 처리 엔드포인트 파이프라인 구성 요소 배포로 배포합니다.
이 문서의 예는 azureml-examples 리포지토리에 포함된 코드 샘플을 기반으로 합니다. YAML 및 기타 파일을 복사/붙여넣기하지 않고 로컬로 명령을 실행하려면 먼저 리포지토리를 복제한 후 디렉터리를 폴더로 변경합니다.
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
이 예의 파일은 다음 위치에 있습니다.
cd endpoints/batch/deploy-pipelines/hello-batch
필수 구성 요소
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 CLI 및
ml
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>
배포하려는 파이프라인 작업을 실행합니다.
이 섹션에서는 파이프라인 작업을 실행하는 것으로 시작합니다.
다음 pipeline-job.yml
파일에는 파이프라인 작업에 대한 구성이 포함되어 있습니다.
pipeline-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.
compute: batch-cluster
component: hello-component/hello.yml
파이프라인 작업을 만듭니다.
일괄 처리 엔드포인트 만들기
파이프라인 작업을 배포하기 전에 배포를 호스팅할 일괄 처리 엔드포인트를 배포해야 합니다.
엔드포인트에 사용할 이름을 입력합니다. 일괄 처리 엔드포인트의 이름은 호출 URI를 구성하는 데 사용되므로 각 지역에서 고유해야 합니다. 고유성을 보장하려면 다음 코드에 지정된 이름에 후행 문자를 추가합니다.
엔드포인트 구성:
엔드포인트 만들기:
엔드포인트 URI를 쿼리합니다.
파이프라인 작업 배포
파이프라인 구성 요소를 배포하려면 기존 작업에서 일괄 처리 배포를 만들어야 합니다.
배포하려는 작업의 이름을 Azure Machine Learning에 알려야 합니다. 이 경우 해당 작업은 다음 변수에 표시됩니다.
배포를 구성합니다.
deployment-from-job.yml
파일에는 배포 구성이 포함되어 있습니다. 이 배포가 파이프라인 작업에서 만들어졌음을 나타내기 위해component
대신job_definition
키를 어떻게 사용하는지 확인합니다.deployment-from-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-from-job endpoint_name: hello-pipeline-batch type: pipeline job_definition: azureml:job_name_placeholder settings: continue_on_step_failure: false default_compute: batch-cluster
팁
이 구성에서는
batch-cluster
라는 컴퓨팅 클러스터가 있다고 가정합니다. 이 값을 클러스터 이름으로 바꿀 수 있습니다.배포 만들기:
다음 코드를 실행하여 일괄 처리 배포를 일괄 처리 엔드포인트 아래에 만들고 기본 배포로 설정합니다.
az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
팁
--set job_definition=azureml:$JOB_NAME
의 사용에 주목합니다. 작업 이름은 고유하므로 여기에서는 작업 영역에서 작업을 실행할 때 작업 이름을 변경하기 위해--set
명령을 사용합니다.배포를 사용할 준비가 되었습니다.
배포 테스트
배포가 만들어지면 작업을 수신할 준비가 된 것입니다. 다음과 같이 기본 배포를 호출할 수 있습니다.
다음을 사용하여 쇼 진행 상황을 모니터링하고 로그를 스트리밍할 수 있습니다.
리소스 정리
완료되면 작업 영역에서 연결된 리소스를 삭제합니다.
다음 코드를 실행하여 일괄 처리 엔드포인트와 기본 배포를 삭제합니다. 삭제를 확인하려면 --yes
를 사용합니다.
az ml batch-endpoint delete -n $ENDPOINT_NAME --yes