Планирование заданий конвейера машинного обучения в версии 2
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)
Из этой статьи вы узнаете, как программно запланировать запуск конвейера в Azure и использовать пользовательский интерфейс расписания для того же. Расписание можно создать на основе истекшего времени. Расписания на основе времени можно использовать для выполнения повседневных задач, таких как переобучение моделей или регулярное выполнение пакетных прогнозов для поддержания их актуальности. Научившись создавать расписания, вы узнаете, как извлекать, обновлять и деактивировать их с помощью интерфейса командной строки, пакета SDK и пользовательского интерфейса студии.
Совет
Если вам нужно запланировать задания с помощью внешнего оркестратора, например Фабрика данных Azure или Microsoft Fabric, рассмотрите возможность развертывания заданий конвейера в конечной точке пакетной службы. Дополнительные сведения о развертывании заданий в конечной точке пакетной службы и использовании пакетных конечных точек из Microsoft Fabric.
Необходимые компоненты
- Для использования машинного обучения Azure необходима подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе. Опробуйте бесплатную или платную версию Машинного обучения Azure уже сегодня.
Установите Azure CLI и расширение
ml
. Выполните инструкции по установке, приведенные в статье Установка, настройка и использование CLI (версия 2).Создайте рабочую область Машинного обучения Azure, если у вас ее нет. Создание рабочего пространства описывается в статье Установка, настройка и использование CLI (версия 2).
Планирование задания конвейера
Для выполнения задания конвейера на повторяющейся основе нужно создать расписание. Schedule
связывает задание и триггер. В качестве триггера можно использовать cron
с выражением, которое описывает ожидание между запусками, либо recurrence
с указанием частоты запуска задания. В обоих случаях необходимо сначала определить задание конвейера: это может быть существующее задание или встроенное определение задания конвейера (см. разделы Создание задания конвейера с помощью CLI и Создание задания конвейера с помощью SDK).
Вы можете запланировать схему YAML задания конвейера в локальном или существующем задании конвейера в рабочей области.
Создание графика
Создание расписания на основе времени с шаблоном повторения
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
$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
(см. подробные сведения в следующем разделе).
Список продолжается ниже.
Примечание.
Следующие свойства, которые необходимо указать для интерфейса командной строки и пакета 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 версии 2 (текущая версия)
$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 для выражения расписания повторений. Одно выражение состоит из пяти полей с разделителями-пробелами:MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
Один подстановочный знак (
*
), который охватывает все значения поля. Таким образом, значение*
в днях означает все дни месяца (их диапазон зависит от месяца и года).В
expression: "15 16 * * 1"
приведенном выше примере означает 16:15 в каждый понедельник.В таблице ниже перечислены допустимые значения для каждого поля.
Поле Диапазон Комментарий MINUTES
0-59 - HOURS
0-23 - DAYS
- Не поддерживается. Значение игнорируется и рассматривается как *
.MONTHS
- Не поддерживается. Значение игнорируется и рассматривается как *
.DAYS-OF-WEEK
0–6 Ноль (0) означает воскресенье. Также принимаются имена дней. Дополнительные сведения об использовании выражения crontab см. на вики-сайте по выражениям Crontab на сайте GitHub.
Внимание
Значения
DAYS
иMONTH
не поддерживаются. Если передать такое значение, оно игнорируется и рассматривается как*
.(Необязательно)
start_time
указывает дату и время начала в часовом поясе расписания.start_time: "2022-05-10T10:15:00-04:00"
означает, что расписание начинается с 10:15:00 2022-05-10 в часовом поясе UTC-4. Если параметрstart_time
опущен, дляstart_time
принимается время создания расписания. Если время запуска указано в прошлом, первое задание будет запущено в следующее время выполнения.(Необязательно)
end_time
описывает дату и время окончания с указанием часового пояса. Если параметрend_time
опущен, расписание будет продолжать запускать задания до тех пор, пока не будет отключено вручную.(Необязательно)
time_zone
указывает часовой пояс выражения. Если это значение отсутствует, по умолчанию задается время в формате UTC. См. приложение для значений часового пояса.
Ограничения:
- В настоящее время Машинное обучение Azure расписание версии 2 не поддерживает триггер на основе событий.
- Можно указать сложный шаблон повторения, содержащий несколько меток времени триггера с помощью пакета SDK Машинное обучение Azure/CLI версии 2, в то время как пользовательский интерфейс отображает только сложный шаблон и не поддерживает редактирование.
- Если вы устанавливаете повторение как 31-й день каждого месяца, в месяцах с менее чем 31 днями расписание не будет запускать задания.
Изменение параметров среды выполнения при определении расписания
При настройке расписания с использованием существующего задания вы можете изменить параметры среды выполнения задания. С помощью этого подхода можно задать несколько расписаний, используя одно задание с разными входными данными.
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
$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
При создании расписания можно изменить перечисленные ниже свойства.
Свойство | Description |
---|---|
параметры | Словарь параметров, используемых при выполнении задания конвейера. |
входные данные | Словарь входных данных, используемый при выполнении задания конвейера. |
выходные данные | Словарь входных данных, используемый при выполнении задания конвейера. |
experiment_name | Имя эксперимента активированного задания. |
Примечание.
Пользователи пользовательского интерфейса Студии могут изменять только входные, выходные данные и параметры среды выполнения при создании расписания. experiment_name
можно изменить только с помощью интерфейса командной строки или пакета SDK.
Выражения, поддерживаемые в расписании
При создании расписания мы поддерживаем указанное ниже выражение, которое разрешается в реальное значение во время выполнения задания.
Expression | Description | Поддерживаемые свойства |
---|---|---|
${{creation_context.trigger_time}} |
Время активации расписания. | Строковые входные данные задания конвейера |
${{name}} |
Имя задания. | Путь вывода данных задания конвейера |
Управление расписанием
Создание расписания
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
После создания схемы YAML расписания вы сможете с помощью указанной ниже команды сформировать расписание через интерфейс командной строки.
# 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 версии 2 (текущая версия)
az ml schedule list
Проверка сведений о расписании
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
az ml schedule show -n simple_cron_job_schedule
Обновление расписания
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
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 версии 2 (текущая версия)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Включение расписания
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Запрос активируемых заданий из расписания
Отображаемое имя заданий, активируемых по расписанию, имеет формат <имя_расписания>-YYYYMMDDThhmmssZ. Например, для расписание под названием "имя-расписания", созданного с запланированным запуском каждые 12 часов начиная с 6:00 1 января 2021 г., отображаемые имена созданных заданий будут следующими:
- имя-расписания-20210101T060000Z
- имя-расписания-20210101T180000Z
- имя-расписания-20210102T060000Z
- имя-расписания-20210102T180000Z и т. д.
Вы также можете использовать запрос JMESPath Azure CLI для запроса заданий, инициированных по имени расписания.
# 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')]"
Примечание.
Более простой способ найти все задания, активированные расписанием, см . в журнале заданий на странице сведений о расписании с помощью пользовательского интерфейса студии.
Удаление расписания
Внимание
Перед удалением расписание необходимо отключить. Удаление — это неустранимое действие. После удаления расписания вы никогда не сможете получить доступ к нему или восстановить его.
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
az ml schedule delete -n simple_cron_job_schedule
Поддержка RBAC (управление доступом на основе ролей)
Так как расписания обычно используются для рабочей среды, чтобы снизить влияние неправильной работы, администраторы рабочих областей могут потребовать ограничить доступ к созданию расписаний и управлению ими в рабочей области.
В настоящее время существует три правила действий, связанных с расписаниями, и вы можете настроить в портал Azure. Дополнительные сведения о том, как управлять доступом к рабочей области Машинное обучение Azure.
Действие | Description | Правило |
---|---|---|
Читать | Получение и перечисление расписаний в рабочей области Машинное обучение | Microsoft.Machine Обучение Services/workspaces/schedules/read |
Write | Создание, обновление, отключение и включение расписаний в рабочей области Машинное обучение | Microsoft.Machine Обучение Services/workspaces/schedules/write |
Удаление | Удаление расписания в рабочей области Машинное обучение | Microsoft.Machine Обучение Services/workspaces/schedules/delete |
Рекомендации по затратам
- Счета выставляются на основе количества расписаний, каждое расписание создаст узел приложений логики Машинное обучение Azure дочерних элементов от имени пользователя (HOBO).
- Стоимость приложений логики будет меняться обратно на подписку Azure пользователя, и вы можете найти расходы на ресурсы HOBO выставляются с помощью того же счетчика, который генерируется исходной RP. Они отображаются в ресурсе узла (рабочая область).
Часто задаваемые вопросы
Почему мои расписания, созданные пакетом SDK, не перечислены в пользовательском интерфейсе?
Пользовательский интерфейс расписания предназначен для расписаний версии 2. Таким образом, расписания версии 1 не будут перечислены или доступны через пользовательский интерфейс.
Однако расписания версии 2 также поддерживают задания конвейера версии 1. Сначала не нужно публиковать конвейер, и вы можете напрямую настроить расписания для задания конвейера.
Почему мои расписания не активируют задание во время установки раньше?
- По умолчанию расписания будут использовать часовой пояс UTC для вычисления времени триггера. Вы можете указать часовой пояс в мастере создания или обновить часовой пояс на странице сведений о расписании.
- Если вы устанавливаете повторение как 31-й день каждого месяца, в месяцах с менее чем 31 днями расписание не будет запускать задания.
- Если вы используете выражения cron, MONTH не поддерживается. Если вы передаете значение, оно будет игнорироваться и рассматриваться как *. Это известное ограничение.
Поддерживаются ли расписания на основе событий?
- Нет, расписание версии 2 не поддерживает расписания на основе событий.
Следующие шаги
- Узнайте больше о схеме YAML для CLI (версии 2).
- Узнайте, как создать задание конвейера с помощью CLI версии 2.
- Узнайте, как создать задание конвейера с помощью SDK версии 2.
- Дополнительные сведения о базовом синтаксисе YAML для CLI (версии 2).
- Дополнительные сведения о конвейерах.
- Дополнительные сведения о компонентах.