Almacenamiento en caché de pasos de canalización - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Almacenamiento en caché de pasos de canalización

Cuando utiliza el almacenamiento en caché de firmas de pasos, SageMaker Pipelines intenta encontrar una ejecución anterior de su paso de canalización actual con los mismos valores para determinados atributos. Si lo encuentra, SageMaker Pipelines propaga los resultados de la ejecución anterior en lugar de volver a calcular el paso. Los atributos marcados son específicos del tipo de paso y se enumeran en Atributos clave de caché predeterminados por tipo de paso de la canalización.

Debe elegir utilizar el almacenamiento en caché de pasos; está desactivado de forma predeterminada. Al activar el almacenamiento en caché de pasos, también debe definir un tiempo de espera. Este tiempo de espera define la antigüedad que puede tener una ejecución anterior para que aún pueda reutilizarse.

El almacenamiento en caché de pasos solo considera las ejecuciones correctas; nunca reutiliza las ejecuciones que produjeron un error. Cuando hay varias ejecuciones correctas dentro del período de tiempo de espera, SageMaker Pipelines usa el resultado de la ejecución exitosa más reciente. Si no coinciden las ejecuciones correctas en el período de tiempo de espera, SageMaker Pipelines vuelve a ejecutar el paso. Si el ejecutor encuentra una ejecución anterior que cumple los criterios pero que aún está en curso, ambos pasos seguirán ejecutándose y actualizarán la caché si se realizan correctamente.

El almacenamiento en caché de pasos solo se aplica a canalizaciones individuales, por lo que no puede reutilizar un paso de otra canalización aunque la firma de un paso coincida.

El almacenamiento en caché de pasos está disponible para los siguientes tipos de pasos:

Activación del almacenamiento en caché de pasos

Para activar el almacenamiento en caché de pasos, debe agregar una propiedad CacheConfig a la definición del paso.

Las propiedades de CacheConfig utilizan el siguiente formato en el archivo de definición de la canalización:

{     "CacheConfig": {         "Enabled": false,         "ExpireAfter": "<time>"     } }

El campo Enabled indica si el almacenamiento en caché está activado para un paso concreto. Puedes configurar el campo entrue, lo que indica que hay que SageMaker intentar buscar una ejecución anterior del paso con los mismos atributos. O bien, puede configurar el campo enfalse, lo que indica que se debe SageMaker ejecutar el paso cada vez que se ejecute la canalización. ExpireAfteres una cadena en formato de duración ISO 8601 que define el período de tiempo de espera. La duración ExpireAfter puede ser un valor de año, mes, semana, día, hora o minuto. Cada valor consta de un número seguido de una letra que indica la unidad de duración. Por ejemplo:

  • “30d” = 30 días

  • “5y” = 5 años

  • “T16m” = 16 minutos

  • “30dT5h” = 30 días y 5 horas.

En el siguiente análisis se describe el procedimiento para activar el almacenamiento en caché para canalizaciones nuevas o preexistentes mediante el SDK de Amazon Python SageMaker .

Activación del almacenamiento en caché para nuevas canalizaciones

En el caso de canalizaciones nuevas, inicialice una instancia CacheConfig con enable_caching=True y proporcione esto como entrada al paso de canalización. En el siguiente ejemplo, se activa el almacenamiento en caché con un período de espera de 1 hora para un paso de entrenamiento:

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig cache_config = CacheConfig(enable_caching=True, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config )

Activación del almacenamiento en caché para canalizaciones preexistentes

Para activar el almacenamiento en caché de las canalizaciones preexistentes y ya definidas, active la propiedad enable_caching para el paso y establezca expire_after en un valor de tiempo de espera. Por último, actualiza la canalización con pipeline.upsert() o pipeline.update(). Una vez que se ejecute de nuevo, el siguiente ejemplo de código activa el almacenamiento en caché con un período de espera de 1 hora para un paso de entrenamiento:

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig from sagemaker.workflow.pipeline import Pipeline cache_config = CacheConfig(enable_caching=True, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config ) # define pipeline pipeline = Pipeline( steps=[step_train] ) # additional step for existing pipelines pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Como alternativa, actualice la configuración de la caché una vez que haya definido la canalización (preexistente), lo que permitirá ejecutar el código de forma continua. En el siguiente ejemplo de código se muestra este método:

# turn on caching with timeout period of one hour pipeline.steps[0].cache_config.enable_caching = True pipeline.steps[0].cache_config.expire_after = "PT1H" # additional step for existing pipelines pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Para obtener ejemplos de código más detallados y un análisis sobre cómo los parámetros del SDK de Python afectan al almacenamiento en caché, consulte Configuración del almacenamiento en caché en la documentación del SDK de Amazon SageMaker Python.

Desactivación del almacenamiento en caché de pasos

Un paso de canalización no se vuelve a ejecutar si cambia algún atributo que no aparezca enumerado en Atributos clave de caché predeterminados por tipo de paso de la canalización de su tipo de paso. Sin embargo, puede decidir que desea que el paso de canalización se vuelva a ejecutar de todos modos. En este caso, debe desactivar el almacenamiento en caché de pasos.

