Exécution sélective des étapes du pipeline - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécution sélective des étapes du pipeline

Lorsque vous utilisez SageMaker Pipelines pour créer des flux de travail et orchestrer vos étapes de formation au machine learning, vous devrez peut-être entreprendre plusieurs phases d'expérimentation. Au lieu d'exécuter le pipeline complet à chaque fois, vous souhaiterez peut-être ne répéter que certaines étapes. Avec SageMaker Pipelines, vous pouvez exécuter des étapes de pipeline de manière sélective. Cela permet d'optimiser votre entraînement au ML. L'exécution sélective est utile dans les scénarios suivants :

  • Vous souhaitez redémarrer une étape spécifique avec un type d'instance, des hyperparamètres ou d'autres variables mis à jour tout en conservant les paramètres des étapes en amont.

  • Votre pipeline échoue à une étape intermédiaire. Les étapes précédentes de l'exécution, telles que la préparation des données ou l'extraction des fonctionnalités, sont coûteuses à réexécuter. Vous devrez peut-être introduire un correctif et réexécuter certaines étapes manuellement pour terminer le pipeline.

En utilisant l'exécution sélective, vous pouvez choisir d'exécuter n'importe quel sous-ensemble d'étapes à condition qu'elles soient connectées dans le graphe acyclique dirigé (DAG) de votre pipeline. Le DAG suivant montre un exemple de flux de travail de pipeline :

Un graphe acyclique dirigé (DAG) d'un exemple de pipeline.

Vous pouvez sélectionner des étapes AbaloneTrain et AbaloneEval dans le cadre d'une exécution sélective, mais vous ne pouvez pas sélectionner uniquement AbaloneTrain des AbaloneMSECond étapes car ces étapes ne sont pas connectées dans le DAG. Pour les étapes non sélectionnées du flux de travail, l'exécution sélective réutilise les sorties d'une exécution de pipeline de référence plutôt que de réexécuter les étapes. De même, les étapes non sélectionnées situées en aval des étapes sélectionnées ne sont pas exécutées dans le cadre d'une exécution sélective.

Si vous choisissez d'exécuter un sous-ensemble d'étapes intermédiaires dans votre pipeline, vos étapes peuvent dépendre des étapes précédentes. SageMaker a besoin d'une exécution de pipeline de référence à partir de laquelle approvisionner ces dépendances. Par exemple, si vous choisissez d'exécuter les étapes AbaloneTrain et AbaloneEval que vous avez besoin des résultats de l'AbaloneProcessétape. Vous pouvez soit fournir un ARN d'exécution de référence, soit SageMaker demander à utiliser la dernière exécution du pipeline, qui est le comportement par défaut. Si vous avez une exécution de référence, vous pouvez également créer les paramètres d'exécution à partir de votre exécution de référence et les fournir à votre exécution exécutive sélective avec des remplacements. Pour plus de détails, consultez Réutiliser les valeurs des paramètres d'exécution à partir d'une exécution de référence.

