Ejecución selectiva de los pasos de la canalización - Amazon SageMaker AI

Ejecución selectiva de los pasos de la canalización

A medida que utilice Canalizaciones para crear flujos de trabajo y orquestar sus pasos de entrenamiento de ML, es posible que necesite realizar varias fases de experimentación. En lugar de ejecutar el proceso completo a la vez, es posible que solo desee repetir ciertos pasos. Con Canalizaciones, puede ejecutar los pasos de la canalización de forma selectiva. Esto ayuda a optimizar su entrenamiento de ML. La ejecución selectiva es útil en los siguientes escenarios:

  • Desea reiniciar un paso específico con el tipo de instancia, los hiperparámetros u otras variables actualizados y, al mismo tiempo, mantener los parámetros de los pasos anteriores.

  • La canalización no supera un paso intermedio. Es caro volver a ejecutar los pasos anteriores de la ejecución, como la preparación de los datos o la extracción de características. Es posible que tenga que introducir una solución y volver a ejecutar algunos pasos manualmente para completar la canalización.

Al utilizar la ejecución selectiva, puede elegir ejecutar cualquier subconjunto de pasos siempre que estén conectados en el gráfico acíclico dirigido (DAG) de su canalización. El siguiente DAG muestra un ejemplo de flujo de trabajo de canalización:

Un gráfico acíclico dirigido (DAG) de una canalización de ejemplo.

Puede seleccionar los pasos AbaloneTrain y AbaloneEval en una ejecución selectiva, pero no puede seleccionar solo los pasos AbaloneTrain y AbaloneMSECond, porque estos pasos no están conectados en el DAG. En el caso de los pasos no seleccionados del flujo de trabajo, la ejecución selectiva reutiliza las salidas de una ejecución de canalización de referencia en lugar de volver a ejecutar los pasos. Además, en una ejecución selectiva, los pasos no seleccionados posteriores a los pasos seleccionados no se ejecutan.

Si elige ejecutar un subconjunto de pasos intermedios de la canalización, es posible que sus pasos dependan de pasos anteriores. SageMaker AI necesita una ejecución de canalización de referencia a partir de la cual pueda dotar de recursos a estas dependencias. Por ejemplo, si decide ejecutar los pasos AbaloneTrain y AbaloneEval, necesita la salida del paso AbaloneProcess. Puede proporcionar un ARN de ejecución de referencia o indicar a SageMaker AI que utilice la última ejecución de la canalización, que es el comportamiento predeterminado. Si tiene una ejecución de referencia, también puede crear parámetros de tiempo de ejecución a partir de la ejecución de referencia y proporcionarlos a la ejecución selectiva con anulaciones. Para obtener más información, consulte Reutilización de los valores de los parámetros de tiempo de ejecución de una ejecución de referencia.

En concreto, proporciona una configuración para la ejecución de la canalización de ejecución selectiva mediante SelectiveExecutionConfig. Si incluye un ARN para una ejecución de la canalización de referencia (con el argumento source_pipeline_execution_arn), SageMaker AI utiliza las dependencias del paso anterior de la ejecución de la canalización que ha proporcionado. Si no incluye un ARN y existe una ejecución de canalización reciente, SageMaker AI la utiliza como referencia de forma predeterminada. Si no incluye un ARN y no quiere que SageMaker AI utilice la ejecución de la canalización más reciente, establezca reference_latest_execution en False. La ejecución de la canalización que SageMaker AI utiliza en última instancia como referencia, ya sea la más reciente o la especificada por el usuario, debe tener el estado Success o Failed.

La siguiente tabla resume cómo SageMaker AI elige una ejecución de referencia.

El valor del argumento source_pipeline_execution_arn El valor del argumento reference_latest_execution La ejecución de referencia utilizada
Un ARN de canalización

True o sin especificar

El ARN de la canalización especificada

Un ARN de canalización

False

El ARN de la canalización especificada

null o sin especificar

True o sin especificar

La ejecución más reciente de la canalización

null o sin especificar

False

Ninguna: en este caso, seleccione los pasos sin dependencias anteriores

Para obtener más información sobre los requisitos de configuración de la ejecución selectiva, consulte la documentación de sagemaker.workflow.selective_execution_config.SelectiveExecutionConfig.

En el siguiente análisis se incluyen ejemplos de los casos en los que desea especificar una ejecución de canalización de referencia, utilizar la ejecución de canalización más reciente como referencia o ejecutar una ejecución selectiva sin una ejecución de canalización de referencia.

Ejecución selectiva con una referencia de canalización especificada por el usuario

En el siguiente ejemplo, se muestra una ejecución selectiva para volver de los pasos AbaloneTrain y AbaloneEval utilizando como referencia la ejecución de una canalización.

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

Ejecución selectiva con la ejecución de canalización más reciente como referencia

En el siguiente ejemplo, se muestra una ejecución selectiva de los pasos AbaloneTrain y AbaloneEval utilizando como referencia la última ejecución de la canalización. Dado que SageMaker AI utiliza la ejecución más reciente de la canalización de forma predeterminada, puede establecer el argumento reference_latest_execution en 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, )

Ejecución selectiva sin una canalización de referencia

En el siguiente ejemplo, se muestra una ejecución selectiva de los pasos AbaloneProcess y AbaloneTrain sin proporcionar un ARN de referencia y desactivando la opción de utilizar la última ejecución de la canalización como referencia. SageMaker AI permite esta configuración, ya que este subconjunto de pasos no depende de los pasos 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, )

Reutilización de los valores de los parámetros de tiempo de ejecución de una ejecución de referencia

Puede crear los parámetros a partir de la ejecución de su canalización de referencia mediante build_parameters_from_execution y suministrar el resultado a su canalización de ejecución selectiva. Puede utilizar los parámetros originales de la ejecución de referencia o aplicar cualquier modificación mediante el argumento parameter_value_overrides.

En el siguiente ejemplo, se muestra cómo crear parámetros a partir de una ejecución de referencia y cómo aplicar una modificación al 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 )