Para desactivar el almacenamiento en caché de pasos, defina el atributo Enabled de la propiedad CacheConfig en la definición del paso en false, tal y como se muestra en el siguiente fragmento de código:

{     "CacheConfig": {         "Enabled": false,         "ExpireAfter": "<time>"     } }

Tenga en cuenta que el atributo ExpireAfter se pasa por alto cuando Enabled es false.

Para desactivar el almacenamiento en caché de un paso de canalización mediante el SDK de Amazon SageMaker Python, defina la canalización de su paso de canalización, desactive la enable_caching propiedad y actualice la canalización.

Una vez que se ejecute de nuevo, el siguiente ejemplo de código activa el almacenamiento en caché para un paso de entrenamiento:

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig from sagemaker.workflow.pipeline import Pipeline cache_config = CacheConfig(enable_caching=False, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config ) # define pipeline pipeline = Pipeline( steps=[step_train] ) # update the pipeline pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Como alternativa, desactive la propiedad enable_caching una vez que haya definido la canalización, lo que permitirá ejecutar el código de forma continua. En el siguiente ejemplo de código se muestra esta solución:

# turn off caching for the training step pipeline.steps[0].cache_config.enable_caching = False # update the pipeline pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Para obtener ejemplos de código más detallados y un análisis sobre cómo los parámetros del SDK de Python afectan al almacenamiento en caché, consulte Configuración del almacenamiento en caché en la documentación del SDK de Amazon SageMaker Python.

Atributos clave de caché predeterminados por tipo de paso de la canalización

Al decidir si reutilizar un paso anterior de la canalización o volver a ejecutarlo, SageMaker Pipelines comprueba si algunos atributos han cambiado. Si el conjunto de atributos es diferente al de todas las ejecuciones anteriores dentro del período de tiempo de espera, el paso se vuelve a ejecutar. Estos atributos incluyen los artefactos de entrada, la especificación de la aplicación o el algoritmo y las variables del entorno.

La siguiente lista muestra cada tipo de paso de la canalización y los atributos que, si se modifican, inician una nueva ejecución del paso. Para obtener más información sobre los parámetros del SDK de Python que se utilizan para crear los siguientes atributos, consulte Configuración de almacenamiento en caché en la documentación del SDK de Amazon SageMaker Python.

  • AppSpecification

  • Entorno

  • ProcessingInputs. Este atributo contiene información sobre el script de preprocesamiento.

  • AlgorithmSpecification

  • CheckpointConfig

  • DebugHookConfig

  • DebugRuleConfigurations

  • Entorno

  • HyperParameters

  • InputDataConfig. Este atributo contiene información sobre el script de entrenamiento.

  • HyperParameterTuningJobConfig

  • TrainingJobDefinition. Este atributo se compone de varios atributos secundarios, y no todos hacen que el paso se vuelva a ejecutar. Los atributos secundarios que podrían volver a ejecutarse (si se modifican) son:

    • AlgorithmSpecification

    • HyperParameterRanges

    • InputDataConfig

    • StaticHyperParameters

    • TuningObjective

  • TrainingJobDefinitions

  • AutomLJobConfig. Este atributo se compone de varios atributos secundarios, y no todos hacen que el paso se vuelva a ejecutar. Los atributos secundarios que podrían volver a ejecutarse (si se modifican) son:

    • CompletionCriteria

    • CandidateGenerationConfig

    • DataSplitConfig

    • Mode

  • AutomL JobObjective

  • InputDataConfig

  • ProblemType

  • DataProcessing

  • Entorno

  • ModelName

  • TransformInput

  • ClarifyCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewBaseline

  • ModelPackageGroupName

  • SuppliedBaselineConstraints

  • QualityCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewBaseline

  • ModelPackageGroupName

  • SuppliedBaselineConstraints

  • SuppliedBaselineStatistics

  • ClusterId

  • StepConfig

Control de acceso a los datos en caché

Cuando se ejecuta una SageMaker canalización, almacena en caché los parámetros y metadatos asociados a los SageMaker trabajos lanzados por la canalización y los guarda para reutilizarlos en ejecuciones posteriores. Es posible acceder a estos metadatos a través de diversos orígenes, además de los pasos de la canalización en caché, e incluyen los siguientes tipos:

  • Solicitudes Describe*Job

  • CloudWatch Registros

  • CloudWatch Eventos

  • CloudWatch Métricas

  • SageMaker Buscar

Tenga en cuenta que el acceso a cada origen de datos de la lista se controla mediante su propio conjunto de permisos de IAM. Si se elimina el acceso de un rol concreto a un origen de datos el nivel de acceso a los demás no se ve afectado. Por ejemplo, el administrador de una cuenta puede eliminar los permisos de IAM para las solicitudes Describe*Job del rol del intermediario. Si bien el intermediario ya no puede realizar solicitudes Describe*Job, puede recuperar los metadatos de una canalización ejecutada con pasos en caché, siempre y cuando tenga permiso para ejecutar la canalización. Si el administrador de una cuenta quiere eliminar por completo el acceso a los metadatos de un SageMaker trabajo concreto, debe eliminar los permisos de cada uno de los servicios pertinentes que proporcionan acceso a los datos.