Esecuzione selettiva di fasi della pipeline - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esecuzione selettiva di fasi della pipeline

Poiché utilizzi SageMaker Pipelines per creare flussi di lavoro e orchestrare le fasi di formazione sul machine learning, potresti dover intraprendere più fasi di sperimentazione. Invece di eseguire ogni volta l'intera pipeline, potresti voler ripetere solo determinati passaggi. Con SageMaker Pipelines, puoi eseguire i passaggi della pipeline in modo selettivo. Questo aiuta a ottimizzare la formazione di machine learning. L'esecuzione selettiva è utile nei seguenti scenari:

  • Desideri riavviare una fase specifica con il tipo di istanza, gli iperparametri o altre variabili aggiornati e mantenendo i parametri delle fasi precedenti.

  • La tua pipeline non riesce in una fase intermedia. Le fasi precedenti dell'esecuzione, come la preparazione dei dati o l'estrazione delle funzionalità, sono costose da rieseguire. Potrebbe essere necessario introdurre una correzione e rieseguire alcune fasi manualmente per completare la pipeline.

Utilizzando l'esecuzione selettiva, è possibile scegliere di eseguire qualsiasi sottoinsieme di fasi purché siano collegate nel grafo aciclico orientato (DAG) della pipeline. Il seguente DAG mostra un esempio di flusso di lavoro della pipeline:

Un grafo aciclico orientato (DAG) di una pipeline di esempio.

È possibile selezionare i passaggi AbaloneTrain e AbaloneEval in un'esecuzione selettiva, ma non è possibile selezionare solo AbaloneTrain i AbaloneMSECond passaggi finali perché questi passaggi non sono collegati nel DAG. Per le fasi non selezionate del flusso di lavoro, l'esecuzione selettiva riutilizza gli output dell'esecuzione di una pipeline di riferimento anziché eseguire nuovamente i passaggi. Inoltre, le fasi non selezionate che sono a valle delle fasi selezionate non vengono eseguite in un'esecuzione selettiva.

Se scegli di eseguire un sottoinsieme di passaggi intermedi nella tua pipeline, i passaggi potrebbero dipendere dai passaggi precedenti. SageMaker necessita dell'esecuzione di una pipeline di riferimento da cui attingere queste dipendenze. Ad esempio, se scegli di eseguire i passaggi AbaloneTrain eAbaloneEval, hai bisogno degli output del passaggio. AbaloneProcess È possibile fornire un ARN di esecuzione di riferimento o SageMaker utilizzare direttamente l'ultima esecuzione della pipeline, che è il comportamento predefinito. Se disponete di un'esecuzione di riferimento, potete anche creare i parametri di runtime a partire dall'esecuzione di riferimento e fornirli all'esecuzione esecutiva selettiva con delle sostituzioni. Per informazioni dettagliate, vedi Riutilizzo dei valori dei parametri di runtime da un'esecuzione di riferimento.

In dettaglio, fornite una configurazione per l'esecuzione selettiva della pipeline di esecuzione utilizzando. SelectiveExecutionConfig Se includi un ARN per l'esecuzione di una pipeline di riferimento (con l'source_pipeline_execution_arnargomento), SageMaker utilizza le dipendenze del passaggio precedente dall'esecuzione della pipeline che hai fornito. Se non includi un ARN ed esiste un'ultima esecuzione della pipeline, la SageMaker utilizza come riferimento per impostazione predefinita. Se non includi un ARN e non desideri SageMaker utilizzare l'ultima esecuzione della pipeline, imposta su. reference_latest_execution False L'esecuzione della pipeline utilizzata in SageMaker ultima analisi come riferimento, sia essa l'ultima o specificata dall'utente, deve essere attiva o in stato. Success Failed

La tabella seguente riassume come SageMaker scegliere un'esecuzione di riferimento.

Il valore dell'argomento source_pipeline_execution_arn Il valore dell'argomento reference_latest_execution L'esecuzione di riferimento utilizzata
Un ARN della pipeline

True o non specificato

L'ARN della pipeline specificata

Un ARN della pipeline

False

L'ARN della pipeline specificata

null o non specificato

True o non specificato

L'ultima esecuzione della pipeline

null o non specificato

False

Nessuna: in questo caso, seleziona le fasi senza dipendenze a monte

Per ulteriori informazioni sui requisiti di configurazione dell'esecuzione selettiva, consulta sagemaker.workflow.selective_execution_config. SelectiveExecutionDocumentazione di Config.

La discussione seguente include esempi per i casi in cui si desidera specificare un'esecuzione di riferimento della pipeline, utilizzare l'ultima esecuzione della pipeline come riferimento o eseguire un'esecuzione selettiva senza un'esecuzione della pipeline di riferimento.

Esecuzione selettiva con un riferimento di pipeline specificato dall'utente

L'esempio seguente dimostra un'esecuzione selettiva dei passaggi AbaloneTrain e l'AbaloneEvalutilizzo di un'esecuzione della pipeline di riferimento.

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, )

Esecuzione selettiva con l'ultima esecuzione della pipeline come riferimento

L'esempio seguente dimostra un'esecuzione selettiva dei passaggi AbaloneTrain e l'AbaloneEvalutilizzo dell'ultima esecuzione della pipeline come riferimento. Poiché SageMaker utilizza l'ultima esecuzione della pipeline per impostazione predefinita, è possibile facoltativamente impostare l'argomento su. 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, )

Esecuzione selettiva senza una pipeline di riferimento

L'esempio seguente dimostra un'esecuzione selettiva dei passaggi AbaloneTrain senza fornire un ARN di riferimento AbaloneProcess e disattivare l'opzione per utilizzare l'ultima esecuzione della pipeline come riferimento. SageMaker consente questa configurazione poiché questo sottoinsieme di passaggi non dipende dai passaggi precedenti.

# 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, )

Riutilizzo dei valori dei parametri di runtime da un'esecuzione di riferimento

È possibile creare i parametri dall'esecuzione della pipeline di riferimento utilizzando build_parameters_from_execution e fornire il risultato alla pipeline di esecuzione selettiva. È possibile utilizzare i parametri originali dell'esecuzione di riferimento o applicare eventuali sostituzioni utilizzando l'argomento parameter_value_overrides.

L'esempio seguente mostra come creare parametri da un'esecuzione di riferimento e applicare una sostituzione per il parametro 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 )