

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.

# Creación de reglas personalizadas mediante la biblioteca cliente del depurador
<a name="debugger-custom-rules"></a>

Puede crear reglas personalizadas para supervisar su trabajo de entrenamiento mediante la regla Debugger APIs y la [biblioteca `smdebug` Python](https://github.com/awslabs/sagemaker-debugger/) de código abierto que proporciona herramientas para crear sus propios contenedores de reglas.

## Requisitos previos para crear una regla personalizada
<a name="debugger-custom-rules-prerequisite"></a>

Para crear reglas personalizadas del depurador, necesita cumplir con los siguientes requisitos previos.
+ [SageMaker Regla de depuración. API personalizada](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.Rule.custom)
+ [La biblioteca de Python de código abierto smdebug](https://github.com/awslabs/sagemaker-debugger/)
+ Su propio script de Python con reglas personalizadas
+ [Imagen de Amazon SageMaker Debugger URIs para evaluadores de reglas personalizados](debugger-reference.md#debuger-custom-rule-registry-ids)

**Topics**
+ [Requisitos previos para crear una regla personalizada](#debugger-custom-rules-prerequisite)
+ [Uso de la biblioteca cliente `smdebug` para crear una regla personalizada como script de Python](debugger-custom-rules-python-script.md)
+ [Usa el depurador APIs para ejecutar tus propias reglas personalizadas](debugger-custom-rules-python-sdk.md)

# Uso de la biblioteca cliente `smdebug` para crear una regla personalizada como script de Python
<a name="debugger-custom-rules-python-script"></a>

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 construir 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 estimador de SageMaker IA cuando inicia el trabajo de entrenamiento. 

```
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.

# Usa el depurador APIs para ejecutar tus propias reglas personalizadas
<a name="debugger-custom-rules-python-sdk"></a>

El siguiente ejemplo de código muestra cómo configurar una regla personalizada con el [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable). En este ejemplo se supone que el script de reglas personalizadas que creó en el paso anterior se encuentra en '*path/to/my\$1custom\$1rule.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 código abierto de los evaluadores de reglas de SageMaker [Imagen de Amazon SageMaker Debugger URIs para evaluadores de reglas personalizados](debugger-reference.md#debuger-custom-rule-registry-ids) IA 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 tu script de reglas personalizado. SageMaker La IA 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.

Después de configurar el `custom_rule` objeto, puedes usarlo para crear un estimador de SageMaker IA 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.
+ [Supervise su trabajo de formación con las reglas personalizadas de Amazon SageMaker Debugger](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-debugger/tensorflow_keras_custom_rule/tf-keras-custom-rule.html)
+ [PyTorch modelo iterativo: poda de y ResNet AlexNet](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/pytorch_iterative_model_pruning)
+ [Activa CloudWatch eventos de Amazon mediante las reglas del depurador para realizar una acción en función del estado del entrenamiento con TensorFlow](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/tensorflow_action_on_rule)