Azure Machine Learning 이벤트를 기반으로 애플리케이션, 프로세스 또는 CI/CD 워크플로 트리거
이 문서에서는 Azure Machine Learning 이벤트를 기반으로 이벤트 기반 애플리케이션, 프로세스 또는 CI/CD 워크플로를 설정하는 방법을 알아봅니다. 예를 들어, Azure Event Grid를 사용하여 특정 조건이 검색되면 오류 알림 이메일이나 ML 파이프라인이 실행됩니다.
Azure Machine Learning은 모델 학습, 모델 배포 및 모니터링을 포함하여 기계 학습 프로세스의 전체 수명 주기를 관리합니다. 최신 서버리스 아키텍처를 통해 Event Grid를 사용하여 학습 실행 완료, 모델 등록 및 배포, 데이터 드리프트 감지 등의 Azure Machine Learning 이벤트에 대응할 수 있습니다. 그런 다음, 작업 영역 내에서 실행 상태 변경, 실행 완료, 모델 등록, 모델 배포, 데이터 드리프트 감지 등의 이벤트를 구독하고 사용할 수 있습니다.
이벤트 중심 작업에 Event Grid를 사용하는 시기:
- 실행 실패 및 실행 완료 시 이메일 보내기
- 모델을 등록한 후 Azure 함수 사용
- Azure Machine Learning에서 다양한 엔드포인트로 이벤트 스트리밍
- 드리프트가 감지되면 ML 파이프라인 트리거
Important
이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 미리 보기 버전은 서비스 수준 계약 없이 제공되며 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
필수 조건
Event Grid를 사용하려면 이벤트를 만들 Azure Machine Learning 작업 영역에 대한 기여자 또는 소유자 권한이 있어야 합니다.
이벤트 모델 및 유형
Azure Event Grid는 Azure Machine Learning이나 기타 Azure 서비스 같은 원본에서 이벤트를 읽습니다. 이후 이러한 이벤트는 Azure Event Hubs, Azure Functions, Logic Apps 등의 이벤트 처리기로 전송됩니다. 다음 다이어그램은 Event Grid가 원본과 처리기를 연결하는 방법을 보여주지만, 지원되는 통합의 전체 목록은 아닙니다.
이벤트 원본과 이벤트 처리기에 대한 자세한 내용은 Event Grid란?을 참조하세요.
Azure Machine Learning의 이벤트 유형
Azure Machine Learning은 기계 학습 수명 주기의 다양한 지점에서 이벤트를 제공합니다.
이벤트 유형 | Description |
---|---|
Microsoft.MachineLearningServices.RunCompleted |
기계 학습 실험 실행이 완료될 때 발생합니다. |
Microsoft.MachineLearningServices.ModelRegistered (미리 보기) |
기계 학습 모델이 작업 영역에 등록될 때 발생합니다. |
Microsoft.MachineLearningServices.ModelDeployed (미리 보기) |
하나 이상의 모델이 포함된 유추 서비스 배포가 완료될 때 발생합니다. |
Microsoft.MachineLearningServices.DatasetDriftDetected (미리 보기) |
두 데이터 세트에 대한 데이터 드리프트 감지 작업이 완료될 때 발생합니다. |
Microsoft.MachineLearningServices.RunStatusChanged |
실행 상태가 변경되면 발생합니다. |
이벤트 필터링 및 구독
다음 이벤트는 Azure Event Grid를 통해 게시됩니다. Azure Portal, PowerShell 또는 Azure CLI에서 하나 이상의 이벤트 유형 및 필터링 조건을 지정하여 이벤트를 쉽게 구독할 수 있습니다.
이벤트를 설정할 때 특정 이벤트 데이터에 대한 트리거에만 필터를 적용할 수 있습니다. 다음 예에서는 실행 상태 변경 이벤트의 경우 실행 형식별로 필터링할 수 있습니다. 이벤트는 기준이 충족될 때만 트리거됩니다. 필터링할 수 있는 이벤트 데이터에 대한 자세한 내용은 Azure Machine Learning Event Grid 스키마를 참조하세요.
Azure Machine Learning 이벤트에 대한 구독은 Azure RBAC(Azure 역할 기반 액세스 제어)로 보호됩니다. 작업 영역의 기여자 또는 소유자만이 이벤트 구독을 만들고, 업데이트하고, 삭제할 수 있습니다. 이벤트 구독을 만드는 동안 또는 나중에 이벤트 구독에 필터를 적용할 수 있습니다.
Azure Portal로 이동하여 새 구독 또는 기존 구독을 선택합니다.
왼쪽 탐색 영역에서 이벤트 항목을 선택한 다음, + 이벤트 구독을 선택합니다.
필터 탭을 선택하고 아래로 [고급 필터]까지 스크롤합니다. 키 및 값에 필터링 기준으로 사용할 속성 형식을 입력합니다. 여기에서는 실행 형식이 파이프라인 실행 또는 파이프라인 단계 실행일 때 이벤트 트리거를 볼 수 있습니다.
이벤트 유형으로 필터링: 이벤트 구독이 하나 이상의 Azure Machine Learning 이벤트 유형을 지정할 수 있습니다.
이벤트 제목으로 필터링: Azure Event Grid는 시작 문자 및 끝 문자 일치를 기준으로 하는 제목 필터를 지원하므로 제목이 일치하는 이벤트가 구독자에게 전달됩니다. 기계 학습 이벤트의 제목 형식은 다양합니다.
이벤트 유형 제목 형식 샘플 제목 Microsoft.MachineLearningServices.RunCompleted
experiments/{ExperimentId}/runs/{RunId}
experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
Microsoft.MachineLearningServices.ModelRegistered
(미리 보기)models/{modelName}:{modelVersion}
models/sklearn_regression_model:3
Microsoft.MachineLearningServices.ModelDeployed
(미리 보기)endpoints/{serviceId}
endpoints/my_sklearn_aks
Microsoft.MachineLearningServices.DatasetDriftDetected
(미리 보기)datadrift/{data.DataDriftId}/run/{data.RunId}
datadrift/4e694bf5-712e-4e40-b06a-d2a2755212d4/run/my_driftrun1_1550564444_fbbcdc0f
Microsoft.MachineLearningServices.RunStatusChanged
experiments/{ExperimentId}/runs/{RunId}
experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
고급 필터링: Azure Event Grid는 게시된 이벤트 스키마를 기반으로 하는 고급 필터링도 지원합니다. Azure Machine Learning 이벤트 스키마 세부 정보는 Azure Machine Learning의 Azure Event Grid 이벤트 스키마에서 찾을 수 있습니다.
Microsoft.MachineLearningServices.ModelRegistered
이벤트의 경우 모델의 태그 값을 필터링하는 방법은 다음과 같습니다.--advanced-filter data.ModelTags.key1 StringIn ('value1')
필터를 적용하는 방법에 대한 자세한 내용은 Event Grid에 대한 이벤트 필터링을 참조하세요.
Machine Learning 이벤트 사용
Machine Learning 이벤트를 처리하는 애플리케이션은 다음과 같은 권장 사항을 따라야 합니다.
- 동일한 이벤트 처리기로 이벤트를 라우팅하도록 여러 구독을 구성할 수 있으므로, 이벤트가 특정 원본에서 온 것이라고 가정하지 말고 메시지의 토픽을 확인하여 예상하는 기계 학습 작업 영역에서 온 것인지 확인해야 합니다.
- 마찬가지로, eventType이 본인이 처리하려는 형식인지 확인하고, 수신된 모든 이벤트가 예상하는 형식일 것이라고 간주하지 않도록 합니다.
- 메시지가 잘못된 순서로 오거나 조금 늦게 도착할 수도 있으므로 etag 필드를 사용하여 개체에 대한 정보가 아직 최신 상태인지 여부를 확인합니다. 또한 sequencer 필드를 사용하여 특정 개체에 대한 이벤트 순서를 파악합니다.
- 이해할 수 없는 필드는 무시합니다. 이 지침은 나중에 추가될 수 있는 새로운 기능에 적용하는 데도 도움이 됩니다.
- 실패하거나 취소된 Azure Machine Learning 작업은 이벤트를 트리거하지 않습니다. 예를 들어 모델 배포가 실패하면 Microsoft.MachineLearningServices.ModelDeployed가 트리거되지 않습니다. 애플리케이션을 디자인할 때 이러한 오류 모드를 고려해야 합니다. 언제든지 Azure Machine Learning SDK, CLI 또는 포털을 사용하여 작업 상태를 확인하고 자세한 오류 원인을 파악할 수 있습니다.
Azure Event Grid를 사용하는 고객은 분리형 메시지 처리기를 만들 수 있으며, 이 처리기는 Azure Machine Learning 이벤트를 통해 트리거할 수 있습니다. 다음은 주목할 만한 메시지 처리기 예제입니다.
- Azure Functions
- Azure Logic Apps
- Azure Event Hubs
- Azure Data Factory 파이프라인
- Azure 플랫폼 또는 다른 곳에서 호스트될 수 있는 제네릭 웹후크
Azure Portal에서 설정
Azure Portal을 열고 Azure Machine Learning 작업 영역으로 이동합니다.
왼쪽 막대에서 이벤트를 선택한 다음, 이벤트 구독을 선택합니다.
사용할 이벤트 유형을 선택합니다.
이벤트를 게시할 엔드포인트를 선택합니다. 다음 스크린샷에서는 이벤트 허브를 엔드포인트로 선택합니다.
선택 사항을 확인한 후 만들기를 선택합니다. 구성을 마치면 이벤트가 엔드포인트로 푸시됩니다.
CLI를 사용하여 설정
최신 Azure CLI를 설치해도 되고, Azure 구독의 일부로 제공되는 Azure Cloud Shell를 사용해도 됩니다.
Event Grid 확장을 설치하려면 CLI에서 다음 명령을 사용합니다.
az extension add --name eventgrid
다음 예제에서는 Azure 구독을 선택하고 Azure Machine Learning에 대한 새 이벤트 구독을 만드는 방법을 보여줍니다.
# Select the Azure subscription that contains the workspace
az account set --subscription "<name or ID of the subscription>"
# Subscribe to the machine learning workspace. This example uses EventHub as a destination.
az eventgrid event-subscription create --name {eventGridFilterName} \
--source-resource-id /subscriptions/{subId}/resourceGroups/{RG}/providers/Microsoft.MachineLearningServices/workspaces/{wsName} \
--endpoint-type eventhub \
--endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.EventHub/namespaces/n1/eventhubs/EH1 \
--included-event-types Microsoft.MachineLearningServices.ModelRegistered \
--subject-begins-with "models/mymodelname"
예제
예: 메일 경고 보내기
Azure Logic Apps를 사용하여 모든 이벤트에 대한 이메일을 구성합니다. 조건을 사용하여 사용자 지정하고 수신자를 지정하여 함께 작업하는 팀 간에 협업과 인식을 가능하게 합니다.
Azure Portal에서 Azure Machine Learning 작업 영역으로 이동한 다음, 왼쪽 표시줄에서 이벤트 탭을 선택합니다. 여기서 논리 앱을 선택합니다.
논리 앱 UI에 로그인하고 토픽 유형으로 Machine Learning Service를 선택합니다.
알림을 받을 이벤트를 선택합니다. 예를 들어 다음은 RunCompleted 이벤트에 대한 스크린샷입니다.
다음으로, 이 이벤트를 사용하고 이메일을 검색하는 단계를 추가합니다. 이벤트를 수신하는 데 사용할 수 있는 여러 메일 계정이 있습니다. 이메일 경고를 보낼 시기에 대한 조건을 구성할 수도 있습니다.
이메일 보내기를 선택하고 매개 변수를 입력합니다. 제목에 이벤트 유형 및 토픽을 포함하면 이벤트를 필터링하는 데 도움이 됩니다. 또한 실행의 작업 영역 페이지에 대한 링크를 메시지 본문에 포함할 수 있습니다.
이 작업을 저장하려면 페이지의 왼쪽 모서리에서 다른 이름으로 저장을 선택합니다.
예: 데이터 드리프트 트리거 재학습
Important
이 예제에서는 Azure Machine Learning SDK v1 또는 Azure Machine Learning용 Azure CLI 확장 v1을 사용하는 경우에만 사용할 수 있는 기능(데이터 드리프트)을 사용합니다. 자세한 내용은 Azure Machine Learning CLI & SDK v2란?을 참조하세요.
시간이 지나면 모델의 생산성이 점점 떨어지기 마련이며, 실행되는 컨텍스트에서 더 이상 유용하지 않게 됩니다. 모델을 재학습시킬 시간이 됐는지 확인하는 방법 중 하나는 데이터 드리프트 감지입니다.
이 예제에서는 Azure Logic App과 함께 Event Grid를 사용하여 재학습을 트리거하는 방법을 보여 줍니다. 이 예제에서는 모델의 학습 데이터 세트와 서비스 제공 데이터 세트 간에 데이터 드리프트가 발생할 때 Azure Data Factory 파이프라인을 트리거합니다.
시작하기 전에 다음 작업을 수행합니다.
- 작업 영역에서 데이터 드리프트(SDK/CLI v1)를 감지하도록 데이터 세트 모니터링 설정
- 게시된 Azure Data Factory 파이프라인 만들기
이 예제에서는 간단한 Data Factory 파이프라인을 사용하여 파일을 BLOB 저장소에 복사하고 게시된 Machine Learning 파이프라인을 실행합니다. 이 시나리오에 대한 자세한 내용은 Azure Data Factory에서 Machine Learning 단계를 설정하는 방법을 참조하세요.
논리 앱 만들기부터 시작합니다. Azure Portal로 이동하여 Logic Apps를 검색하고 [만들기]를 선택합니다.
요청된 정보를 입력합니다. 진행하기 쉽게 Azure Data Factory 파이프라인 및 Azure Machine Learning 작업 영역과 동일한 구독 및 리소스 그룹을 사용해도 됩니다.
논리 앱을 만든 후에는 Event Grid 리소스 이벤트가 발생할 때를 선택합니다.
로그인하여 이벤트의 세부 정보를 입력합니다. 리소스 이름을 작업 영역 이름으로 설정합니다. 이벤트 유형을 DatasetDriftDetected로 설정합니다.
새 단계를 추가하고, Azure Data Factory를 검색합니다. 파이프라인 실행 만들기를 선택합니다.
로그인하고, 실행할 게시된 Azure Data Factory 파이프라인을 지정합니다.
페이지 왼쪽 위에 있는 저장 단추를 사용하여 논리 앱을 저장하고 만듭니다. 앱을 보려면 Azure Portal의 작업 영역으로 이동하여 이벤트를 선택합니다.
이제 드리프트가 발생할 때 데이터 팩터리 파이프라인이 트리거됩니다. Azure Machine Learning 스튜디오에서 데이터 드리프트 실행 및 기계 학습 파이프라인에 대한 세부 정보를 봅니다.
다음 단계
Event Grid에 대해 자세히 알아보고 Azure Machine Learning 이벤트를 사용해 보세요.