Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение CLI Azure для машинного обучения версии 2 (текущая)
Python SDK azure-ai-ml версии 2 (текущая)
В этой статье вы узнаете, как запланировать конвейеры машинного обучения для запуска в Azure. Вы можете запланировать обычные задачи, такие как переобучение моделей или регулярно обновлять пакетные прогнозы на основе истекшего времени.
В этой статье показано, как создавать, извлекать, обновлять и деактивировать расписания с помощью интерфейса командной строки Машинное обучение Azure, пакета SDK Машинное обучение Azure версии 2 для Python или пользовательского интерфейса Студия машинного обучения Azure.
Совет
Чтобы запланировать задания с помощью внешнего оркестратора, например Фабрика данных Azure или Microsoft Fabric, рассмотрите возможность развертывания заданий конвейера в конечной точке пакетной обработки. Для получения дополнительной информации см. Развертывание существующих заданий конвейера в конечных точках пакетной службы и Запуск моделей Машинного обучения Azure из Fabric с помощью конечных точек пакетной службы (предварительная версия).
Предварительные требования
- Подписка Azure. Если у вас его нет, создайте бесплатную учетную запись перед началом.
- Рабочая область Машинного обучения Azure. Сведения о создании рабочей области см. в разделе "Создание ресурсов рабочей области".
- Понимание конвейеров в Azure Machine Learning. Дополнительные сведения см. в статье "Что такое конвейеры машинного обучения".
- Интерфейс командной строки Azure и расширение
ml
, установленные в соответствии с инструкциями из раздела «Установка, настройка и использование интерфейса командной строки (версия 2)». - Знание создания YAML-конвейеров в Azure Machine Learning. Дополнительные сведения см. в статье Создание и запуск конвейеров машинного обучения с использованием компонентов в Azure Machine Learning CLI.
Ограничения
- Планировщики Azure Machine Learning v2 не поддерживают триггеры на основе событий.
- Cli и SDK версии 2 поддерживают указание сложных шаблонов повторения, содержащих несколько меток времени триггера. Пользовательский интерфейс студии отображает сложные шаблоны, но не поддерживает их редактирование.
- Пользовательский интерфейс студии поддерживает только расписания версии 2 и не может содержать список или доступ к расписаниям версии 1, основанным на опубликованных конвейерах или конечных точках конвейера. Можно создать расписание для неопубликованного конвейера.
- Если повторение определено как 31-й или 30-й день каждого месяца, расписание не запускает задания в месяцах с меньшим количеством дней.
-
DAYS
иMONTHS
значения не поддерживаются в выражениях расписания cron. Значения, передаваемые для этих параметров, игнорируются и обрабатываются как*
. - Даже после назначения управляемого удостоверения расписанию автор должен сохранить разрешения на выполнение задания, чтобы расписание функционировало.
Создание графика
При наличии конвейерной задачи с удовлетворительными результатами и производительностью можно настроить расписание для автоматического запуска задачи регулярно. Для этого необходимо создать расписание, которое связывает задание с триггером. Триггер может быть шаблоном recurrence
или cron
выражением, указывающим интервал и частоту выполнения задания.
В обоих случаях сначала необходимо определить задание конвейера, либо встроенно, либо указав существующее задание конвейера. Вы можете определить конвейеры в YAML и запустить их из интерфейса командной строки, создавать конвейеры напрямую в Python или компоновать их в Azure Machine Learning Studio. Вы можете создавать задания конвейера локально или из существующих заданий в рабочей области.
Вы можете создавать расписания версии 2 для заданий конвейера версии 2 или версии 1 с помощью пользовательского интерфейса студии, пакета SDK версии 2 или CLI версии 2. Вам не нужно сначала публиковать существующие конвейеры, чтобы настроить расписания для заданий для конвейеров.
Примеры кода, приведенные в этой статье, взяты из работы с планировщиком в 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
иminutes
weekdays
. Если это пропущено, задания активируются в соответствии с логикойstart_time
,frequency
иinterval
.- Когда
frequency
иday
шаблон может указыватьhours
иminutes
. - Когда
frequency
этоweek
илиmonth
, шаблон может указатьhours
,minutes
иweekdays
.-
hours
— целое число или список от 0 до 23. -
minutes
— целое число или список от 0 до 59. -
weekdays
— строка или список изmonday
sunday
.
-
- Когда
-
start_time
(необязательно) — это дата и время начала с часовой поясом. Если опущено, значение по умолчанию равно времени создания расписания. Если время начала в прошлом, первое задание запускается в следующий вычисленный момент времени запуска. -
end_time
(необязательно) — это дата окончания и время с часовой поясом. Если его не указать, расписание остается активным до тех пор, пока не будет отключено вручную. -
time_zone
(необязательно) указывает часовой пояс расписания повторения. Если опущено, по умолчанию используется Всемирное координированное время (UTC). Дополнительные сведения о значениях часового пояса см. в приложении для значений часового пояса.
После создания расписания YAML используйте следующую команду, чтобы создать расписание с помощью ИНТЕРФЕЙСА командной строки:
# 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
с разделителями пространства. Подстановочный знак *
означает все значения поля.
В выражении cron расписания машинного языка Azure:
-
MINUTES
— целое число или список от 0 до 59. -
HOURS
— целое число или список от 0 до 23. -
DAYS
значения не поддерживаются и всегда рассматриваются как*
. Значение*
вDAYS
означают все дни в месяц, которые зависят от месяца и года. -
MONTHS
значения не поддерживаются и всегда рассматриваются как*
. -
DAYS-OF-WEEK
— целое число или список от 0 до 6, где 0 = воскресенье. Также принимаются названия дней недели.
Например, выражение 15 16 * * 1
означает 4:15 вечера UTC каждый понедельник. Дополнительные сведения о выражениях crontab см. вики-сайте Crontab Expression на сайте GitHub.
Следующий код 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"
что расписание начинается с 10:15:00 10 мая 2022 года в часовом поясе UTC-4. Если опущено, значение по умолчанию равно времени создания расписания. Если время начала в прошлом, первое задание запускается в следующий вычисленный момент времени запуска. -
end_time
(необязательно) — это дата окончания и время с часовой поясом. Если его не указать, расписание остается активным до тех пор, пока не будет отключено вручную. -
time_zone
(необязательно) указывает часовой пояс расписания повторения. Если опущено, значение по умолчанию — UTC.
После создания расписания YAML используйте следующую команду, чтобы создать расписание с помощью ИНТЕРФЕЙСА командной строки:
# 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
Удаление расписания
Внимание
Сначала необходимо отключить расписание для его удаления. Удаление постоянно и невосстановимо.
az ml schedule delete -n simple_cron_job_schedule
Запрос активируемых заданий из расписания
Задания, активированные определенным расписанием, имеют отображаемое имя <schedule_name>-YYYYMMDDThhmmssZ
. Например, если расписание с именем named-schedule
выполняется каждые 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')]"
Совет
Вкладка "Журнал заданий" на странице сведений о расписании в студии предоставляет простой способ найти все задания, активированные расписанием.
Поддержка управления доступом на основе ролей (RBAC)
Поскольку графики используются для производства, важно уменьшить вероятность и влияние ошибочной эксплуатации. Администраторы рабочей области могут ограничить доступ к созданию и управлению расписанием в рабочей области.
Администраторы могут настроить в портале Azure следующие правила действий, связанные с расписаниями. Дополнительные сведения см. в статье "Управление доступом к рабочим областям Azure машинного обучения".
Действие | Описание | Правило |
---|---|---|
Читать | Получение и просмотр расписаний | Microsoft.MachineLearningServices/workspaces/schedules/read |
Напишите | Создание, обновление, отключение и включение расписаний | Microsoft.MachineLearningServices/workspaces/schedules/запись |
Удалить | Удаление расписаний | Microsoft.MachineLearningServices/workspaces/schedules/delete (удаление) |
Рекомендации по затратам
Счета за расписания выставляются на основе количества расписаний. Каждое расписание создает приложение логики, которое Машинное обучение Azure размещает от имени пользователя (HOBO). Поэтому приложение логики не может отображаться как ресурс в подписке пользователя на портале Azure.
С другой стороны, логическое приложение списывает плату с подписки Azure пользователя. Затраты на ресурсы HOBO выставляются с использованием того же счетчика, что и исходный поставщик ресурсов. Зарядки отображаются под ресурсом хоста, которым является рабочая область Azure Machine Learning.