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:
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 |
|
El ARN de la canalización especificada |
| Un ARN de canalización |
|
El ARN de la canalización especificada |
null o sin especificar |
|
La ejecución más reciente de la canalización |
null o sin especificar |
|
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 )