Programar a execução do pipeline - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Programar a execução do pipeline

Você pode programar suas execuções do Amazon SageMaker Pipelines usando a Amazon. EventBridge O Amazon SageMaker Pipelines é suportado como alvo na Amazon EventBridge. Isso permite que você inicie a execução do seu pipeline de construção de modelos com base em qualquer evento em seu barramento de eventos. Com EventBridge, você pode automatizar suas execuções de pipeline e responder automaticamente a eventos, como tarefas de treinamento ou mudanças no status do endpoint. Os eventos incluem um novo arquivo sendo carregado para seu bucket do Amazon S3, uma alteração no status do seu SageMaker endpoint da Amazon devido à deriva e tópicos do Amazon Simple Notification Service (). SNS

As seguintes ações do Pipelines podem ser iniciadas automaticamente: 

  • StartPipelineExecution

Para obter mais informações sobre o agendamento de SageMaker trabalhos, consulte Automatização com SageMaker a Amazon. EventBridge

Agende um pipeline com a Amazon EventBridge

Para iniciar a execução de um pipeline com o Amazon CloudWatch Events, você deve criar uma EventBridge regra. Ao criar uma regra para eventos, você especifica uma ação de destino a ser tomada ao EventBridge receber um evento que corresponda à regra. Quando um evento corresponde à regra, EventBridge envia o evento para o destino especificado e inicia a ação definida na regra.

Os tutoriais a seguir mostram como agendar a execução de um pipeline EventBridge usando o EventBridge console ou o. AWS CLI 

Pré-requisitos

  • Uma função que EventBridge pode ser assumida com a SageMaker::StartPipelineExecution permissão. Essa função pode ser criada automaticamente se você criar uma regra no EventBridge console; caso contrário, você mesmo precisará criar essa função. Para obter informações sobre como criar uma SageMaker função, consulte SageMaker Funções.

  • Um Amazon SageMaker Pipeline para programar. Para criar um SageMaker pipeline da Amazon, consulte Definir um pipeline.

Crie uma EventBridge regra usando o EventBridge console

O procedimento a seguir mostra como criar uma EventBridge regra usando o EventBridge console. 

  1. Navegue até o EventBridge console.

  2. Selecione Regras no lado esquerdo.

  3. Selecione Create Rule.

  4. Insira um nome e uma descrição para a regra.

  5. Selecione como deseja iniciar essa regra. Você tem as seguintes opções para sua regra:

    • Padrão de evento: sua regra é iniciada quando ocorre um evento correspondente ao padrão. Você pode escolher um padrão predefinido que corresponda a um determinado tipo de evento ou criar um padrão personalizado. Se você selecionar um padrão predefinido, poderá editar o padrão para personalizá-lo. Para obter mais informações sobre padrões de eventos, consulte Padrões de CloudWatch eventos em eventos.

    • Programação: sua regra é iniciada regularmente em uma programação especificada. Você pode usar uma programação de taxa fixa que inicia regularmente por um número específico de minutos, horas ou semanas. Você também pode usar uma expressão cron para criar uma programação mais refinada, como “a primeira segunda-feira de cada mês, às 8h”. A programação não é compatível com um barramento de eventos parceiro ou personalizado.

  6. Selecione o ônibus de eventos desejado.

  7. Selecione as metas a serem invocadas quando um evento corresponder ao seu padrão de eventos ou quando a programação for iniciada. Você pode adicionar até cinco destinos por regra. Selecione SageMaker Pipeline na lista suspensa destino.

  8. Selecione o pipeline que você deseja iniciar na lista suspensa do pipeline.

  9. Adicione parâmetros para passar para a execução do pipeline usando um par de nome e valor. Os valores dos parâmetros podem ser estáticos ou dinâmicos. Para obter mais informações sobre os parâmetros do Amazon SageMaker Pipeline, consulte AWS: :Events: SagemakerPipelineParameters :Rule.

    • Valores estáticos são passados para a execução do pipeline toda vez que o pipeline é iniciado. Por exemplo, se {"Name": "Instance_type", "Value": "ml.4xlarge"} for especificado na lista de parâmetros, ele será passado como um parâmetro StartPipelineExecutionRequest sempre que EventBridge iniciar o pipeline.

    • Os valores dinâmicos são especificados usando um JSON caminho. EventBridge analisa o valor da carga útil de um evento e o passa para a execução do pipeline. Por exemplo: $.detail.param.value

  10. Selecione a função a ser usada para essa regra. Você pode usar uma função existente ou criar uma nova.

  11. (Opcional) Adicionar tag.

  12. Selecione Create para finalizar sua regra.

