Pianifica le esecuzioni della pipeline - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Pianifica le esecuzioni della pipeline

Puoi pianificare le tue esecuzioni di Amazon SageMaker Model Building Pipelines utilizzando Amazon. EventBridge Amazon SageMaker Model Building Pipelines è supportato come destinazione in Amazon EventBridge. Ciò consente di avviare l'esecuzione della pipeline per la costruzione di modelli in base a qualsiasi evento nel bus di eventi. Con EventBridge, puoi automatizzare le esecuzioni della pipeline e rispondere automaticamente a eventi come le modifiche allo stato dei lavori di formazione o degli endpoint. Gli eventi includono il caricamento di un nuovo file nel tuo bucket Amazon S3, una modifica dello stato dell' SageMaker endpoint Amazon dovuta a una deriva e argomenti relativi ad Amazon Simple Notification Service (SNS).

Le seguenti SageMaker azioni Pipelines possono essere avviate automaticamente: 

  • StartPipelineExecution

Per ulteriori informazioni sulla pianificazione dei SageMaker lavori, consulta Automating with SageMaker Amazon. EventBridge

Pianifica una pipeline con Amazon EventBridge

Per avviare l'esecuzione di una pipeline con Amazon CloudWatch Events, devi creare una EventBridge regola. Quando crei una regola per gli eventi, specifichi un'azione mirata da intraprendere quando EventBridge riceve un evento che corrisponde alla regola. Quando un evento corrisponde alla regola, EventBridge invia l'evento alla destinazione specificata e avvia l'azione definita nella regola.

I seguenti tutorial mostrano come pianificare l'esecuzione di una pipeline EventBridge utilizzando la console o il EventBridge. AWS CLI 

Prerequisiti

  • Un ruolo che EventBridge può assumere con il permesso. SageMaker::StartPipelineExecution Questo ruolo può essere creato automaticamente se crei una regola dalla EventBridge console; in caso contrario, devi crearlo tu stesso. Per informazioni sulla creazione di un SageMaker ruolo, consulta SageMaker Ruoli.

  • Una Amazon SageMaker Pipeline da programmare. Per creare una Amazon SageMaker Pipeline, consulta Define a Pipeline.

Crea una EventBridge regola utilizzando la console EventBridge

La procedura seguente mostra come creare una EventBridge regola utilizzando la EventBridge console. 

  1. Passare alla console EventBridge .

  2. Seleziona Regole sul lato sinistro.

  3. Seleziona Create Rule.

  4. Immettere un nome e una descrizione per la regola.

  5. Seleziona come desideri avviare questa regola. Sono disponibili le seguenti opzioni per la regola:

    • Modello di evento: la regola viene avviata quando si verifica un evento corrispondente al modello. È possibile scegliere un modello predefinito che corrisponda a un determinato tipo di evento oppure creare un modello personalizzato. Se selezioni un modello predefinito, puoi modificarlo per personalizzarlo. Per ulteriori informazioni sui modelli di eventi, vedere Modelli di CloudWatch eventi negli eventi.

    • Pianificazione: la regola viene avviata regolarmente in base a una pianificazione specificata. È possibile utilizzare una pianificazione a frequenza fissa che viene avviata regolarmente per un determinato numero di minuti, ore o settimane. Puoi anche usare un'espressione cron per creare una pianificazione più dettagliata, ad esempio "il primo lunedì di ogni mese alle 8:00". La pianificazione non è supportata su un bus di eventi partner o personalizzato.

  6. Seleziona il bus di eventi desiderato.

  7. Seleziona uno o più destinazioni da richiamare quando un evento corrisponde al tuo modello di evento o quando viene avviata la pianificazione. È possibile aggiungere fino a 5 destinazioni per regola. Seleziona SageMaker Pipeline nell'elenco a discesa delle destinazioni.

  8. Seleziona la pipeline che desideri avviare dall'elenco a discesa delle pipeline.

  9. Aggiungi parametri da passare all'esecuzione della pipeline utilizzando una coppia nome e valore. I valori dei parametri possono essere statici o dinamici. Per ulteriori informazioni sui parametri di Amazon SageMaker Pipeline, consulta AWS::Events::Rule SagemakerPipelineParametri.

    • I valori statici vengono passati all'esecuzione della pipeline ogni volta che viene avviata la pipeline. Ad esempio, se {"Name": "Instance_type", "Value": "ml.4xlarge"} è specificato nell'elenco dei parametri, viene passato come parametro StartPipelineExecutionRequest ogni volta che EventBridge avvia la pipeline.

    • I valori dinamici vengono specificati utilizzando un percorso JSON. EventBridge analizza il valore dal payload di un evento, quindi lo passa all'esecuzione della pipeline. Ad esempio: $.detail.param.value

  10. Seleziona il ruolo da utilizzare per questa regola. Puoi utilizzare un ruolo esistente o crearne uno nuovo.

  11. (Opzionale) Aggiungi dei tag.

  12. Seleziona Create per finalizzare la tua regola.

La tua regola è ora in vigore e pronta per avviare le esecuzioni della pipeline.

Crea una regola utilizzando EventBridge AWS CLI

