Agendar trabalhos de pipelines de machine learning
APLICA-SE A:Azure CLI ml extension v2 (current)
Python SDK azure-ai-ml v2 (current)
Neste artigo, você aprenderá como agendar programaticamente um pipeline para ser executado no Azure e usar a interface do usuário de agendamento para fazer o mesmo. Pode criar um horário baseado no tempo decorrido. Os horários baseados no tempo podem ser usados para cuidar de tarefas de rotina, como retreinar modelos ou fazer previsões de lote regularmente para mantê-los atualizados. Depois de aprender a criar agendas, você aprenderá como recuperá-las, atualizá-las e desativá-las via CLI, SDK e interface do usuário do estúdio.
Gorjeta
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ê deve ter uma assinatura do Azure para usar o Azure Machine Learning. Se não tiver uma subscrição 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
ml
extensão. Siga as etapas de instalação em Instalar, configurar e usar a CLI (v2).Crie um espaço de trabalho do Azure Machine Learning se não tiver um. Para a criação de espaços de trabalho, consulte Instalar, configurar e usar a CLI (v2).
Agendar um trabalho de pipeline
Para executar um trabalho de pipeline de forma recorrente, você precisará criar uma agenda. Um Schedule
associa um trabalho e um gatilho. O gatilho pode ser cron
que use a expressão cron para descrever a espera entre as execuções ou recurrence
que especifique usando qual frequência acionar o trabalho. Em cada caso, você precisa definir um trabalho de pipeline primeiro, pode ser um trabalho de pipeline existente ou um trabalho de pipeline definir inline, consulte Criar um trabalho de pipeline na CLI e Criar um trabalho de pipeline no SDK.
Você pode agendar um trabalho de pipeline yaml no local ou um trabalho de pipeline existente no espaço de trabalho.
Criar uma agenda
Criar um horário baseado no tempo com padrão de recorrência
APLICA-SE A: Azure CLI ml extension 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 seguintes propriedades:
- (Obrigatório)
type
especifica que o tipo de agendamento érecurrence
. Também pode sercron
, veja os detalhes na próxima seção.
A lista continua abaixo.
Nota
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 a agenda é acionada. Pode serminute
,hour
, ,day
,week
.month
(Obrigatório)
interval
Especifica a frequência com que a agenda é acionada com base na frequência, que é o número de unidades de tempo a aguardar até que a agenda seja acionada 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
atésunday
.- Se
schedule
for omitido, o(s) trabalho(s) será(ão) acionado(s) de acordo com a lógica destart_time
,frequency
einterval
.
- Quando
(Opcional)
start_time
Descreve a data e hora de início com fuso horário. Sestart_time
for omitido, start_time será igual ao tempo de criação de emprego. 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 hora de término com fuso horário. Seend_time
for omitida, a agenda continuará a acionar trabalhos até que a agenda seja desativada manualmente.(Opcional)
time_zone
Especifica o fuso horário da recorrência. Se omitido, por padrão é UTC. Para saber mais sobre valores de fuso horário, consulte o apêndice para valores de fuso horário.
Criar um horário baseado no tempo com expressão cron
APLICA-SE A: Azure CLI ml extension 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 trigger
seção define os detalhes da agenda 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 uma agenda 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 o mês e o ano).O
expression: "15 16 * * 1"
na amostra acima significa as 16h15 de todas as segundas-feiras.A tabela abaixo lista os valores válidos para cada campo:
Campo Intervalo Comentário MINUTES
0-59 - HOURS
0-23 - DAYS
- Não suportado. O valor será ignorado e tratado como *
.MONTHS
- Não suportado. O valor será ignorado e tratado como *
.DAYS-OF-WEEK
0-6 Zero (0) significa domingo. Nomes de dias também aceitos. Para saber mais sobre como usar a expressão crontab, consulte Crontab Expression wiki no GitHub .
Importante
DAYS
eMONTH
não são suportados. Se você passar um valor, ele será ignorado e tratado como*
.(Opcional)
start_time
Especifica a data e hora de início com fuso horário da agenda.start_time: "2022-05-10T10:15:00-04:00"
significa que o horário começa a partir das 10:15:00 em 2022-05-10 no fuso horário UTC-4. Sestart_time
for omitido, ostart_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 hora de término com fuso horário. Seend_time
for omitida, a agenda continuará a acionar trabalhos até que a agenda seja desativada manualmente.(Opcional)
time_zone
Especifica o fuso horário da expressão. Se omitido, por padrão é UTC. Consulte o apêndice para obter os valores de fuso horário.
Limitações:
- Atualmente, a agenda do Azure Machine Learning v2 não oferece suporte ao gatilho baseado em evento.
- Você pode especificar um padrão de recorrência complexo contendo vários carimbos de data/hora de gatilho usando o SDK do Azure Machine Learning/CLI v2, enquanto a interface do usuário exibe apenas o padrão complexo e não oferece 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 cronograma não acionará trabalhos.
Alterar as definições do runtime ao definir o horário
Ao definir uma agenda usando um trabalho existente, você pode alterar as configurações de tempo de execução do trabalho. Usando essa abordagem, você pode definir várias agendas usando o mesmo trabalho com entradas diferentes.
APLICA-SE A: Azure CLI ml extension 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 seguintes propriedades podem ser alteradas ao definir a programação:
Property | Description |
---|---|
definições | Um dicionário de configurações a serem usadas ao executar o trabalho de pipeline. |
Insumos | Um dicionário de entradas a serem usadas ao executar o trabalho de pipeline. |
saídas | Um dicionário de entradas a serem usadas ao executar o trabalho de pipeline. |
experiment_name | Nome do experimento do trabalho acionado. |
Nota
Os usuários da interface do usuário do Studio só podem modificar as configurações de entrada, saída e tempo de execução ao criar uma agenda. experiment_name
só pode ser alterado usando a CLI ou SDK.
Expressões suportadas no horário
Ao definir o cronograma, oferecemos suporte à expressão a seguir que será resolvida com valor real durante o tempo de execução do trabalho.
Expression | Description | Propriedades suportadas |
---|---|---|
${{creation_context.trigger_time}} |
A hora em que o agendamento é acionado. | Entradas de tipo de cadeia de caracteres do trabalho de pipeline |
${{name}} |
O nome do trabalho. | outputs.path do trabalho de pipeline |
Gerenciar cronograma
Criar agendamento
APLICA-SE A: Azure CLI ml extension v2 (atual)
Depois de criar o agendamento yaml, você pode usar o seguinte comando para criar um agendamento via 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 agendas em um espaço de trabalho
APLICA-SE A: Azure CLI ml extension v2 (atual)
az ml schedule list
Confira detalhes do cronograma
APLICA-SE A: Azure CLI ml extension v2 (atual)
az ml schedule show -n simple_cron_job_schedule
Atualizar uma agenda
APLICA-SE A: Azure CLI ml extension v2 (atual)
az ml schedule update -n simple_cron_job_schedule --set description="new description" --no-wait
Nota
Se você gostaria de atualizar mais do que apenas tags / descrição, é recomendável usar az ml schedule create --file update_schedule.yml
Desativar uma agenda
APLICA-SE A: Azure CLI ml extension v2 (atual)
az ml schedule disable -n simple_cron_job_schedule --no-wait
Ativar uma agenda
APLICA-SE A: Azure CLI ml extension v2 (atual)
az ml schedule enable -n simple_cron_job_schedule --no-wait
Trabalhos acionados por consulta a partir de uma agenda
Todos os nomes de exibição de trabalhos acionados por agendamento terão o nome de exibição como <schedule_name-YYYYMMDDThhmmssZ>. Por exemplo, se uma agenda com um nome de agenda nomeada 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:
- nomeado-agenda-20210101T060000Z
- nomeado-agenda-20210101T180000Z
- nomeado-agenda-20210102T060000Z
- named-schedule-20210102T180000Z, e assim por diante
Você também pode aplicar a consulta JMESPath da CLI do Azure para consultar os trabalhos acionados por um nome de agenda.
# 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')]"
Nota
Para obter uma maneira mais simples de encontrar todos os trabalhos acionados por uma agenda, consulte o Histórico de trabalhos na página de detalhes da agenda usando a interface do usuário do estúdio.
Eliminar uma agenda
Importante
Para serem eliminados, os horários têm de ser desativados. Excluir é uma ação irrecuperável. Depois que uma agenda é excluída, você nunca poderá acessá-la ou recuperá-la.
APLICA-SE A: Azure CLI ml extension v2 (atual)
az ml schedule delete -n simple_cron_job_schedule
Suporte a RBAC (controle de acesso baseado em função)
Como as agendas geralmente são usadas para produção, para reduzir o impacto da operação incorreta, os administradores do espaço de trabalho podem querer restringir o acesso à criação e gerenciamento de agendas dentro de um espaço de trabalho.
Atualmente, há três regras de ação relacionadas a agendas e você pode configurar no portal do Azure. Você pode saber mais detalhes sobre como gerenciar o acesso a um espaço de trabalho do Azure Machine Learning.
Ação | Descrição | Regra |
---|---|---|
Lida | Obter e listar agendas no espaço de trabalho do Aprendizado de Máquina | Microsoft.MachineLearningServices/workspaces/schedules/read |
Escrita | Criar, atualizar, desabilitar e habilitar agendas no espaço de trabalho do Aprendizado de Máquina | Microsoft.MachineLearningServices/workspaces/schedules/write |
Delete | Excluir uma agenda no espaço de trabalho do Aprendizado de Máquina | Microsoft.MachineLearningServices/workspaces/schedules/delete |
Considerações de custos
- As agendas são cobradas com base no número de agendas, cada agenda criará um host de aplicativos lógicos subs do Azure Machine Learning em nome (HOBO) do usuário.
- O custo dos aplicativos lógicos voltará para a assinatura do Azure do usuário, e você pode descobrir que os custos dos recursos do HOBO são cobrados usando o mesmo medidor emitido pelo RP original. Eles são mostrados sob o recurso de host (o espaço de trabalho).
Perguntas mais frequentes
Por que minhas agendas criadas pelo SDK não estão listadas na interface do usuário?
A interface do usuário de agendas é para agendas v2. Assim, suas agendas v1 não serão listadas ou acessadas via interface do usuário.
No entanto, as agendas v2 também suportam trabalhos de pipeline v1. Você não precisa publicar o pipeline primeiro e pode configurar agendas diretamente para um trabalho de pipeline.
Por que meus horários não acionam o trabalho no horário que defini antes?
- Por padrão, as agendas usarão o fuso horário UTC para calcular o tempo do gatilho. Você pode especificar fuso horário no assistente de criação ou atualizar fuso horário na página de detalhes da agenda.
- Se você definir a recorrência como o 31º dia de cada mês, em meses com menos de 31 dias, o cronograma não acionará trabalhos.
- Se você estiver usando expressões cron, MONTH não é suportado. Se você passar um valor, ele será ignorado e tratado como *. Esta é uma limitação conhecida.
As agendas baseadas em eventos são suportadas?
- Não, a agenda V2 não suporta agendas baseadas em eventos.
Próximos passos
- Saiba mais sobre o esquema YAML de agendamento da CLI (v2).
- Saiba como criar trabalho de pipeline na CLI v2.
- Saiba como criar trabalho de pipeline no SDK v2.
- Saiba mais sobre a sintaxe YAML principal da CLI (v2).
- Saiba mais sobre Pipelines.
- Saiba mais sobre o Componente.