Sua regra agora está em vigor e pronta para iniciar suas execuções de pipeline.

Crie uma EventBridge regra usando o AWS CLI

O procedimento a seguir mostra como criar uma EventBridge regra usando AWS CLI o.

  1. Crie uma regra a ser iniciada. Ao criar uma EventBridge regra usando o AWS CLI, você tem duas opções de como sua regra é iniciada: padrão de evento e programação.

    • Padrão de evento: sua regra é iniciada quando ocorre um evento correspondente ao padrão. Você pode escolher um padrão predefinido que corresponda a um determinado tipo de evento ou criar um padrão personalizado. Se você selecionar um padrão predefinido, poderá editar o padrão para personalizá-lo.  Você pode criar uma regra com padrão de evento usando o seguinte comando:

      aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
    • Programação: sua regra é iniciada regularmente em uma programação especificada. Você pode usar uma programação de taxa fixa que inicia regularmente por um número específico de minutos, horas ou semanas. Você também pode usar uma expressão cron para criar uma programação mais refinada, como “a primeira segunda-feira de cada mês, às 8h”. A programação não é compatível com um barramento de eventos parceiro ou personalizado. Você pode criar um cluster usando a programação com o seguinte comando:

      aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
  2. Adicione metas a serem invocadas quando um evento corresponder ao seu padrão de eventos ou quando a programação for iniciada. Você pode adicionar até cinco destinos por regra.  Para cada destino, você deve especificar: 

    • ARN: O recurso ARN do seu funil.

    • FunçãoARN: A ARN função que a função EventBridge deve assumir para executar o pipeline.

    • Parâmetros: parâmetros do SageMaker pipeline da Amazon a serem transmitidos.

  3. Execute o comando a seguir para passar um SageMaker pipeline da Amazon como destino para sua regra usando put-targets:

    aws events put-targets --rule <RULE_NAME> --event-bus-name <EVENT_BUS_NAME> --targets "[{\"Id\": <ID>, \"Arn\": <RESOURCE_ARN>, \"RoleArn\": <ROLE_ARN>, \"SageMakerPipelineParameter\": { \"SageMakerParameterList\": [{\"Name\": <NAME>, \"Value\": <VALUE>}]} }]"] 

Agende um pipeline com o SageMaker Python SDK

As seções a seguir mostram como configurar permissões para acessar EventBridge recursos e criar seu cronograma de pipeline usando o SageMaker PythonSDK.

Permissões obrigatórias

Você precisa ter as permissões necessárias para usar o agendador de pipeline. Conclua as etapas a seguir para configurar suas permissões:

  1. Anexe a seguinte política de privilégios mínimos à IAM função usada para criar os acionadores do pipeline ou use a AWS política gerenciada. AmazonEventBridgeSchedulerFullAccess

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "scheduler:ListSchedules", "scheduler:GetSchedule", "scheduler:CreateSchedule", "scheduler:UpdateSchedule", "scheduler:DeleteSchedule" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringLike": { "iam:PassedToService": "scheduler.amazonaws.com" } } } ] }
  2. Estabeleça uma relação de confiança EventBridge adicionando o diretor de serviço scheduler.amazonaws.com à política de confiança dessa função. Certifique-se de anexar a seguinte política de confiança à função de execução se você iniciar o notebook no SageMaker Studio.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "scheduler.amazonaws.com", "sagemaker.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Crie um cronograma de funil

