

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criação de regras personalizadas usando a biblioteca de cliente do Depurador
<a name="debugger-custom-rules"></a>

Você pode criar regras personalizadas para monitorar seu trabalho de treinamento usando a regra Debugger APIs e a [biblioteca `smdebug` Python](https://github.com/awslabs/sagemaker-debugger/) de código aberto que fornecem ferramentas para criar seus próprios contêineres de regras.

## Pré-requisitos para criação de regra personalizada
<a name="debugger-custom-rules-prerequisite"></a>

Para criar regras personalizadas do Debugger, você precisa dos seguintes pré-requisitos:
+ [SageMaker Regra do depurador. API personalizada](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.Rule.custom)
+ [A biblioteca de cliente de código aberto smdebug](https://github.com/awslabs/sagemaker-debugger/)
+ Seu próprio script de regras personalizadas em Python
+ [Imagem do Amazon SageMaker Debugger URIs para avaliadores de regras personalizadas](debugger-reference.md#debuger-custom-rule-registry-ids)

**Topics**
+ [Pré-requisitos para criação de regra personalizada](#debugger-custom-rules-prerequisite)
+ [Use a biblioteca de cliente do `smdebug` para criar regra personalizada na forma de um script Python](debugger-custom-rules-python-script.md)
+ [Use o Debugger APIs para executar suas próprias regras personalizadas](debugger-custom-rules-python-sdk.md)

# Use a biblioteca de cliente do `smdebug` para criar regra personalizada na forma de um script Python
<a name="debugger-custom-rules-python-script"></a>

A API de regras `smdebug` fornece uma interface para configurar suas próprias regras personalizadas. O script Python a seguir é uma amostra de como criar uma regra personalizada,`CustomGradientRule`. Este tutorial de regra personalizada observa se os gradientes estão ficando muito grandes e define o limite padrão como 10. A regra personalizada faz um teste básico criado por um estimador de SageMaker IA quando ele inicia o trabalho de treinamento. 

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

Você pode adicionar várias classes de regras personalizadas quantas quiser no mesmo script Python e implantá-las em qualquer teste de trabalho de treinamento criando objetos de regras personalizados na seção a seguir.

# Use o Debugger APIs para executar suas próprias regras personalizadas
<a name="debugger-custom-rules-python-sdk"></a>

O exemplo de código a seguir mostra como configurar uma regra personalizada com o SDK do [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable). Este exemplo pressupõe que o script de regras personalizadas que você criou na etapa anterior esteja localizado em '*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"}
)
```

A lista a seguir explica os argumentos da API Debugger `Rule.custom`.
+ `name` (str): especifique um nome de regra personalizado conforme desejar.
+ `image_uri` (str): essa é a imagem do contêiner que tem a lógica de entender sua regra personalizada. Ele fornece e avalia as coleções de tensores especificadas que você salva no trabalho de treinamento. Você pode encontrar a lista de imagens de avaliadores de regras de SageMaker IA de [Imagem do Amazon SageMaker Debugger URIs para avaliadores de regras personalizadas](debugger-reference.md#debuger-custom-rule-registry-ids) código aberto em.
+ `instance_type` (str): você precisa especificar uma instância para criar um contêiner docker de regras. Isso ativa a instância paralelamente a um contêiner de treinamento.
+ `source` (str): esse é o caminho local ou o URI do Amazon S3 para seu script de regras personalizado.
+ `rule_to_invoke`(str): Isso especifica a implementação específica da classe de regra em seu script de regra personalizado. SageMaker A IA suporta apenas uma regra a ser avaliada por vez em um trabalho de regra.
+ `collections_to_save` (str): isso especifica quais coleções de tensores você salvará para que a regra seja executada.
+ `rule_parameters` (dicionário): Isso aceita entradas de parâmetros em formato de dicionário. Você pode ajustar os parâmetros que você configurou no script de regra personalizada.

Depois de configurar o `custom_rule` objeto, você pode usá-lo para criar um estimador de SageMaker IA para qualquer trabalho de treinamento. Especifique o `entry_point` em seu script de treinamento. Não é necessário fazer nenhuma alteração no script de treinamento.

```
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 obter mais variações e exemplos avançados do uso das regras personalizadas do Debugger, consulte os seguintes exemplos de cadernos:
+ [Monitore seu trabalho de treinamento com as regras personalizadas do Amazon SageMaker Debugger](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-debugger/tensorflow_keras_custom_rule/tf-keras-custom-rule.html)
+ [PyTorch poda de modelo iterativo de e ResNet AlexNet](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/pytorch_iterative_model_pruning)
+ [Acione CloudWatch eventos da Amazon usando as regras do Debugger para realizar uma ação com base no status do treinamento com TensorFlow](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/tensorflow_action_on_rule)