Cree reglas personalizadas del depurador para análisis de trabajos de entrenamiento - 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.

Cree reglas personalizadas del depurador para análisis de trabajos de entrenamiento

Puede crear reglas personalizadas para monitorizar su trabajo de entrenamiento mediante las API de reglas del depurador y la biblioteca de Python de código abierto smdebug, que proporciona herramientas para crear sus propios contenedores de reglas.

Requisitos previos para crear reglas personalizadas del depurador

Para crear reglas personalizadas del depurador, necesita cumplir con los siguientes requisitos previos.

Utilice la biblioteca cliente del depurador smdebug para crear un script de Python de reglas personalizadas

La API de reglas smdebug proporciona una interfaz para configurar sus propias reglas personalizadas. El siguiente script de Python es un ejemplo de cómo crear una regla personalizada, CustomGradientRule. Esta regla personalizada del tutorial comprueba si los gradientes se están haciendo demasiado grandes y establece el umbral predeterminado en 10. La regla personalizada utiliza una prueba base creada por un SageMaker estimador cuando inicia el trabajo de formación.

from smdebug.rules.rule import Rule class CustomGradientRule(Rule): def __init__(self, base_trial, threshold=10.0): super().__init__(base_trial) self.threshold = float(threshold) def invoke_at_step(self, step): for tname in self.base_trial.tensor_names(collection="gradients"): t = self.base_trial.tensor(tname) abs_mean = t.reduction_value(step, "mean", abs=True) if abs_mean > self.threshold: return True return False

Puede añadir varias clases de reglas personalizadas tantas como desee en el mismo script de Python e implementarlas en cualquier prueba de trabajo de entrenamiento mediante la creación de objetos de reglas personalizadas en la siguiente sección.

Utilice las API del depurador para ejecutar sus propias reglas personalizadas

El siguiente ejemplo de código muestra cómo configurar una regla personalizada con el SDK de Amazon SageMaker Python. En este ejemplo se supone que el script de reglas personalizadas que creó en el paso anterior se encuentra en 'path/to/my_custom_rule.py'.

from sagemaker.debugger import Rule, CollectionConfig custom_rule = Rule.custom( name='MyCustomRule', image_uri='759209512951.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rule-evaluator:latest', instance_type='ml.t3.medium', source='path/to/my_custom_rule.py', rule_to_invoke='CustomGradientRule', collections_to_save=[CollectionConfig("gradients")], rule_parameters={"threshold": "20.0"} )

En la siguiente lista se explican los argumentos de la API Rule.custom del depurador.

  • name (str): especifique el nombre de las reglas personalizadas que desee.

  • image_uri (str): esta es la imagen del contenedor que tiene la lógica de entender su regla personalizada. Obtiene y evalúa las colecciones de tensores especificadas que haya guardado en el trabajo de entrenamiento. Puede encontrar la lista de imágenes de los evaluadores de SageMaker reglas de Registro de Amazon SageMaker Debugger URLs para evaluadores de reglas personalizadas código abierto en.

  • instance_type (str): debe especificar una instancia para crear un contenedor de Docker de reglas. Esto hace girar la instancia en paralelo con un contenedor de entrenamiento.

  • source (str): esta es la ruta local o el URI de Amazon S3 a su script de reglas personalizadas.

  • rule_to_invoke(str): Especifica la implementación de la clase Rule concreta en su script de reglas personalizado. SageMaker solo admite la evaluación de una regla a la vez en un trabajo de reglas.

  • collections_to_save (str): especifique qué colecciones de tensores guardará para que se ejecute la regla.

  • rule_parameters (diccionario): acepta entradas de parámetros en formato diccionario. Puede ajustar los parámetros que haya configurado en el script de reglas personalizadas.

Tras configurar el custom_rule objeto, puede utilizarlo para crear un SageMaker estimador para cualquier trabajo de formación. Especifique el entry_point en su script de entrenamiento. No necesita hacer ningún cambio en su script de entrenamiento.

from sagemaker.tensorflow import TensorFlow estimator = TensorFlow( role=sagemaker.get_execution_role(), base_job_name='smdebug-custom-rule-demo-tf-keras', entry_point='path/to/your_training_script.py' train_instance_type='ml.p2.xlarge' ... # debugger-specific arguments below rules = [custom_rule] ) estimator.fit()

Para ver más variantes y ejemplos avanzados del uso de las reglas personalizadas del depurador, consulte los siguientes cuadernos de ejemplo.