Execução seletiva das etapas do pipeline - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Execução seletiva das etapas do pipeline

Ao usar o SageMaker Pipelines para criar fluxos de trabalho e orquestrar suas etapas de treinamento de ML, talvez seja necessário realizar várias fases de experimentação. Em vez de executar todo o pipeline do início ao fim, talvez você queira iterar apenas em etapas específicas. SageMaker O Pipelines oferece suporte à execução seletiva das etapas do pipeline para ajudar você 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 recursos, 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:

Um gráfico acíclico dirigido (DAG, directed acyclic graph) de um exemplo de pipeline.

Você pode selecionar etapas AbaloneTrain e AbaloneEval em uma execução seletiva, mas não pode selecionar apenas AbaloneTrain e etapas AbaloneMSECond para executar uma execução seletiva 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 recalcular as etapas. 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 ter dependências das etapas iniciais. SageMaker precisa de uma execução de pipeline de referência a partir da qual fornecer recursos a essas dependências. Por exemplo, se você optar por executar as etapas AbaloneTrain e AbaloneEval precisar das garantias de saída para a etapa AbaloneProcess a partir de uma execução de pipeline de referência. Você pode fornecer um ARN de execução de referência ou SageMaker direcionar para 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 tempo de execução de sua execução de referência e fornecê-los à sua execução executiva seletiva com quaisquer substituições. Para obter detalhes, consulte Reutilize valores de parâmetros de tempo de execução de uma execução de referência.

Em detalhes, você especifica uma configuração para que seu pipeline de execução seletiva seja executado usando SelectiveExecutionConfig. Se você especificar um ARN para a execução de um pipeline de referência (com o source_pipeline_execution_arn argumento), SageMaker usa as dependências da etapa upstream da execução do pipeline especificado. Se você não especificar um ARN e existir uma execução mais recente do pipeline, SageMaker usa a execução mais recente do pipeline como referência por padrão. Se você não especificar um ARN e não quiser usar SageMaker a execução mais recente do pipeline, reference_latest_execution defina como. False A execução do pipeline que, SageMaker em última análise, usa como referência, seja a mais recente ou especificada pelo usuário, deve estar em Success ou Failed estado.

A tabela a seguir resume como SageMaker escolhe uma execução de referência com base em seus argumentos para. SelectiveExecutionConfig

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

True ou não especificado

Esse é o ARN do pipeline especificado

Um ARN de pipeline

False

Esse é o ARN do pipeline especificado

null ou não especificado

True ou não especificado

A última execução do pipeline

null ou não especificado

False

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 sagemaker.workflow.selective_execution_config. SelectiveExecutionConfigdocumentação.

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 para executar novamente AbaloneTrain e, AbaloneEval no mesmo pipeline, executar novamente 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 para executar novamente AbaloneTrain e, AbaloneEval no mesmo pipeline, executar novamente usando a execução mais recente do pipeline como referência. Como SageMaker usa a execução mais recente do pipeline por padrão, você pode, opcionalmente, definir o reference_latest_execution argumento 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 para executar novamente AbaloneProcess e AbaloneTrain no mesmo pipeline, sem fornecer um ARN de referência e proibindo o uso da última execução do pipeline como referência. SageMaker permite essa configuração, pois esse subconjunto de etapas não tem dependências upstream.

# 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 tempo de execução 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 parameter_value_overrides argumento.

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 )