Planification d’exécutions d’un pipeline
Vous pouvez planifier vos exécutions Amazon SageMaker Pipelines à l’aide d’Amazon EventBridge. Amazon SageMaker Pipelines est pris en charge en tant que cible dans Amazon EventBridge. Cela vous permet de lancer l’exécution de votre pipeline de création de modèle en fonction de n’importe quel événement dans votre bus d’événements. Avec EventBridge, vous pouvez automatiser vos exécutions de pipelines et répondre automatiquement à des événements tels qu’un changement d’état de tâche d’entraînement ou de point de terminaison. Les événements incluent le téléchargement d’un nouveau fichier vers votre compartiment Amazon S3, un changement de statut de votre point de terminaison Amazon SageMaker AI en raison de la dérive, et des rubriques Amazon Simple Notification Service (SNS).
Les actions Pipelines suivantes peuvent être lancées automatiquement :
-
StartPipelineExecution
Pour plus d’informations sur la planification des tâches SageMaker AI, consultez Automatisation de SageMaker AI à l’aide d’Amazon EventBridge.
Rubriques
Planifier un pipeline avec Amazon EventBridge
Pour démarrer l'exécution d'un pipeline avec Amazon CloudWatch Events, vous devez créer une règle EventBridge. Lorsque vous créez une règle pour les événements, vous spécifiez une action cible à effectuer lorsqu’EventBridge reçoit un événement correspondant à la règle. Lorsqu'un événement correspond à la règle, EventBridge envoie l'événement à la cible spécifiée et lance l'action définie dans la règle.
Les tutoriels suivants montrent comment planifier l'exécution d'un pipeline avec EventBridge à l'aide de la console EventBridge ou de la AWS CLI.
Prérequis
-
Un rôle qu’EventBridge peut assumer avec l’autorisation
SageMaker::StartPipelineExecution. Ce rôle peut être créé automatiquement si vous créez une règle à partir de la console EventBridge ; sinon, vous devez créer ce rôle vous-même. Pour obtenir des informations sur la création d’un rôle SageMaker AI, consultez Rôles SageMaker. -
Un pipeline Amazon SageMaker AI à planifier. Pour créer un pipeline Amazon SageMaker AI, consultez Définition d’un pipeline.
Créer une règle de EventBridge à l’aide de la console EventBridge
La procédure suivante montre comment créer une règle EventBridge à l'aide de la console EventBridge.
Accédez à la console EventBridge
. -
Sélectionnez Rules (Règles) sur le côté gauche.
-
Sélectionnez
Create Rule. -
Saisissez un nom et une description pour la règle.
-
Sélectionnez comment vous souhaitez initier cette règle. Vous avez les choix suivants pour votre règle :
-
Modèle d'événement : votre règle est lancée lorsqu'un événement correspondant au modèle se produit. Vous pouvez choisir un modèle prédéfini qui correspond à un certain type d'événement ou créer un modèle personnalisé. Si vous sélectionnez un motif prédéfini, vous pouvez le modifier pour le personnaliser. Pour plus d’informations sur les modèles d’événement, consultez Modèles d’événements dans CloudWatch Events.
-
Planification : votre règle est lancée régulièrement selon une planification spécifiée. Vous pouvez utiliser un programme à taux fixe qui se lance régulièrement pendant un nombre spécifié de minutes, d'heure ou de semaines. Vous pouvez également utiliser une expression cron pour créer un horaire plus précis, comme « le premier lundi de chaque mois à 8 h ». La planification n'est pas prise en charge sur un bus d'événement personnalisé ou partenaire.
-
-
Sélectionnez le bus d’événement de votre choix.
-
Sélectionnez la ou les cibles à appeler lorsqu'un événement correspond à votre modèle d'événement ou lorsque la planification est lancée. Vous pouvez ajouter jusqu'à 5 cibles par règle. Sélectionnez
SageMaker Pipelinedans la liste déroulante cible. -
Sélectionnez le pipeline que vous souhaitez lancer dans la liste déroulante du pipeline.
-
Ajoutez des paramètres à transmettre à l’exécution de votre pipeline à l’aide d’une paire nom et valeur. Les valeurs des paramètres peuvent être statiques ou dynamiques. Pour plus d’informations sur les paramètres de pipeline Amazon SageMaker AI, consultez AWS::Events::Rule SagemakerPipelineParameters.
-
Les valeurs statiques sont transmises à l’exécution du pipeline chaque fois que le pipeline est lancé. Par exemple, si
{"Name": "Instance_type", "Value": "ml.4xlarge"}est spécifié dans la liste des paramètres, il est alors transmis en tant que paramètre dansStartPipelineExecutionRequestchaque fois qu'EventBridge lance le pipeline. -
Les valeurs dynamiques sont spécifiées à l'aide d'un chemin JSON. EventBridge analyse la valeur d'une charge utile d'événement, puis la transmet à l'exécution du pipeline. Par exemple :
$.detail.param.value.
-
-
Sélectionnez le rôle à utiliser pour cette règle. Vous pouvez utiliser un rôle existant ou en créer un.
-
(Facultatif) Ajoutez des balises.
-
Sélectionnez
Createpour finaliser votre règle.
Votre règle est maintenant en vigueur et prête à lancer les exécutions de votre pipeline.
Pour créer une règle EventBridge à l’aide de la AWS CLI
La procédure suivante montre comment créer une règle EventBridge à l’aide de la AWS CLI.
-
Créez une règle à lancer. Lorsque vous créez une règle EventBridge à l'aide de la AWS CLI, vous disposez de deux options pour la façon dont votre règle est lancée, à savoir le modèle d'événement et la planification.
-
Modèle d'événement : votre règle est lancée lorsqu'un événement correspondant au modèle se produit. Vous pouvez choisir un modèle prédéfini qui correspond à un certain type d'événement ou créer un modèle personnalisé. Si vous sélectionnez un motif prédéfini, vous pouvez le modifier pour le personnaliser. Vous pouvez créer une règle avec un modèle d’événement à l’aide de la commande suivante :
aws events put-rule --name<RULE_NAME>----event-pattern<YOUR_EVENT_PATTERN>--description<RULE_DESCRIPTION>--role-arn<ROLE_TO_EXECUTE_PIPELINE>--tags<TAGS> -
Planification : votre règle est lancée régulièrement selon une planification spécifiée. Vous pouvez utiliser un programme à taux fixe qui se lance régulièrement pendant un nombre spécifié de minutes, d'heure ou de semaines. Vous pouvez également utiliser une expression cron pour créer un horaire plus précis, comme « le premier lundi de chaque mois à 8 h ». La planification n'est pas prise en charge sur un bus d'événement personnalisé ou partenaire. Vous pouvez créer une règle avec une planification à l’aide de la commande suivante :
aws events put-rule --name<RULE_NAME>--schedule-expression<YOUR_CRON_EXPRESSION>--description<RULE_DESCRIPTION>--role-arn<ROLE_TO_EXECUTE_PIPELINE>--tags<TAGS>
-
-
Ajoutez une ou plusieurs cibles à appeler lorsqu'un événement correspond à votre modèle d'événement ou lorsque la planification est lancée. Vous pouvez ajouter jusqu’à 5 cibles par règle. Pour chaque cible, vous devez spécifier les éléments suivants :
-
ARN : ARN de ressource de votre pipeline.
-
ARN du rôle : ARN du rôle EventBridge doit assumer pour exécuter le pipeline.
-
Paramètres : paramètres de pipeline Amazon SageMaker AI à transmettre.
-
-
Exécutez la commande suivante pour transmettre un pipeline Amazon SageMaker AI en tant que cible à votre règle en utilisant 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>}]} }]"]
Planification d’un pipeline avec le kit SageMaker Python SDK
Les sections suivantes montrent comment configurer les autorisations pour accéder aux ressources EventBridge et créer la planification de votre pipeline à l’aide du kit SageMaker Python SDK.
Autorisations requises
Vous devez posséder les autorisations nécessaires pour utiliser le planificateur de pipeline. Suivez la procédure ci-dessous pour configurer vos autorisations :
Attachez la politique de privilèges minimaux suivante au rôle IAM utilisé pour créer les déclencheurs du pipeline, ou utilisez la politique gérée par AWS
AmazonEventBridgeSchedulerFullAccess.Établissez une relation d’approbation avec EventBridge en ajoutant le principal de service
scheduler.amazonaws.comà la politique d’approbation de ce rôle. Assurez-vous d’attacher la stratégie d’approbation suivante au rôle d’exécution si vous lancez le bloc-notes dans SageMaker Studio.
Création d’une planification de pipeline
À l’aide du constructeur PipelineSchedule, vous pouvez planifier l’exécution d’un pipeline une fois ou à un intervalle prédéterminé. Une planification de pipeline doit être du type at, rate ou cron. Cet ensemble de types de planification est une extension des options de planification EventBridge. Pour plus d’informations sur la façon d’utiliser la classe PipelineSchedule, consultez sagemaker.workflow.triggers.PipelineSchedulePipelineSchedule.
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" )
Note
Si vous créez une planification ponctuelle et que vous devez accéder à l’heure actuelle, utilisez datetime.utcnow() à la place de datetime.now(). Ce dernier ne stocke pas le contexte de fuseau horaire actuel et entraîne la transmission d’une heure incorrecte à EventBridge.
Attachement du déclencheur à votre pipeline
Pour attacher votre PipelineSchedule à votre pipeline, invoquez l’appel put_triggers sur l’objet de pipeline que vous avez créé avec une liste de déclencheurs. Si vous obtenez un ARN de réponse, vous avez correctement créé la planification dans votre compte et EventBridge commence à invoquer le pipeline cible à l’heure ou à la fréquence spécifiée. Vous devez spécifier un rôle doté des autorisations appropriées pour attacher des déclencheurs à un pipeline parent. Si vous n’en fournissez pas, Pipelines récupère le rôle par défaut utilisé pour créer le pipeline à partir du fichier de configuration.
L’exemple suivant montre comment attacher une planification à un 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>)
Description des déclencheurs actuels
Pour extraire des informations sur les déclencheurs de pipeline que vous avez créés, vous pouvez invoquer l’API describe_trigger() avec le nom du déclencheur. Cette commande renvoie des détails sur l’expression de planification créée, tels que son heure de début, son état activé et d’autres informations utiles. L’extrait de code suivant montre un exemple d’invocation :
scheduled_pipeline.describe_trigger(name="<schedule-name>")
Nettoyage des ressources des déclencheurs
Avant de supprimer votre pipeline, nettoyez les déclencheurs existants pour éviter une fuite de ressources dans votre compte. Vous devez supprimer les déclencheurs avant de détruire le pipeline parent. Vous pouvez supprimer vos déclencheurs en transmettant la liste des noms de déclencheurs à l’API delete_triggers. L’extrait de code suivant montre comment supprimer des déclencheurs.
pipeline.delete_triggers(trigger_names=["<schedule-name>"])
Note
Tenez compte des limitations suivantes lorsque vous supprimez vos déclencheurs :
L’option permettant de supprimer les déclencheurs en spécifiant les noms des déclencheurs n’est disponible que dans le kit SageMaker Python SDK. La suppression du pipeline dans l’interface de ligne de commande ou dans un appel d’API
DeletePipelinene supprime pas vos déclencheurs. Par conséquent, les déclencheurs deviennent orphelins et SageMaker AI tente de démarrer une exécution pour un pipeline qui n’existe pas.De même, si vous utilisez une autre session de bloc-notes ou si vous avez déjà supprimé la cible du pipeline, nettoyez les planifications orphelines via l’interface de ligne de commande
du planificateur ou la console EventBridge.