Agendar trabalhos de pipeline de aprendizado de máquina
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)
Neste artigo, você aprenderá a agendar programaticamente um pipeline para ser executado no Azure e a usar a interface do usuário de agendamento para fazer o mesmo. É possível criar um agendamento com base no tempo decorrido. Os agendamentos baseados em tempo podem ser usados para cuidar de tarefas rotineiras, como treinar novamente modelos ou fazer previsões em lotes regularmente para mantê-los atualizados. Depois de aprender a criar agendamentos, aprenderá a recuperá-los, atualizá-los e desativá-los por meio de CLI, SDK e interface do usuário do Estúdio.
Dica
Se você precisar agendar trabalhos usando um orquestrador externo, como o Azure Data Factory ou o Microsoft Fabric, considere implantar seus trabalhos de pipeline em um ponto de extremidade em lote. Saiba mais sobre como implantar trabalhos em um ponto de extremidade em lote e como consumir pontos de extremidade em lote do Microsoft Fabric.
Pré-requisitos
- Você precisa ter uma assinatura do Azure para usar o Azure Machine Learning. Caso não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar. Experimente hoje mesmo a versão gratuita ou paga do Azure Machine Learning.
Instale a CLI do Azure e a extensão
ml
. Siga as etapas de instalação em Instalar, configurar e usar a CLI (v2).Crie um workspace do Azure Machine Learning se não tiver um. Para criação do workspace, confira Instalar, configurar e usar a CLI (v2).
Agendar um trabalho de pipeline
Para executar um trabalho de pipeline de forma recorrente, você precisará criar um agendamento. Um Schedule
associa um trabalho e um gatilho. O gatilho pode ser cron
que use a expressão cron para descrever a espera entre execuções ou recurrence
que especifique usando qual frequência disparar o trabalho. Em cada caso, você precisa definir um trabalho de pipeline primeiro, podendo ser trabalhos de pipeline existentes ou um trabalho de pipeline com definição em linha, consulte Criar um trabalho de pipeline na CLI e Criar um trabalho de pipeline no SDK.
Você pode agendar um yaml de trabalho de pipeline em um trabalho de pipeline local ou existente no workspace.
Criar um agendamento
Criar um agendamento baseado em tempo com padrão de recorrência
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)
$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
contém as propriedades a seguir:
- (Obrigatório)
type
especifica que o tipo de agendamento érecurrence
. Também pode sercron
, consulte detalhes na próxima seção.
A lista continua abaixo.
Observação
As propriedades a seguir que precisam ser especificadas se aplicam à CLI e ao SDK.
(Obrigatório)
frequency
especifica a unidade de tempo que descreve a frequência com que o agendamento é acionado. Pode serminute
,hour
,day
,week
,month
.(Obrigatório)
interval
especifica com que frequência o agendamento é disparado com base na frequência, que é o número de unidades de tempo a aguardar até que o agendamento seja acionado novamente.(Opcional)
schedule
define o padrão de recorrência, contendohours
,minutes
eweekdays
.- Quando
frequency
éday
, o padrão pode especificarhours
eminutes
. - Quando
frequency
éweek
emonth
, o padrão pode especificarhours
,minutes
eweekdays
. hours
deve ser um inteiro ou uma lista, de 0 a 23.minutes
deve ser um inteiro ou uma lista, de 0 a 59.weekdays
pode ser uma cadeia de caracteres ou uma lista, demonday
asunday
.- Se
schedule
for omitido, os trabalhos serão disparados de acordo com a lógica destart_time
,frequency
einterval
.
- Quando
(Opcional)
start_time
descreve a data e a hora de início com fuso horário. Sestart_time
for omitido, start_time será igual à hora do trabalho criado. Se a hora de início estiver no passado, o primeiro trabalho será executado no próximo tempo de execução calculado.(Opcional)
end_time
descreve a data e a hora de término com fuso horário. Seend_time
for omitido, o agendamento continuará disparando trabalhos até que o agendamento seja desabilitado manualmente.(Opcional)
time_zone
especifica o fuso horário da recorrência. Se omitido, por padrão será UTC. Para saber mais sobre valores de fuso horário, consulte o apêndice para valores de fuso horário.
Criar um agendamento baseado em tempo com a expressão cron
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)
$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
A seção trigger
define os detalhes do agendamento e contém as seguintes propriedades:
- (Obrigatório)
type
especifica que o tipo de agendamento écron
.
A lista continua abaixo.
(Obrigatório)
expression
usa a expressão crontab padrão para expressar um agendamento recorrente. Uma única expressão é composta por cinco campos delimitados por espaço:MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
Um único curinga (
*
), que abrange todos os valores do campo. Assim, um*
em dias significa todos os dias de um mês (que varia com mês e ano).O
expression: "15 16 * * 1"
no exemplo acima significa as 16:15PM em todas as segundas-feiras.A tabela a seguir lista os valores válidos para cada campo:
Campo Intervalo Comentário MINUTES
0-59 - HOURS
0-23 - DAYS
- Não há suporte. O valor será ignorado e tratado como *
.MONTHS
- Não há suporte. O valor será ignorado e tratado como *
.DAYS-OF-WEEK
0 a 6 Zero (0) significa domingo. Nomes de dias também aceitos. Para saber mais sobre como usar a expressão crontab, consulte Wiki da Expressão Crontab no GitHub .
Importante
DAYS
eMONTH
não tem suporte. Se você passar um valor, ele será ignorado e tratado como*
.(Opcional)
start_time
especifica a data e a hora de início com o fuso horário do agendamento.start_time: "2022-05-10T10:15:00-04:00"
significa que o agendamento começa a partir das 10:15:00AM em 2022-05-10 no fuso horário UTC-4. Sestart_time
for omitido,start_time
será igual ao tempo de criação do agendamento. Se a hora de início estiver no passado, o primeiro trabalho será executado no próximo tempo de execução calculado.(Opcional)
end_time
descreve a data e a hora de término com fuso horário. Seend_time
for omitido, o agendamento continuará disparando trabalhos até que o agendamento seja desabilitado manualmente.(Opcional)
time_zone
especifica o fuso horário da expressão. Se omitido, por padrão será UTC. Consulte o apêndice para obter valores de fuso horário.
Limitações:
- Atualmente, o agendamento do Azure Machine Learning v2 não dá suporte ao gatilho baseado em eventos.
- Você pode especificar um padrão de recorrência complexo que contém vários carimbos de data/hora de gatilho com o uso de SDK/CLI do Azure Machine Learning v2; já a interface do usuário exibe apenas o padrão complexo e não dá suporte à edição.
- Se você definir a recorrência como o 31º dia de cada mês, em meses com menos de 31 dias o agendamento não disparará trabalhos.
Alterar configurações de tempo de execução ao definir o agendamento
Ao definir um agendamento usando um trabalho existente, você pode alterar as configurações de tempo de execução do trabalho. Usando essa abordagem, você pode definir vários agendamentos usando o mesmo trabalho com entradas diferentes.
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)
$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
As propriedades a seguir podem ser alteradas ao definir o agendamento:
Propriedade | Descrição |
---|---|
configurações | Um dicionário de configurações a serem usadas ao executar o trabalho de pipeline. |
entradas | Um dicionário de entradas a serem usadas ao executar o trabalho de pipeline. |
outputs | Um dicionário de entradas a serem usadas ao executar o trabalho de pipeline. |
experiment_name | Nome do experimento do trabalho disparado. |
Observação
Os usuários da interface do usuário do Estúdio só podem modificar as configurações de entrada, saída e runtime na criação de um agendamento. experiment_name
só pode ser alterado usando a CLI ou o SDK.
Expressões com suporte no agendamento
Ao definir o agendamento, damos suporte à expressão a seguir que será resolvida como valor real durante o tempo de execução do trabalho.
Expression | Descrição | Propriedades com suporte |
---|---|---|
${{creation_context.trigger_time}} |
A hora em que o agendamento é disparado. | Entradas de tipo de cadeia de caracteres do trabalho de pipeline |
${{name}} |
O nome do trabalho. | outputs.path do trabalho de pipeline |
Gerenciar agendamento
Criar agendamento
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)
Depois de criar o yaml de agendamento, você pode usar o comando a seguir para criar um agendamento por meio da 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
Listar agendamentos em um espaço de trabalho
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)
az ml schedule list
Verificar detalhes do agendamento
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)
az ml schedule show -n simple_cron_job_schedule
Atualizar um agendamento
APLICA-SE A:Extensão de ML da CLI do Azurev2 (atual)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Observação
Se você quiser atualizar mais do que apenas marcas/descrição, é recomendável usar az ml schedule create --file update_schedule.yml
Desabilitar um agendamento
APLICA-SE A:Extensão de ML da CLI do Azurev2 (atual)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Habilitar um agendamento
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Consultar trabalhos disparados de um agendamento
Todo nome de exibição dos trabalhos disparados pelo agendamento terá o nome de exibição <schedule_name>-YYYYMMDDThhmmssZ. Por exemplo, se uma agenda com um nome de agendamento nomeado for criada com uma execução agendada a cada 12 horas a partir das 6h de 1º de janeiro de 2021, os nomes de exibição dos trabalhos criados serão os seguintes:
- named-schedule-20210101T060000Z
- named-schedule-20210101T180000Z
- named-schedule-20210102T060000Z
- named-schedule-20210102T180000Z e assim por diante
Você também pode aplicar a consulta JMESPath da CLI do Azure para consultar os trabalhos disparados por um nome de agendamento.
# 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')]"
Observação
Para obter uma maneira mais simples de localizar todos os trabalhos disparados por um agendamento, confira o Histórico de trabalhos na página de detalhes do agendamento usando a interface do usuário do Estúdio.
excluir uma agenda
Importante
Um agendamento deve ser desabilitado para ser excluído. A exclusão é uma ação irrecuperável. Depois que um agendamento é excluído, você nunca pode acessá-lo ou recuperá-lo.
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)
az ml schedule delete -n simple_cron_job_schedule
Suporte a RBAC (controle de acesso baseado em função)
Como os agendamentos geralmente são usados para produção, para reduzir o impacto da má operação os administradores do workspace podem querer restringir o acesso à criação e ao gerenciamento de agendamentos em um workspace.
Atualmente, há três regras de ação relacionadas a agendamentos, e você pode configurá-las no portal do Azure. Você pode saber mais detalhes sobre como gerenciar o acesso a um workspace do Azure Machine Learning.
Ação | Descrição | Regra |
---|---|---|
Ler | Obter e listar agendamentos no workspace do Machine Learning | Microsoft.MachineLearningServices/workspaces/schedules/read |
Gravar | Criar, atualizar, desabilitar e habilitar agendamentos no workspace do Machine Learning | Microsoft.MachineLearningServices/workspaces/schedules/write |
Excluir | Excluir um agendamento no workspace do Machine Learning | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Perguntas frequentes
Por que meus agendamentos criados pelo SDK não estão listados na interface do usuário?
A interface do usuário de agendamentos é para agendamentos v2. Portanto, seus agendamentos v1 não serão listados ou acessados por meio da interface do usuário.
No entanto, os agendamentos v2 também dão suporte a trabalhos de pipeline v1. Você não precisa publicar o pipeline primeiro e pode configurar diretamente os agendamentos para um trabalho de pipeline.
Por que meus agendamentos não disparam o trabalho no momento em que defini antes?
- Por padrão, os agendamentos usarão o fuso horário UTC para calcular a hora do gatilho. Você pode especificar fuso horário no assistente de criação ou atualizar o fuso horário na página de detalhes do agendamento.
- Se você definir a recorrência como o 31º dia de cada mês, em meses com menos de 31 dias o agendamento não disparará trabalhos.
- Se você estiver usando expressões Cron, não há suporte a MONTH. Se você transmitir um valor, ele será ignorado e tratado como *. Essa é uma limitação conhecida.
Há suporte a agendamentos baseados em eventos?
- Não, o agendamento V2 não dá suporte a agendamentos baseados em eventos.
Próximas etapas
- Saiba mais sobre o esquema YAML de agendamento da CLI (v2).
- Saiba como criar um trabalho de pipeline na CLI v2.
- Saiba como criar um trabalho de pipeline no SDK v2.
- Saiba mais sobre a sintaxe YAML principal da CLI (v2).
- Saiba mais sobre os Pipelines.
- Saiba mais sobre Componente.