En détail, vous fournissez une configuration pour votre pipeline d'exécution sélective exécuté à l'aide deSelectiveExecutionConfig. Si vous incluez un ARN pour l'exécution d'un pipeline de référence (avec l'source_pipeline_execution_arnargument), SageMaker utilise les dépendances de l'étape précédente par rapport à l'exécution du pipeline que vous avez fournie. Si vous n'incluez pas d'ARN et qu'il existe une dernière exécution de pipeline, SageMaker utilisez-le comme référence par défaut. Si vous n'incluez pas d'ARN et que vous ne SageMaker souhaitez pas utiliser votre dernière exécution de pipeline, définissez reference_latest_execution surFalse. L'exécution du pipeline qui est SageMaker finalement utilisée comme référence, qu'elle soit la plus récente ou spécifiée par l'utilisateur, doit être en Success ou en Failed état.

Le tableau suivant récapitule le mode de sélection SageMaker d'une exécution de référence.

La valeur de source_pipeline_execution_arn l'argument La valeur de reference_latest_execution l'argument L'exécution de référence utilisée
Un ARN de pipeline

Trueou non précisé

L'ARN du pipeline spécifié

Un ARN de pipeline

False

L'ARN du pipeline spécifié

nullou non précisé

Trueou non précisé

La dernière exécution du pipeline

nullou non précisé

False

Aucune : dans ce cas, sélectionnez des étapes sans dépendances en amont

Pour plus d'informations sur les exigences de configuration de l'exécution sélective, consultez le document sagemaker.workflow.selective_execution_config. SelectiveExecutionDocumentation de configuration.

La discussion suivante inclut des exemples de cas dans lesquels vous souhaitez spécifier une exécution de référence de pipeline, utiliser la dernière exécution de pipeline comme référence ou exécuter une exécution sélective sans exécution de pipeline de référence.

Exécution sélective avec une référence de pipeline spécifiée par l'utilisateur

L'exemple suivant illustre une exécution sélective des étapes AbaloneTrain et l'AbaloneEvalutilisation d'une exécution de pipeline de référence.

from sagemaker.workflow.selective_execution_config import SelectiveExecutionConfig selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef", selected_steps=["AbaloneTrain", "AbaloneEval"] ) selective_execution = pipeline.start( execution_display_name=f"Sample-Selective-Execution-1", parameters={"MaxDepth":6, "NumRound":60}, selective_execution_config=selective_execution_config, )

Exécution sélective avec la dernière exécution du pipeline comme référence

L'exemple suivant montre une exécution sélective des étapes AbaloneTrain et l'AbaloneEvalutilisation de la dernière exécution du pipeline comme référence. Comme il SageMaker utilise par défaut la dernière exécution du pipeline, vous pouvez éventuellement définir l'reference_latest_executionargument surTrue.

# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn. selective_execution_config = SelectiveExecutionConfig( selected_steps=["AbaloneTrain", "AbaloneEval"], # optional reference_latest_execution=True ) # Start pipeline execution without source_pipeline_execution_arn pipeline.start( execution_display_name=f"Sample-Selective-Execution-1", parameters={"MaxDepth":6, "NumRound":60}, selective_execution_config=selective_execution_config, )

Exécution sélective sans pipeline de référence

L'exemple suivant montre une exécution sélective des étapesAbaloneProcess, AbaloneTrain sans fournir d'ARN de référence et en désactivant l'option permettant d'utiliser le dernier pipeline exécuté comme référence. SageMaker autorise cette configuration puisque ce sous-ensemble d'étapes ne dépend pas des étapes précédentes.

# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn. selective_execution_config = SelectiveExecutionConfig( selected_steps=["AbaloneProcess", "AbaloneTrain"], reference_latest_execution=False ) # Start pipeline execution without source_pipeline_execution_arn pipeline.start( execution_display_name=f"Sample-Selective-Execution-1", parameters={"MaxDepth":6, "NumRound":60}, selective_execution_config=selective_execution_config, )

Réutiliser les valeurs des paramètres d'exécution à partir d'une exécution de référence

Vous pouvez créer les paramètres à partir de l'exécution de votre pipeline de référence à l'aide build_parameters_from_execution de votre pipeline d'exécution sélective et fournir le résultat à celui-ci. Vous pouvez utiliser les paramètres d'origine de l'exécution de référence ou appliquer des remplacements à l'aide de l'parameter_value_overridesargument.

L'exemple suivant montre comment créer des paramètres à partir d'une exécution de référence et appliquer une dérogation au MseThreshold paramètre.

# Prepare a new selective execution. selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef", selected_steps=["AbaloneTrain", "AbaloneEval", "AbaloneMSECond"], ) # Define a new parameters list to test. new_parameters_mse={ "MseThreshold": 5, } # Build parameters from reference execution and override with new parameters to test. new_parameters = pipeline.build_parameters_from_execution( pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef", parameter_value_overrides=new_parameters_mse ) # Start pipeline execution with new parameters. execution = pipeline.start( selective_execution_config=selective_execution_config, parameters=new_parameters )