Execução seletiva das etapas do pipeline
Ao usar o Pipelines para criar fluxos de trabalho e orquestrar suas etapas de treinamento de ML, talvez seja necessário passar por várias fases de experimentação. Em vez de executar o pipeline completo a cada vez, talvez você queira repetir apenas algumas etapas. Com o Pipelines, você pode executar as etapas do pipeline de forma seletiva. Isso ajuda a otimizar seu treinamento de ML. A execução seletiva é útil nos seguintes cenários:
Você quer reiniciar uma etapa específica com o tipo de instância, hiperparâmetros ou outras variáveis atualizados e, ao mesmo tempo, manter os parâmetros das etapas iniciais.
Seu pipeline falha em uma etapa intermediária. As etapas anteriores da execução, como preparação de dados ou extração de atributos, são caras de serem executadas novamente. Talvez seja necessário introduzir uma correção e executar novamente algumas etapas manualmente para concluir o pipeline.
Usando a execução seletiva, você pode optar por executar qualquer subconjunto de etapas, desde que elas estejam conectadas no gráfico acíclico direcionado (DAG) do seu pipeline. O DAG a seguir mostra um exemplo de fluxo de trabalho de pipeline:
Você pode selecionar etapas AbaloneTrain
e AbaloneEval
em uma execução seletiva, mas não pode selecionar apenas AbaloneTrain
e AbaloneMSECond
, porque essas etapas não estão conectadas no DAG. Para etapas não selecionadas no fluxo de trabalho, a execução seletiva reutiliza as saídas da execução de um pipeline de referência em vez de executar as etapas novamente. Além disso, as etapas não selecionadas que estão a jusante das etapas selecionadas não são executadas em uma execução seletiva.
Se você optar por executar um subconjunto de etapas intermediárias em seu pipeline, suas etapas podem depender das etapas anteriores. O SageMaker precisa de uma execução de pipeline de referência para fornecer recursos a essas dependências. Por exemplo, se você optar por executar as etapas AbaloneTrain
e AbaloneEval
, você precisa das saídas da etapa AbaloneProcess
. Você pode fornecer um ARN de execução de referência ou orientar o SageMaker a usar a execução mais recente do pipeline, que é o comportamento padrão. Se você tiver uma execução de referência, também poderá criar os parâmetros de runtime de sua execução de referência e fornecê-los à sua execução executiva seletiva com substituições. Para obter detalhes, consulte Reutilize valores de parâmetros de runtime de uma execução de referência.
Em detalhes, você especifica uma configuração para sua execução de pipeline de execução seletiva usando SelectiveExecutionConfig
. Se você incluir um ARN para a execução de um pipeline de referência (com o argumento source_pipeline_execution_arn
), o SageMaker usará as dependências da etapa anterior da execução de pipeline que você forneceu. Se você não incluir um ARN e existir uma execução mais recente do pipeline, o SageMaker usará isso como referência por padrão. Se você não incluir um ARN e não quiser que o SageMaker use sua última execução de pipeline, defina reference_latest_execution
como False
. A execução do pipeline que o SageMaker finalmente usa como referência, seja a mais recente ou especificada pelo usuário, deve estar em ou estado Success
ou Failed
.
A tabela a seguir resume como o SageMaker escolhe uma execução de referência.
O valor do argumento source_pipeline_execution_arn |
O valor do argumento reference_latest_execution |
A execução de referência usada |
---|---|---|
Um ARN de pipeline |
|
Esse é o ARN do pipeline especificado |
Um ARN de pipeline |
|
Esse é o ARN do pipeline especificado |
null ou não especificado |
|
A última execução do pipeline |
null ou não especificado |
|
Nenhuma: nesse caso, selecione etapas sem dependências upstream |
Para obter mais informações sobre os requisitos de configuração de execução seletiva, consulte a documentação do SageMaker.workflow.selective_execution_config.selectiveExecutionConfig
A discussão a seguir inclui exemplos dos casos em que você deseja especificar uma execução de referência de pipeline, usar a execução mais recente do pipeline como referência ou executar a execução seletiva sem uma execução de pipeline de referência.
Execução seletiva com uma referência de pipeline especificada pelo usuário
O exemplo a seguir demonstra o uso da execução seletiva das etapas AbaloneTrain
e AbaloneEval
usando uma execução de pipeline de referência.
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, )
Execução seletiva com a execução mais recente do pipeline como referência
O exemplo a seguir demonstra o uso da execução seletiva das etapas AbaloneTrain
e AbaloneEval
usando a execução mais recente do pipeline como referência. Como o SageMaker usa a execução mais recente do pipeline por padrão, você pode, opcionalmente, definir o argumento reference_latest_execution
como 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, )
Execução seletiva sem um pipeline de referência
O exemplo a seguir demonstra o uso da execução seletiva das etapas AbaloneProcess
e AbaloneTrain
sem fornecer um ARN de referência e desativando a opção de usar a última execução do pipeline como referência. O SageMaker permite essa configuração, pois esse subconjunto de etapas não dependem de etapas anteriores.
# 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, )
Reutilize valores de parâmetros de runtime de uma execução de referência
Você pode criar os parâmetros da execução do pipeline de referência usando build_parameters_from_execution
e fornecer o resultado ao pipeline de execução seletiva. Você pode usar os parâmetros originais da execução da referência ou aplicar quaisquer substituições usando o argumento parameter_value_overrides
.
O exemplo a seguir mostra como criar parâmetros a partir de uma execução de referência e aplicar uma substituição ao parâmetro 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 )