다음을 통해 공유


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

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

이 문서에서는 Azure에서 실행되도록 기계 학습 파이프라인을 예약하는 방법을 알아봅니다. 모델을 재학습시키거나 경과된 시간에 따라 일괄 처리 예측을 정기적으로 업데이트하는 등의 일상적인 작업을 예약할 수 있습니다.

이 문서에서는 Azure Machine Learning CLI, Python용 Azure Machine Learning SDK v2 또는 Azure Machine Learning 스튜디오 UI를 사용하여 일정을 만들고, 검색하고, 업데이트하고, 비활성화하는 방법을 보여 줍니다.

Azure Data Factory 또는 Microsoft Fabric과 같은 외부 오케스트레이터를 사용하여 작업을 예약하려면 일괄 처리 엔드포인트에서 파이프라인 작업을 배포하는 것이 좋습니다. 자세한 내용은 일괄 처리 엔드포인트에 기존 파이프라인 작업 배포일괄 처리 엔드포인트를 사용하여 Fabric에서 Azure Machine Learning 모델 실행(미리 보기)을 참조하세요.

필수 구성 요소

제한 사항

  • Azure Machine Learning v2 일정은 이벤트 기반 트리거를 지원하지 않습니다.
  • CLI 및 SDK v2 일정은 여러 트리거 타임스탬프를 포함하는 복잡한 되풀이 패턴 지정을 지원합니다. 스튜디오 UI는 복잡한 패턴을 표시하지만 편집을 지원하지 않습니다.
  • 스튜디오 UI는 v2 일정만 지원하며 게시된 파이프라인 또는 파이프라인 엔드포인트를 기준으로 하는 v1 일정을 나열하거나 액세스할 수 없습니다. 게시되지 않은 파이프라인에 대한 일정을 만들 수 있습니다.
  • 되풀이가 매월 31일 또는 30일로 설정된 경우 일정은 일 수가 더 적은 달에 작업을 트리거하지 않습니다.
  • DAYSMONTHS 값은 cron 일정 식에서 지원되지 않습니다. 이러한 매개 변수에 대해 전달된 값은 무시되고 *로 처리됩니다.

일정 만들기

성능과 출력이 만족스러운 파이프라인 작업이 있는 경우 정기적으로 이 작업을 자동으로 트리거하도록 일정을 설정할 수 있습니다. 이렇게 하려면 작업을 트리거와 연결하는 일정을 만들어야 합니다. 트리거는 작업을 실행할 간격과 빈도를 지정하는 recurrence 패턴 또는 cron 식일 수 있습니다.

두 경우 모두 먼저 인라인으로 또는 기존 파이프라인 작업을 지정하여 파이프라인 작업을 정의해야 합니다. YAML에서 파이프라인을 정의하고 CLI에서 실행하거나, Python에서 인라인으로 파이프라인을 작성하거나, Azure Machine Learning 스튜디오에서 파이프라인을 작성할 수 있습니다. 로컬로 또는 작업 영역의 기존 작업에서 파이프라인 작업을 만들 수 있습니다.

스튜디오 UI, SDK v2 또는 CLI v2를 사용하여 v2 또는 v1 파이프라인 작업에 대한 v2 일정을 만들 수 있습니다. 파이프라인 작업에 대한 일정을 설정하기 위해 먼저 기존 파이프라인을 게시할 필요가 없습니다.

이 문서의 코드 예제는 Azure Machine Learning CLI 2.0에서 일정 작업에서 가져온 것입니다.

되풀이 패턴이 있는 시간 기반 일정 정의

다음 YAML 코드는 파이프라인 작업에 대한 되풀이 일정을 정의합니다. 필수 type 매개 변수는 trigger 형식이 recurrence임을 지정합니다.

$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

다음 일정 매개 변수를 제공해야 하거나 제공할 수 있습니다.