Usando o PipelineSchedule construtor, você pode programar um pipeline para ser executado uma vez ou em um intervalo predeterminado. Um cronograma de pipeline deve ser do tipo atrate, oucron. Esse conjunto de tipos de agendamento é uma extensão das opções de EventBridge agendamento. Para obter mais informações sobre como usar a PipelineSchedule classe, consulte sagemaker.workflow.triggers. PipelineSchedule. O exemplo a seguir demonstra como criar cada tipo de agendamento com. PipelineSchedule

from sagemaker.workflow.triggers import PipelineSchedule # schedules a pipeline run for 12/13/2023 at time 10:15:20 UTC my_datetime_schedule = PipelineSchedule( name="<schedule-name>", at=datetime(2023, 12, 13, 10, 15, 20) ) # schedules a pipeline run every 5 minutes my_rate_schedule = PipelineSchedule( name="<schedule-name>", rate=(5, "minutes") ) # schedules a pipeline run at 10:15am UTC on the last Friday of each month during the years 2022 to 2023 my_cron_schedule = PipelineSchedule( name="<schedule-name>", cron="15 10 ? * 6L 2022-2023" )
nota

Se você criar uma agenda única e precisar acessar a hora atual, use datetime.utcnow() em vez dedatetime.now(). O último não armazena o contexto da zona atual e resulta em um tempo incorreto passado para EventBridge.

Conecte o gatilho ao seu pipeline

Para anexar seu PipelineSchedule ao seu pipeline, invoque a put_triggers chamada no objeto de pipeline criado com uma lista de acionadores. Se você receber uma respostaARN, você criou com sucesso o cronograma em sua conta e EventBridge começa a invocar o funil de destino na hora ou na taxa especificada. Você deve especificar uma função com as permissões corretas para anexar gatilhos a um funil principal. Se você não fornecer um, o Pipelines busca a função padrão usada para criar o pipeline a partir do arquivo de configuração.

O exemplo a seguir demonstra como anexar um cronograma a um pipeline.

scheduled_pipeline = Pipeline( name="<pipeline-name>", steps=[...], sagemaker_session=<sagemaker-session>, ) custom_schedule = PipelineSchedule( name="<schedule-name>", at=datetime(year=2023, month=12, date=25, hour=10, minute=30, second=30) ) scheduled_pipeline.put_triggers(triggers=[custom_schedule], role_arn=<role>)

Descreva os gatilhos atuais

Para recuperar informações sobre os gatilhos do pipeline criados, você pode invocar o describe_trigger() API com o nome do acionador. Esse comando retorna detalhes sobre a expressão de agendamento criada, como horário de início, estado ativado e outras informações úteis. O trecho a seguir mostra um exemplo de invocação:

scheduled_pipeline.describe_trigger(name="<schedule-name>")

Recursos de gatilho de limpeza

Antes de excluir seu funil, limpe os gatilhos existentes para evitar um vazamento de recursos em sua conta. Você deve excluir os gatilhos antes de destruir o pipeline principal. Você pode excluir seus gatilhos passando uma lista de nomes de gatilhos para o. delete_triggers API O trecho a seguir demonstra como excluir gatilhos.

pipeline.delete_triggers(trigger_names=["<schedule-name>"])
nota

Esteja ciente das seguintes limitações ao excluir seus gatilhos:

  • A opção de excluir os gatilhos especificando os nomes dos gatilhos só está disponível no Python. SageMaker SDK A exclusão do pipeline no CLI ou de uma DeletePipeline API chamada não exclui seus gatilhos. Como resultado, os gatilhos ficam órfãos e SageMaker tentam iniciar a execução de um pipeline inexistente.

  • Além disso, se você estiver usando outra sessão do notebook ou já tiver excluído o destino do pipeline, limpe os agendamentos órfãos por meio do agendador CLIou do console. EventBridge