Share via


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

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:Extensão 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 seguintes propriedades:

  • (Obrigatório)type especifica que o tipo de agendamento é recurrence. Também pode ser cron, 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 ser minute, 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, contendo hours, minutese weekdays.

    • Quando frequency é day, o padrão pode especificar hours e minutes.
    • Quando frequency é week e month, o padrão pode especificar hours, minutes e weekdays.
    • 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 de monday até sunday.
    • Se schedule for omitido, o(s) trabalho(s) será(ão) acionado(s) de acordo com a lógica de start_time, frequency e interval.
  • (Opcional) start_time Descreve a data e hora de início com fuso horário. Se start_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. Se end_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:Extensão 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 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 e MONTH 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. Se start_time for omitido, o 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 hora de término com fuso horário. Se end_time for omitida, a agenda continuará a acionar trabalhos até que a agenda seja desativada manualmente.

  • (Opcional) time_zoneEspecifica 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:Extensão 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 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:Extensão ml da CLI do Azure 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:Extensão ml da CLI do Azure v2 (atual)

az ml schedule list

Confira detalhes do cronograma

APLICA-SE A:Extensão ml da CLI do Azure v2 (atual)

az ml schedule show -n simple_cron_job_schedule

Atualizar uma agenda

APLICA-SE A:Extensão ml da CLI do Azure 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:Extensão ml da CLI do Azure v2 (atual)

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

Ativar uma agenda

APLICA-SE A:Extensão ml da CLI do Azure 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

Captura de ecrã do separador de trabalhos no estúdio do Azure Machine Learning filtrando por nome de apresentação do trabalho.

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:Extensão 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 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