매개 변수

  • frequency (필수)는 일정이 실행되는 시간 단위입니다. minutes, hours, days, weeks 또는 months일 수 있습니다.
  • interval (필수)는 일정 되풀이 사이의 시간 단위 수입니다.
  • schedule(선택 사항)은 hours, minutesweekdays를 포함할 수 있는 되풀이 패턴을 정의합니다. 생략할 경우 작업이 start_time, frequencyinterval의 논리에 따라 트리거됩니다.
    • frequencyday이면 패턴에 hoursminutes를 지정할 수 있습니다.
    • frequencyweek 또는 month이면 패턴에 hours, minutesweekdays를 지정할 수 있습니다.
      • hours는 0~23 사이의 정수 또는 목록입니다.
      • minutes는 0~59 사이의 정수 또는 목록입니다.
      • weekdaysmonday~sunday 사이의 문자열 또는 목록입니다.
  • start_time(선택 사항)은 표준 시간대가 포함된 시작 날짜와 시간입니다. 생략할 경우 기본적으로 일정 생성 시간과 동일합니다. 시작 시간이 과거인 경우 첫 번째 작업은 다음으로 계산된 런타임에 실행됩니다.
  • end_time(선택 사항)은 표준 시간대가 포함된 종료 날짜와 시간입니다. 생략할 경우 수동으로 사용하지 않도록 설정할 때까지 일정은 활성 상태로 유지됩니다.
  • time_zone(선택 사항)은 되풀이 일정의 표준 시간대를 지정합니다. 생략할 경우 기본값은 UTC(협정 세계시)입니다. 표준 시간대 값에 대한 자세한 내용은 표준 시간대 값 부록을 참조하세요.

일정 YAML을 만든 후 다음 명령을 사용하여 CLI를 통해 일정을 만듭니다.

# This action creates related resources for a schedule. It takes dozens of seconds to complete.
az ml schedule create --file simple-pipeline-job.yml --no-wait

Cron 식을 사용하여 시간 기반 일정 정의

Cron 식은 일정에 대해 유연하고 사용자 지정된 되풀이 패턴을 지정할 수 있습니다. 표준 crontab 식은 공백으로 구분된 필드 MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK로 구성됩니다. 와일드카드 *는 필드의 모든 값을 의미합니다.

Azure Machine Language 일정 cron 식에서 다음이 적용됩니다.

  • MINUTES는 0~59 사이의 정수 또는 목록입니다.
  • HOURS는 0~23 사이의 정수 또는 목록입니다.
  • DAYS 값은 지원되지 않으며 항상 *로 처리됩니다. DAYS* 값은 월 및 연도에 따라 다른 특정 월의 모든 일을 의미합니다.
  • MONTHS 값은 지원되지 않으며 항상 *로 처리됩니다.
  • DAYS-OF-WEEK는 0~6 사이의 정수 또는 목록으로 0은 일요일입니다. 요일 이름도 수락됩니다.

예를 들어 식 15 16 * * 1은 매주 월요일 UTC 오후 4시 15분을 의미합니다. crontab 식에 대한 자세한 내용을 보려면 GitHub의 Crontab 식 Wiki를 참조하세요.

다음 YAML 코드는 파이프라인 작업에 대한 되풀이 일정을 정의합니다. 필수 type 매개 변수는 trigger 형식이 cron임을 지정합니다.

$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

다음 일정 매개 변수를 제공해야 하거나 제공할 수 있습니다.

매개 변수

  • expression (필수)은 표준 Crontab 식을 사용하여 되풀이 일정을 표현합니다.
  • start_time(선택 사항)은 표준 시간대가 포함된 일정 시작 날짜 및 시간입니다. 예를 들어, start_time: "2022-05-10T10:15:00-04:00"은 일정이 UTC-4 표준 시간대에서 2022년 5월 10일 오전 10:15:00에 시작됨을 의미합니다. 생략할 경우 기본적으로 일정 생성 시간과 동일합니다. 시작 시간이 과거인 경우 첫 번째 작업은 다음으로 계산된 런타임에 실행됩니다.
  • end_time(선택 사항)은 표준 시간대가 포함된 종료 날짜와 시간입니다. 생략할 경우 수동으로 사용하지 않도록 설정할 때까지 일정은 활성 상태로 유지됩니다.
  • time_zone(선택 사항)은 되풀이 일정의 표준 시간대를 지정합니다. 생략할 경우 기본값은 UTC입니다.

