기계 학습 파이프라인 작업 예약
적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)
이 문서에서는 Azure에서 실행할 파이프라인을 프로그래밍 방식으로 예약하고 일정 UI를 사용하여 동일한 작업을 수행하는 방법을 알아봅니다. 경과된 시간에 따라 예약을 만들 수 있습니다. 시간 기반 예약을 사용하여 모델 재학습, 최신 상태 유지를 위한 정기적인 배치 예측 수행 등 일상 작업을 처리할 수 있습니다. 일정을 만드는 방법을 배운 후 CLI, SDK 및 스튜디오 UI를 통해 일정을 검색, 업데이트 및 비활성화하는 방법을 알아봅니다.
팁
Azure Data Factory 또는 Microsoft Fabric과 같은 외부 오케스트레이터를 사용하여 작업을 예약해야 하는 경우 일괄 처리 엔드포인트에서 파이프라인 작업을 배포하는 것이 좋습니다. 일괄 엔드포인트에서 작업을 배포하는 방법과 Microsoft Fabric에서 일괄 처리 엔드포인트를 사용하는 방법에 대해 자세히 알아보세요.
필수 조건
- Azure Machine Learning을 사용하려면 Azure 구독이 있어야 합니다. Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다. 지금 Azure Machine Learning 평가판 또는 유료 버전을 사용해 보세요.
Azure CLI 및
ml
확장을 설치합니다. CLI(v2) 설치, 설정 및 사용의 설치 지침을 따르세요.아직 없는 경우 Azure Machine Learning 작업 영역을 만듭니다. 작업 영역 생성은 CLI(v2) 설치, 설정 및 사용을 참조하세요.
파이프라인 작업 예약
파이프라인 작업을 반복적으로 실행하려면 일정을 만들어야 합니다. Schedule
은 작업과 트리거를 연결합니다. 트리거는 실행 간 대기 시간을 기술하는 Cron 식을 사용하는 cron
또는 작업을 트리거할 빈도를 사용하도록 지정하는 recurrence
일 수 있습니다. 각각의 경우에 파이프라인 작업을 먼저 만들어야 합니다. 이것은 기존 파이프라인 작업이거나 파이프라인 작업 정의 인라인일 수 있습니다. CLI에서 파이프라인 작업 만들기 및 SDK에서 파이프라인 작업 만들기를 참조하세요.
로컬로 파이프라인 작업 yaml을 예약하거나 작업 영역에서 기존 파이프라인 작업을 예약할 수 있습니다.
일정 만들기
되풀이 패턴이 있는 시간 기반 일정 만들기
적용 대상:Azure CLI ml 확장 v2(현재)
$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_recurrence_job_schedule
display_name: Simple recurrence job schedule
description: a simple hourly recurrence job schedule
trigger:
type: recurrence
frequency: day #can be minute, hour, day, week, month
interval: 1 #every day
schedule:
hours: [4,5,10,11,12]
minutes: [0,30]
start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
time_zone: "Pacific Standard Time" # optional - default will be UTC
create_job: ./simple-pipeline-job.yml
# create_job: azureml:simple-pipeline-job
trigger
에는 다음 속성이 있습니다.
- (필수)
type
은 일정 유형을recurrence
로 지정합니다. 또한cron
일 수 있습니다. 자세한 내용은 다음 섹션을 참조하세요.
목록이 아래에 계속됩니다.
참고 항목
지정해야 하는 다음 속성은 CLI 및 SDK에 적용됩니다.
(필수)
frequency
는 일정이 실행되는 빈도를 설명하는 시간 단위를 지정합니다.minute
,hour
,day
,week
,month
일 수 있습니다.(필수)
interval
은 일정이 다시 실행될 때까지 대기하는 시간 단위 수인 빈도를 기반으로 일정이 실행되는 빈도를 지정합니다.(선택 사항)
schedule
은hours
,minutes
및weekdays
를 포함하는 되풀이 패턴을 정의합니다.frequency
가day
이면 패턴에hours
및minutes
를 지정할 수 있습니다.frequency
가week
및month
이면 패턴에hours
,minutes
및weekdays
를 지정할 수 있습니다.hours
는 0~23 사이의 정수 또는 목록이어야 합니다.minutes
는 0~59 사이의 정수 또는 목록이어야 합니다.weekdays
는monday
~sunday
사이의 문자열 또는 목록일 수 있습니다.schedule
을 생략하면start_time
,frequency
및interval
논리에 따라 작업이 트리거됩니다.
(선택 사항)
start_time
은 표준 시간대가 포함된 시작 날짜 및 시간을 설명합니다.start_time
을 생략하면 start_time이 작업 생성 시간과 동일합니다. 시작 시간이 과거이면 첫 번째 작업은 계산된 다음 런타임에 실행됩니다.(선택 사항)
end_time
은 종료 날짜와 시간을 시간대와 함께 설명합니다.end_time
을 생략하면 일정이 수동으로 비활성화될 때까지 일정이 트리거 작업을 계속합니다.(선택 사항)
time_zone
은 되풀이의 표준 시간대를 지정합니다. 생략하면 기본적으로 UTC입니다. 표준 시간대 값에 대한 자세한 내용은 표준 시간대 값 부록을 참조하세요.
Cron 식을 사용하여 시간 기반 일정 만들기
적용 대상:Azure CLI ml 확장 v2(현재)
$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_cron_job_schedule
display_name: Simple cron job schedule
description: a simple hourly cron job schedule
trigger:
type: cron
expression: "0 * * * *"
start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
time_zone: "Pacific Standard Time" # optional - default will be UTC
# create_job: azureml:simple-pipeline-job
create_job: ./simple-pipeline-job.yml
trigger
섹션은 일정 세부 정보를 정의하고 다음 속성을 포함합니다.
- (필수)
type
은 일정 유형을cron
로 지정합니다.
목록이 아래에 계속됩니다.
(필수)
expression
은 표준 Crontab 식을 사용하여 되풀이 일정을 표현합니다. 단일 식은 공백으로 구분된 5개의 필드로 구성됩니다.MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
필드의 모든 값을 포함하는 단일 와일드카드(
*
)입니다. 따라서 일 수에서*
는 특정 월의 모든 일을 의미합니다(월 및 연도에 따라 다름).위 샘플에서
expression: "15 16 * * 1"
은 매주 월요일 오후 16시 15분을 의미합니다.아래 테이블에서는 각 필드에 유효한 값을 보여줍니다.
필드 범위 Comment(설명) MINUTES
0-59 - HOURS
0-23 - DAYS
- 지원되지 않습니다. 값이 무시되고 *
로 처리됩니다.MONTHS
- 지원되지 않습니다. 값이 무시되고 *
로 처리됩니다.DAYS-OF-WEEK
0-6 0은 일요일을 의미합니다. 일 이름도 수락됩니다. crontab 식 사용 방법에 대한 자세한 내용은 GitHub의 Crontab 식 Wiki를 참조하세요.
Important
DAYS
및MONTH
는 지원되지 않습니다. 값을 전달하면 무시되고*
로 처리됩니다.(선택 사항)
start_time
은 해당 일정의 표준 시간대와 함께 시작 날짜 및 시간을 지정합니다.start_time: "2022-05-10T10:15:00-04:00"
은 UTC-4 표준 시간대 기준 2022년 5월 10일 오전 10시 15분 00초에 일정이 시작됨을 의미합니다.start_time
을 생략할 경우start_time
은 일정 생성 시간과 동일합니다. 시작 시간이 과거이면 첫 번째 작업은 계산된 다음 런타임에 실행됩니다.(선택 사항)
end_time
은 종료 날짜와 시간을 시간대와 함께 설명합니다.end_time
을 생략하면 일정이 수동으로 비활성화될 때까지 일정이 트리거 작업을 계속합니다.(선택 사항)
time_zone
은 식의 표준 시간대를 지정합니다. 생략하면 기본적으로 UTC입니다. 표준 시간대 값에 대한 부록을 참조하세요.
제한 사항:
- 현재 Azure Machine Learning v2 일정은 이벤트 기반 트리거를 지원하지 않습니다.
- Azure Machine Learning SDK/CLI v2를 사용하여 여러 트리거 타임스탬프를 포함하는 복잡한 되풀이 방법을 지정할 수 있지만 UI는 복잡한 패턴만 표시하고 편집을 지원하지 않습니다.
- 되풀이를 매월 31일로 설정하면 31일 미만의 달에서는 일정이 작업을 트리거하지 않습니다.
일정을 정의할 때 런타임 설정 변경
기존 작업을 사용하여 일정을 정의할 때는 작업의 런타임 설정을 변경할 수 있습니다. 이 방법을 사용하면 다른 입력에 동일한 작업을 사용하여 여러 일정을 정의할 수 있습니다.
적용 대상:Azure CLI ml 확장 v2(현재)
$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: cron_with_settings_job_schedule
display_name: Simple cron job schedule
description: a simple hourly cron job schedule
trigger:
type: cron
expression: "0 * * * *"
start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
time_zone: "Pacific Standard Time" # optional - default will be UTC
create_job:
type: pipeline
job: ./simple-pipeline-job.yml
# job: azureml:simple-pipeline-job
# runtime settings
settings:
#default_compute: azureml:cpu-cluster
continue_on_step_failure: true
inputs:
hello_string_top_level_input: ${{name}}
tags:
schedule: cron_with_settings_schedule
일정을 정의할 때는 다음 속성을 변경할 수 있습니다.
속성 | 설명 |
---|---|
설정 | 파이프라인 작업을 실행할 때 사용할 설정의 사전입니다. |
inputs | 파이프라인 작업을 실행할 때 사용할 입력의 사전입니다. |
outputs | 파이프라인 작업을 실행할 때 사용할 입력의 사전입니다. |
experiment_name | 트리거된 작업의 실험 이름입니다. |
참고 항목
Studio UI 사용자는 일정을 만들 때 입력, 출력 및 런타임 설정만 수정할 수 있습니다. experiment_name
은 CLI 또는 SDK를 통해서만 변경할 수 있습니다.
일정에 지원되는 식
일정의 정의할 때는 작업 런타임 중 실제 값으로 확인되는 다음 식이 지원됩니다.
식 | 설명 | 지원되는 속성 |
---|---|---|
${{creation_context.trigger_time}} |
일정이 트리거되는 시간입니다. | 파이프라인 작업의 문자열 유형 입력 |
${{name}} |
작업의 이름입니다.: 작업의 이름입니다. | 파이프라인 작업의 outputs.path |
일정 관리
일정 만들기
적용 대상:Azure CLI ml 확장 v2(현재)
일정 yaml을 만든 후 다음 명령을 사용하여 CLI를 통해 일정을 만들 수 있습니다.
# This action will create related resources for a schedule. It will take dozens of seconds to complete.
az ml schedule create --file cron-schedule.yml --no-wait
작업 영역에 일정 나열
적용 대상:Azure CLI ml 확장 v2(현재)
az ml schedule list
일정 세부 정보 확인
적용 대상:Azure CLI ml 확장 v2(현재)
az ml schedule show -n simple_cron_job_schedule
일정 업데이트
적용 대상:Azure CLI ml 확장 v2(현재)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
참고 항목
태그/설명 이상을 업데이트하려면 az ml schedule create --file update_schedule.yml
을 사용하는 것이 좋습니다.
일정 해제
적용 대상:Azure CLI ml 확장 v2(현재)
az ml schedule disable -n simple_cron_job_schedule --no-wait
일정 사용
적용 대상:Azure CLI ml 확장 v2(현재)
az ml schedule enable -n simple_cron_job_schedule --no-wait
일정에서 트리거된 작업 쿼리
일정으로 트리거되는 작업의 모든 표시 이름에는 <schedule_name>-YYYYMMDDThhmmssZ 표시 이름이 사용됩니다. 예를 들어 이름이 named-schedule인 일정이 2021년 1월 1일 오전 6시부터 시작해서 12시간마다 실행되는 일정으로 생성된 경우, 생성된 작업의 표시 이름은 다음과 같습니다.
- named-schedule-20210101T060000Z
- named-schedule-20210101T180000Z
- named-schedule-20210102T060000Z
- named-schedule-20210102T180000Z 등
또한 Azure CLI JMESPath 경로를 적용하여 일정 이름으로 트리거된 작업을 쿼리할 수 있습니다.
# query triggered jobs from schedule, please replace the simple_cron_job_schedule to your schedule name
az ml job list --query "[?contains(display_name,'simple_cron_schedule')]"
참고 항목
일정에 의해 트리거된 모든 작업을 찾는 더 간단한 방법은 스튜디오 UI를 사용하여 일정 세부 정보 페이지에서 작업 기록을 참조하세요.
일정 삭제
Important
일정을 삭제하려면 사용하지 않도록 설정해야 합니다. 삭제는 복구할 수 없는 작업입니다. 일정이 삭제된 후에는 액세스하거나 복구할 수 없습니다.
적용 대상:Azure CLI ml 확장 v2(현재)
az ml schedule delete -n simple_cron_job_schedule
RBAC(역할 기반 액세스 제어) 지원
일정은 일반적으로 프로덕션에 사용되므로 오작동의 영향을 줄이기 위해 작업 영역 관리자는 작업 영역 내에서 일정을 만들고 관리하는 데 대한 액세스를 제한할 수 있습니다.
현재 일정과 관련된 세 가지 작업 규칙이 있으며 Azure Portal에서 구성할 수 있습니다. Azure Machine Learning 작업 영역에 대한 액세스를 관리하는 방법에 대해 자세히 알아볼 수 있습니다.
작업 | 설명 | 규칙 |
---|---|---|
읽음 | Machine Learning 작업 영역에서 일정 가져오기 및 나열 | Microsoft.MachineLearningServices/workspaces/schedules/read |
쓰기 | Machine Learning 작업 영역에서 일정 만들기, 업데이트, 사용 안 함 및 사용 설정 | Microsoft.MachineLearningServices/workspaces/schedules/write |
삭제 | Machine Learning 작업 영역에서 일정 삭제 | Microsoft.MachineLearningServices/workspaces/schedules/delete |
비용 고려 사항
- 일정은 일정 수에 따라 요금이 청구되며, 각 일정은 사용자를 대신하여(HOBO) 논리 앱 호스트 Azure Machine Learning 하위 항목을 만듭니다.
- 논리 앱의 비용은 사용자의 Azure 구독으로 다시 변경되며, HOBO 리소스 비용은 원래 RP에서 내보낸 것과 동일한 미터를 사용하여 청구된다는 것을 확인할 수 있습니다. 호스트 리소스(작업 영역) 아래에 표시됩니다.
자주 묻는 질문
SDK로 만든 일정이 UI에 표시되지 않는 이유는 무엇인가요?
일정 UI는 v2 일정용입니다. 따라서 v1 일정은 UI를 통해 나열되거나 액세스되지 않습니다.
그러나 v2 일정은 v1 파이프라인 작업도 지원합니다. 먼저 파이프라인을 게시할 필요가 없으며 파이프라인 작업에 대한 일정을 직접 설정할 수 있습니다.
내 일정이 이전에 설정한 시간에 작업을 트리거하지 않는 이유는 무엇인가요?
- 기본적으로 일정은 UTC 시간대를 사용하여 트리거 시간을 계산합니다. 만들기 마법사에서 시간대를 지정하거나 일정 상세 페이지에서 시간대를 업데이트할 수 있습니다.
- 되풀이를 매월 31일로 설정하면 31일 미만의 달에서는 일정이 작업을 트리거하지 않습니다.
- cron 식을 사용하는 경우 MONTH가 지원되지 않습니다. 값을 전달하면 무시되고 *로 처리됩니다. 이것은 알려진 제한 사항입니다.
이벤트 기반 일정이 지원되나요?
- 아니요, V2 일정은 이벤트 기반 일정을 지원하지 않습니다.
다음 단계
- CLI(v2) 일정 YAML 스키마에 대해 자세히 알아봅니다.
- CLI v2에서 파이프라인 작업을 만드는 방법을 알아봅니다.
- SDK v2에서 파이프라인 작업을 만드는 방법을 알아봅니다.
- CLI(v2) 코어 YAML 구문에 대해 자세히 알아봅니다.
- 파이프라인에 대해 자세히 알아봅니다.
- 구성 요소에 대해 자세히 알아봅니다.