本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
选择性执行管道步骤
当你使用 Pipelines 创建工作流程和编排机器学习训练步骤时,你可能需要进行多个实验阶段。您可能只想重复某些步骤,而不是每次都运行完整的管道。使用 Pipelines,您可以有选择地执行工作流步骤。这有助于优化您的机器学习训练。选择性执行在以下情况下很有用:
您想使用更新的实例类型、超参数或其他变量重新启动特定步骤,同时保留上游步骤中的参数。
您的管道未能完成一个中间步骤。执行过程中的先前步骤(如数据准备或特征提取)的重新运行成本很高。您可能需要引入一个修复程序,并手动重新运行某些步骤来完成管道。
使用选择性执行,您可以选择运行任何步骤子集,前提是这些步骤与管道的有向无环图 (DAG) 相连。以下DAG显示了管道工作流程示例:
您可以选择步骤AbaloneTrain
和AbaloneEval
选择性执行,但不能只选择AbaloneTrain
和AbaloneMSECond
步骤,因为这些步骤在中没有关联DAG。对于工作流程中未选定的步骤,选择性执行会重复使用参考管道执行的输出,而不是重新运行这些步骤。此外,处于选定步骤下游的非选定步骤不会在选择性执行中运行。
如果您选择在管道中运行中间步骤的子集,则您的步骤可能取决于之前的步骤。 SageMaker 需要一个参考管道执行来为这些依赖项提供资源。例如,如果您选择运行步骤AbaloneTrain
和AbaloneEval
,则需要该AbaloneProcess
步骤的输出。您可以提供参考执行,ARN也可以直接 SageMaker 使用最新的管道执行(这是默认行为)。如果你有引用执行,你也可以从引用运行中构建运行时参数,并将它们提供给带覆盖的选择性执行运行。有关详细信息,请参阅重复使用参考执行中的运行时参数值。
详细而言,您可以为使用运行的选择性执行管道提供配置SelectiveExecutionConfig
。如果包含供参考ARN的管道执行(带source_pipeline_execution_arn
参数),则 SageMaker使用您提供的管道执行中前一步的依赖关系。如果未包含ARN且存在最新的管道执行,则默认情况下会将其 SageMaker 用作参考。如果您不包含ARN且不 SageMaker 想使用最新的管道执行,请将设置reference_latest_execution
为False
。 SageMaker 最终用作参考的管道执行,无论是最新的还是用户指定的,都必须处于Success
或Failed
状态。
下表汇总了如何 SageMaker 选择引用执行。
source_pipeline_execution_arn 参数值 |
reference_latest_execution 参数值 |
使用的参考执行 |
---|---|---|
一条管道 ARN |
|
指定的管道 ARN |
一条管道 ARN |
|
指定的管道 ARN |
null 或未指定 |
|
最新的管道执行 |
null 或未指定 |
|
无 - 在这种情况下,请选择没有上游依赖关系的步骤 |
有关选择性执行配置要求的更多信息,请参阅 s agemaker.workflow.selective_execution_config。 SelectiveExecutionConfig
以下讨论包括适用于一些情况的示例,这些情况是:您要指定管道参考执行;使用最新的管道执行作为参考;或者在没有参考管道执行的情况下运行选择性执行。
使用用户指定的管道参考运行选择性执行
以下示例演示了如何选择性地执行这些步骤AbaloneTrain
并AbaloneEval
使用参考管道执行。
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, )
以最新管道执行作为参考的选择性执行
以下示例演示了如何选择性地执行这些步骤,AbaloneTrain
并AbaloneEval
使用最新的管道执行作为参考。由于默认情况下 SageMaker 使用最新的管道执行,因此您可以选择将reference_latest_execution
参数设置为True
。
# 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, )
无参考管道的选择性执行
以下示例演示了在AbaloneTrain
不提供参考的情况下选择性地执行这些步骤AbaloneProcess
,ARN并关闭了使用最新运行的管道作为参考的选项。 SageMaker 允许此配置,因为这个步骤子集不依赖于之前的步骤。
# 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, )
重复使用参考执行中的运行时参数值
您可以使用 build_parameters_from_execution
从参考管道执行中构建参数,并将结果提供给选择性执行管道。您可以使用参考执行中的原始参数,也可以使用 parameter_value_overrides
参数应用任何覆盖。
以下示例说明了如何从参考执行构建参数以及如何对 MseThreshold
参数应用覆盖。
# 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 )