일정 YAML을 만든 후 다음 명령을 사용하여 CLI를 통해 일정을 만듭니다.

# This action creates related resources for a schedule. It takes dozens of seconds to complete.
az ml schedule create --file simple-pipeline-job.yml --no-wait

일정을 정의할 때 작업 설정 변경

경우에 따라 일정에 의해 트리거된 작업을 테스트 작업과는 다르게 구성하려고 할 수 있습니다. 기존 작업을 사용하여 일정을 정의할 때는 작업 설정을 변경할 수 있습니다. 이 방법을 사용하면 다른 입력의 동일한 작업을 사용하여 여러 일정을 정의할 수 있습니다.

일정을 정의할 경우 파이프라인 작업을 실행할 때 사용할 settings, inputs 또는 outputs를 변경할 수 있습니다. 트리거된 작업의 experiment_name을 변경할 수도 있습니다.

다음 일정 정의는 기존 작업의 설정을 변경합니다.

$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

일정에 지원되는 식 사용

일정을 정의할 때 다음 매크로 식을 사용하여 작업 런타임 중에 실제 값으로 확인되는 동적 매개 변수 값을 정의할 수 있습니다.

설명 지원되는 속성
${{name}} 작업의 이름 파이프라인 작업의 outputs 경로
${{creation_context.trigger_time}} 작업의 트리거 시간 파이프라인 작업의 문자열 형식 inputs

일정 관리

작업 영역에서 일정을 나열, 보기, 업데이트, 사용하지 않도록 설정, 사용하도록 설정 및 삭제할 수 있습니다.

일정 나열

az ml schedule list

일정 세부 정보 보기

az ml schedule show -n simple_cron_job_schedule

일정 업데이트

az ml schedule update -n simple_cron_job_schedule  --set description="new description" --no-wait

참고 항목

태그 및 설명 이상을 업데이트하려면 az ml schedule create --file update_schedule.yml을 사용하는 것이 좋습니다.

일정 해제

az ml schedule disable -n simple_cron_job_schedule --no-wait

일정 사용

az ml schedule enable -n simple_cron_job_schedule --no-wait

일정 삭제

Important

먼저 일정을 삭제하려면 일정을 사용하지 않도록 설정해야 합니다. 삭제는 영구적이며 되돌릴 수 없습니다.

az ml schedule delete -n simple_cron_job_schedule

일정에서 트리거된 작업 쿼리

특정 일정에 의해 트리거되는 작업은 표시 이름이 모두 <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')]"

스튜디오의 일정 세부 정보 페이지에 있는 작업 기록 탭은 일정에 의해 트리거된 모든 작업을 찾는 간단한 방법을 제공합니다.


RBAC(역할 기반 액세스 제어) 지원

일정은 프로덕션에 사용되므로 잘못 작동할 가능성과 그에 따른 영향을 줄이는 것이 중요합니다. 작업 영역 관리자는 작업 영역에서 만들기 및 관리를 예약하도록 액세스를 제한할 수 있습니다.

관리자는 Azure Portal에서 일정과 관련된 다음 작업 규칙을 구성할 수 있습니다. 자세한 내용은 Azure Machine Learning 작업 영역 액세스 관리를 참조하세요.

작업 설명 규칙
읽기 일정 가져오기 및 나열 Microsoft.MachineLearningServices/workspaces/schedules/read
쓰기 일정 만들기, 업데이트, 사용하지 않도록 설정 및 사용하도록 설정 Microsoft.MachineLearningServices/workspaces/schedules/write
삭제 일정 삭제 Microsoft.MachineLearningServices/workspaces/schedules/delete

비용 고려 사항

일정은 일정 수에 따라 요금이 청구됩니다. 각 일정은 Azure Machine Learning에서 사용자를 대신하여 호스트하는 논리 앱을 만듭니다(HOBO).

논리 앱은 사용자의 Azure 구독에 다시 요금을 청구합니다. HOBO 리소스 비용은 원래 리소스 공급자가 내보낸 것과 동일한 미터 단위를 사용하여 청구됩니다. 요금은 Azure Machine Learning 작업 영역인 호스트 리소스 아래에 표시됩니다.