기계 학습 파이프라인 작업 예약

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

이 문서에서는 Azure에서 실행할 파이프라인을 프로그래밍 방식으로 예약하고 일정 UI를 사용하여 동일한 작업을 수행하는 방법을 알아봅니다. 경과된 시간에 따라 예약을 만들 수 있습니다. 시간 기반 예약을 사용하여 모델 재학습, 최신 상태 유지를 위한 정기적인 배치 예측 수행 등 일상 작업을 처리할 수 있습니다. 일정을 만드는 방법을 배운 후 CLI, SDK 및 스튜디오 UI를 통해 일정을 검색, 업데이트 및 비활성화하는 방법을 알아봅니다.

Azure Data Factory 또는 Microsoft Fabric과 같은 외부 오케스트레이터를 사용하여 작업을 예약해야 하는 경우 일괄 처리 엔드포인트에서 파이프라인 작업을 배포하는 것이 좋습니다. 일괄 엔드포인트에서 작업을 배포하는 방법Microsoft Fabric에서 일괄 처리 엔드포인트를 사용하는 방법에 대해 자세히 알아보세요.

필수 조건

파이프라인 작업 예약

파이프라인 작업을 반복적으로 실행하려면 일정을 만들어야 합니다. 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은 일정이 다시 실행될 때까지 대기하는 시간 단위 수인 빈도를 기반으로 일정이 실행되는 빈도를 지정합니다.

  • (선택 사항) schedulehours, minutesweekdays를 포함하는 되풀이 패턴을 정의합니다.

    • frequencyday이면 패턴에 hoursminutes를 지정할 수 있습니다.
    • frequencyweekmonth이면 패턴에 hours, minutesweekdays를 지정할 수 있습니다.
    • hours는 0~23 사이의 정수 또는 목록이어야 합니다.
    • minutes는 0~59 사이의 정수 또는 목록이어야 합니다.
    • weekdaysmonday~sunday 사이의 문자열 또는 목록일 수 있습니다.
    • schedule을 생략하면 start_time, frequencyinterval 논리에 따라 작업이 트리거됩니다.
  • (선택 사항) 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

    DAYSMONTH는 지원되지 않습니다. 값을 전달하면 무시되고 *로 처리됩니다.

  • (선택 사항) 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 Machine Learning 스튜디오의 작업 탭 스크린샷

또한 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 일정은 이벤트 기반 일정을 지원하지 않습니다.

다음 단계