Crie regras personalizadas do Debugger para Análise de trabalho de treinamento - Amazon SageMaker

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

Crie regras personalizadas do Debugger para Análise de trabalho de treinamento

Você pode criar regras personalizadas para monitorar seu trabalho de treinamento usando as APIs Debugger Rule e a biblioteca de código aberto smdebug Python, que fornecem ferramentas para criar seus próprios contêineres de regras.

Pré-requisitos para criar regras personalizadas do Debugger

Para criar regras personalizadas do Debugger, você precisa dos seguintes pré-requisitos.

Use a biblioteca de cliente do Debugger smdebug para criar um script Python de regras personalizadas

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 SageMaker estimador 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 as APIs do Debugger para executar suas próprias regras personalizadas

O exemplo de código a seguir mostra como configurar uma regra personalizada com o SDK do Amazon SageMaker Python. Este exemplo pressupõe que o script de regras personalizadas que você criou na etapa anterior esteja localizado em '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"} )

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 SageMaker regras de Registro do Amazon SageMaker Debugger URLs para avaliadores de regras personalizadas 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 suporta somente uma regra a ser avaliada por vez em um trabalho de regras.

  • 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 SageMaker estimador 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.