La procedura seguente mostra come creare una EventBridge regola utilizzando AWS CLI.

  1. Crea una regola da avviare. Quando si crea una EventBridge regola utilizzando il AWS CLI, sono disponibili due opzioni per la modalità di avvio della regola, lo schema degli eventi e la pianificazione.

    • Modello di evento: la regola viene avviata quando si verifica un evento corrispondente al modello. È possibile scegliere un modello predefinito che corrisponda a un determinato tipo di evento oppure creare un modello personalizzato. Se selezioni un modello predefinito, puoi modificarlo per personalizzarlo.  È possibile creare una regola con modello di evento utilizzando il seguente comando:

      aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
    • Pianificazione: la regola viene avviata regolarmente in base a una pianificazione specificata. È possibile utilizzare una pianificazione a frequenza fissa che viene avviata regolarmente per un determinato numero di minuti, ore o settimane. Puoi anche usare un'espressione cron per creare una pianificazione più dettagliata, ad esempio "il primo lunedì di ogni mese alle 8:00". La pianificazione non è supportata su un bus di eventi partner o personalizzato. È possibile creare una regola con pianificazione utilizzando il seguente 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. Aggiungi una o più destinazioni da richiamare quando un evento corrisponde al tuo modello di evento o quando viene avviata la pianificazione. È possibile aggiungere fino a 5 destinazioni per regola.  Per ciascuna destinazione, occorre specificare: 

    • ARN: l'ARN della risorsa della tua pipeline.

    • Ruolo ARN: l'ARN del ruolo EventBridge deve assumere per eseguire la pipeline.

    • Parametri: parametri SageMaker della pipeline Amazon da passare.

  3. Esegui il seguente comando per passare una SageMaker pipeline Amazon come destinazione alla tua regola 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>}]} }]"] 

Pianifica una pipeline con SageMaker Python SDK

Le sezioni seguenti mostrano come impostare le autorizzazioni per accedere alle EventBridge risorse e creare la pianificazione della pipeline utilizzando Python SageMaker SDK.

Autorizzazioni richieste

È necessario disporre delle autorizzazioni necessarie per utilizzare lo scheduler della pipeline. Completa i seguenti passaggi per configurare le tue autorizzazioni:

  1. Allega la seguente politica di privilegi minimi al ruolo IAM utilizzato per creare i trigger della pipeline o utilizza la policy gestita. AWS 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. Stabilisci una relazione di fiducia con EventBridge aggiungendo il service principal scheduler.amazonaws.com alla policy di fiducia di questo ruolo. Assicurati di allegare la seguente politica di fiducia al ruolo di esecuzione se avvii il notebook in SageMaker Studio.

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

Crea una pianificazione della pipeline

Utilizzando il PipelineSchedule costruttore, è possibile pianificare l'esecuzione di una pipeline una sola volta o a intervalli predeterminati. Una pianificazione della pipeline deve essere del tipo, o. at rate cron Questo set di tipi di pianificazione è un'estensione delle opzioni di EventBridge pianificazione. Per ulteriori informazioni su come utilizzare la PipelineSchedule classe, vedete sagemaker.workflow.triggers. PipelineSchedule. L'esempio seguente mostra come creare ogni tipo di pianificazione con. 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 crei una pianificazione unica e devi accedere all'ora corrente, usa datetime.utcnow() invece di. datetime.now() Quest'ultimo non memorizza il contesto della zona corrente e determina un intervallo di tempo errato passato a EventBridge.

Collega il trigger alla tua pipeline

Per collegarlo PipelineSchedule alla pipeline, put_triggers richiama la chiamata sull'oggetto pipeline creato con un elenco di trigger. Se ricevi un ARN di risposta, hai creato correttamente la pianificazione nel tuo account e hai EventBridge iniziato a richiamare la pipeline di destinazione all'ora o alla frequenza specificate. È necessario specificare un ruolo con le autorizzazioni corrette per collegare i trigger a una pipeline principale. Se non ne fornite uno, SageMaker Pipelines recupera il ruolo predefinito usato per creare la pipeline dal file di configurazione.

L'esempio seguente mostra come allegare una pianificazione a una 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>)

Descrivi i trigger correnti

Per recuperare informazioni sui trigger della pipeline creati, puoi richiamare l'API con il nome del describe_trigger() trigger. Questo comando restituisce dettagli sull'espressione di pianificazione creata, ad esempio l'ora di inizio, lo stato di attivazione e altre informazioni utili. Il frammento seguente mostra un esempio di invocazione:

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

Risorse Cleanup Trigger

Prima di eliminare la pipeline, pulisci i trigger esistenti per evitare una perdita di risorse nel tuo account. È necessario eliminare i trigger prima di distruggere la pipeline principale. Puoi eliminare i trigger passando un elenco di nomi di trigger all'API. delete_triggers Il seguente frammento mostra come eliminare i trigger.

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

Tieni presente le seguenti limitazioni quando elimini i trigger:

  • L'opzione per eliminare i trigger specificando i nomi dei trigger è disponibile solo in Python SageMaker SDK. L'eliminazione della pipeline nella CLI o di una chiamata DeletePipeline API non elimina i trigger. Di conseguenza, i trigger diventano orfani e SageMaker tentano di avviare un'esecuzione per una pipeline inesistente.

  • Inoltre, se stai utilizzando un'altra sessione del notebook o hai già eliminato la destinazione della pipeline, pulisci le pianificazioni orfane tramite la CLI o la console dello scheduler. EventBridge