Selektive Ausführung von Pipeline-Schritten
Wenn Sie Pipelines verwenden, um Workflows zu erstellen und Ihre ML-Trainingsschritte zu orchestrieren, müssen Sie möglicherweise mehrere Experimentierphasen durchführen. Anstatt jedes Mal die gesamte Pipeline laufen zu lassen, möchten Sie vielleicht nur bestimmte Schritte wiederholen. Mit Pipelines können Sie Pipeline-Schritte selektiv ausführen. Dies hilft Ihnen, Ihr ML-Training zu optimieren. Die selektive Ausführung ist in den folgenden Szenarien nützlich:
Sie möchten einen bestimmten Schritt mit aktualisiertem Instance-Typ, Hyperparametern oder anderen Variablen neu starten und dabei die Parameter der Upstream-Schritte beibehalten.
Ihre Pipeline schlägt bei einem Zwischenschritt fehl. Frühere Schritte in der Ausführung, wie Datenvorbereitung oder Merkmalsextraktion, sind kostspielig, wenn sie erneut ausgeführt werden. Möglicherweise müssen Sie einen Fix einführen und bestimmte Schritte manuell erneut ausführen, um die Pipeline abzuschließen.
Bei der selektiven Ausführung können Sie eine beliebige Teilmenge von Schritten ausführen, sofern sie im Directed Acyclic Graph (DAG) Ihrer Pipeline miteinander verbunden sind. Die folgende DAG zeigt ein Beispiel für einen Pipeline-Workflow:
Sie können Schritte AbaloneTrain und AbaloneEval in einer selektiven Ausführung auswählen, aber Sie können nicht nur AbaloneTrain die AbaloneMSECond Schritte auswählen, da diese Schritte in der DAG nicht miteinander verbunden sind. Bei nicht ausgewählten Schritten im Workflow werden bei der selektiven Ausführung die Ausgaben einer Referenz-Pipeline-Ausführung wiederverwendet, anstatt die Schritte neu auszuführen. Außerdem werden nicht ausgewählte Schritte, die den ausgewählten Schritten nachgelagert sind, nicht in einer selektiven Ausführung ausgeführt.
Wenn Sie sich dafür entscheiden, eine Teilmenge von Zwischenschritten in Ihrer Pipeline auszuführen, können Ihre Schritte von vorherigen Schritten abhängig sein. SageMaker AI benötigt eine Referenz-Pipeline-Ausführung, von der aus diese Abhängigkeiten bereitgestellt werden können. Wenn Sie sich beispielsweise dafür entscheiden, die Schritte AbaloneTrain und AbaloneEval auszuführen, benötigen Sie die Ausgaben aus Schritt AbaloneProcess. Sie können entweder einen Referenzausführungs-ARN angeben oder SageMaker AI anweisen, die neueste Pipeline-Ausführung zu verwenden, was das Standardverhalten ist. Wenn Sie über eine Referenzausführung verfügen, können Sie die Laufzeitparameter auch aus Ihrem Referenzlauf erstellen und sie mit allen Überschreibungen für Ihren ausgewählten Ausführungslauf bereitstellen. Details hierzu finden Sie unter Wiederverwenden von Laufzeitparameterwerten aus einer Referenzausführung.
Im Einzelnen geben Sie eine Konfiguration für Ihre selektive Ausführungspipeline an, die mit SelectiveExecutionConfig ausgeführt wird. Wenn Sie einen ARN für eine Referenz-Pipeline-Ausführung (mit dem source_pipeline_execution_arn-Argument) angeben, verwendet SageMaker AI die vorherigen Schrittabhängigkeiten aus der von Ihnen angegebenen Pipeline-Ausführung. Wenn Sie keinen ARN angeben und eine aktuelle Pipeline-Ausführung vorhanden ist, verwendet SageMaker AI diese standardmäßig als Referenz. Wenn Sie keinen ARN angeben und nicht möchten, dass SageMaker Ihre letzte Pipeline-Ausführung verwendet, setzen Sie reference_latest_execution auf False. Die Pipeline-Ausführung, die SageMaker AI letztendlich als Referenz verwendet, unabhängig davon, ob es sich um die neueste oder die vom Benutzer angegebene handelt, muss sich im Status Success oder Failed befinden.
Die folgende Tabelle fasst zusammen, wie SageMaker AI eine Referenzausführung auswählt.
Der Wert des Arguments source_pipeline_execution_arn |
Der Wert des Arguments reference_latest_execution |
Die verwendete Referenzausführung |
|---|---|---|
| Ein Pipeline-ARN |
|
Der angegebene Pipeline-ARN |
| Ein Pipeline-ARN |
|
Der angegebene Pipeline-ARN |
null oder nicht spezifiziert |
|
Die letzte Pipeline-Ausführung |
null oder nicht spezifiziert |
|
Keine – Wählen Sie in diesem Fall Schritte ohne Upstream-Abhängigkeiten |
Weitere Informationen zu den Konfigurationsanforderungen für die selektive Ausführung finden Sie in der Dokumentation zu SageMaker.Workflow.selective_execution_config.SelectiveExecutionConfig
Die folgende Beschreibung enthält Beispiele für die Fälle, in denen Sie eine Pipeline-Referenzausführung angeben, die neueste Pipeline-Ausführung als Referenz verwenden oder eine selektive Ausführung ohne Referenz-Pipeline-Ausführung ausführen möchten.
Selektive Ausführung mit einer benutzerdefinierten Pipeline-Referenz
Das folgende Beispiel veranschaulicht eine selektive Ausführung der Schritte AbaloneTrain und AbaloneEval unter Verwendung einer Referenz-Pipeline-Ausführung.
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, )
Selektive Ausführung mit der letzten Pipeline-Ausführung als Referenz
Das folgende Beispiel veranschaulicht eine selektive Ausführung der Schritte AbaloneTrain und AbaloneEval unter Verwendung der letzten Pipeline-Ausführung als Referenz. Da SageMaker AI standardmäßig die neueste Pipeline-Ausführung verwendet, können Sie das reference_latest_execution-Argument optional auf True setzen.
# 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, )
Selektive Ausführung ohne Referenz-Pipeline
Das folgende Beispiel zeigt eine selektive Ausführung der Schritte AbaloneProcess und AbaloneTrain, ohne einen Referenz-ARN anzugeben und ohne die Option zu deaktivieren, die letzte Pipeline-Ausführung als Referenz zu verwenden. SageMaker AI erlaubt diese Konfiguration, da diese Teilmenge von Schritten nicht von vorherigen Schritten abhängig ist.
# 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, )
Wiederverwenden von Laufzeitparameterwerten aus einer Referenzausführung
Sie können die Parameter aus der Ausführung Ihrer Referenzpipeline mithilfe von build_parameters_from_execution erstellen und das Ergebnis an Ihre selektive Ausführungspipeline übergeben. Sie können die ursprünglichen Parameter aus der Referenzausführung verwenden oder mithilfe des parameter_value_overrides Arguments beliebige Überschreibungen anwenden.
Das folgende Beispiel zeigt, wie Sie Parameter aus einer Referenzausführung erstellen und eine Überschreibung für den MseThreshold Parameter anwenden.
# 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 )