Selektive Ausführung von Pipeline-Schritten - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Selektive Ausführung von Pipeline-Schritten

Wenn Sie SageMaker 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 auszuführen, möchten Sie möglicherweise nur bestimmte Schritte wiederholen. Mit SageMaker 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:

Ein azyklisch gerichtetes Diagramm (DAG) einer Beispielpipeline.

Sie können Schritte AbaloneTrain und AbaloneEval in einer selektiven Ausführung auswählen, aber Sie können nicht nur AbaloneTrain und 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 erneut 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, hängen Ihre Schritte möglicherweise von den vorherigen Schritten ab. SageMaker 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 auszuführenAbaloneEval, benötigen Sie die Ausgaben des AbaloneProcess Schritts. Sie können entweder einen Referenzausführungs-ARN oder direkt angeben SageMaker , um 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 Überschreibungen für Ihren ausgewählten Ausführungslauf bereitstellen. Details hierzu finden Sie unter Wiederverwenden von Laufzeitparameterwerten aus einer Referenzausführung.

Im Detail stellen Sie eine Konfiguration für Ihre Pipeline zur selektiven Ausführung bereit, die Sie verwendenSelectiveExecutionConfig. Wenn Sie einen ARN für eine Referenz-Pipeline-Ausführung (mit dem source_pipeline_execution_arn Argument) angeben, SageMaker verwendet die Abhängigkeiten des vorherigen Schritts aus der von Ihnen angegebenen Pipeline-Ausführung. Wenn Sie keinen ARN angeben und eine letzte Pipeline-Ausführung vorhanden ist, wird diese standardmäßig als Referenz SageMaker verwendet. Wenn Sie keinen ARN angeben und Ihre letzte Pipeline-Ausführung nicht verwenden SageMaker möchten, legen Sie den Wert reference_latest_execution auf festFalse. Die Pipeline-Ausführung, die SageMaker letztendlich als Referenz verwendet wird, unabhängig davon, ob es sich um die neueste oder die vom Benutzer angegebene handelt, muss sich im Failed Status Success oder befinden.

In der folgenden Tabelle wird zusammengefasst, wie eine SageMaker Referenzausführung ausgewählt wird.

Der Wert des Arguments source_pipeline_execution_arn Der Wert des Arguments reference_latest_execution Die verwendete Referenzausführung
Ein Pipeline-ARN

True oder nicht spezifiziert

Der angegebene Pipeline-ARN

Ein Pipeline-ARN

False

Der angegebene Pipeline-ARN

null oder nicht spezifiziert

True oder nicht spezifiziert

Die letzte Pipeline-Ausführung

null oder nicht spezifiziert

False

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 unter sagemaker.workflow.selective_execution_config. SelectiveExecutionDokumentation zur Config.

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 zeigt eine selektive Ausführung der Schritte AbaloneTrain und die AbaloneEval 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 zeigt eine selektive Ausführung der Schritte AbaloneTrain und die AbaloneEval Verwendung der letzten Pipeline-Ausführung als Referenz. Da standardmäßig die letzte Pipeline-Ausführung SageMaker verwendet wird, können Sie das reference_latest_execution Argument optional auf setzenTrue.

# 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 AbaloneTrain ohne Angabe eines Referenz-ARN und ohne Ausschalten der Option, den letzten Pipeline-Lauf als Referenz zu verwenden. SageMaker ermöglicht diese Konfiguration, da diese Teilmenge von Schritten nicht von vorherigen Schritten abhängt.

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