Configurar regras integradas do Depurador - 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á.

Configurar regras integradas do Depurador

As regras integradas do Amazon SageMaker Debugger analisam os tensores emitidos durante o treinamento de um modelo. SageMakerO Debugger oferece a operação de Rule API que monitora o progresso e os erros do trabalho de treinamento para garantir o sucesso do treinamento de seu modelo. Por exemplo, as regras podem detectar se os gradientes estão ficando muito grandes ou muito pequenos, se um modelo está se ajustando demais ou treinando demais, e se um trabalho de treinamento não diminui a função de perda e melhora. Para ver uma listagem completa de regras integradas disponíveis, consulte Lista de regras integradas do Debugger.

Nos tópicos a seguir, você aprenderá a usar as regras integradas do SageMaker Debugger.

Use as regras integradas do depurador com suas configurações de parâmetros padrão

Para especificar as regras integradas do depurador em seu estimador, você precisa configurar um objeto listado. O código de exemplo a seguir mostra a estrutura básica da listagem das regras integradas do depurador.

from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.built_in_rule_name_1()), Rule.sagemaker(rule_configs.built_in_rule_name_2()), ... Rule.sagemaker(rule_configs.built_in_rule_name_n()), ... # You can also append more profiler rules in the ProfilerRule.sagemaker(rule_configs.*()) format. ]

Para obter mais informações sobre valores de parâmetros padrão e descrições da regra integrada, consulte Lista de regras integradas do Debugger.

Para encontrar a referência da API SageMaker Debugger, consulte e. sagemaker.debugger.rule_configssagemaker.debugger.Rule

Por exemplo, para inspecionar o desempenho geral do treinamento e o progresso do seu modelo, construa um SageMaker estimador com a seguinte configuração de regras incorporada.

from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.loss_not_decreasing()), Rule.sagemaker(rule_configs.overfit()), Rule.sagemaker(rule_configs.overtraining()), Rule.sagemaker(rule_configs.stalled_training_rule()) ]

Quando você inicia o trabalho de treinamento, o Debugger coleta dados de utilização de recursos do sistema a cada 500 milissegundos e os valores de perda e precisão a cada 500 etapas, por padrão. O depurador analisa a utilização de recursos para identificar se seu modelo está com problemas de gargalo. O loss_not_decreasing, overfit, overtraining e stalled_training_rule monitoram se seu modelo está otimizando a função de perda sem esses problemas de treinamento. Se as regras detectarem anomalias de treinamento, o status da avaliação da regra será alterado para IssueFound. Você pode configurar ações automatizadas, como notificar problemas de treinamento e interromper trabalhos de treinamento usando Amazon CloudWatch Events e. AWS Lambda Para ter mais informações, consulte Ação nas regras do Amazon SageMaker Debugger.

Use as regras integradas do depurador com valores de parâmetros personalizados

Se você quiser ajustar os valores de parâmetros da regra integrada e personalizar o regex da coleção de tensores, configure os parâmetros base_config e rule_parameters para os métodos das classes ProfilerRule.sagemaker e Rule.sagemaker. No caso dos métodos de classe Rule.sagemaker, você também pode personalizar coleções de tensores por meio do parâmetro collections_to_save. As instruções de como usar a classe CollectionConfig são fornecidas em Configurar coleções de tensores usando o CollectionConfig API.

Use o modelo de configuração a seguir para regras integradas para personalizar os valores dos parâmetros. Ao alterar os parâmetros da regra conforme desejar, você pode ajustar a sensibilidade das regras a serem acionadas.

  • O argumento base_config é onde você chama os métodos de regras integradas.

  • O argumento rule_parameters é ajustar os valores de chaves padrão das regras integradas listadas em Lista de regras integradas do Debugger.

  • O argumento collections_to_save recebe uma configuração de tensor por meio da API CollectionConfig, que requer argumentos name e parameters.

Para obter mais informações sobre a classe de regras, os métodos e os parâmetros do Debugger, consulte a classe SageMakerDebugger Rule no SDK do Amazon Python. SageMaker

from sagemaker.debugger import Rule, ProfilerRule, rule_configs, CollectionConfig rules=[ Rule.sagemaker( base_config=rule_configs.built_in_rule_name(), rule_parameters={ "key": "value" }, collections_to_save=[ CollectionConfig( name="tensor_collection_name", parameters={ "key": "value" } ) ] ) ]

As descrições dos parâmetros e os exemplos de personalização de valores são fornecidos para cada regra em Lista de regras integradas do Debugger.

Exemplos de Cadernos e exemplos de código para configurar as regras do depurador

Nas seções a seguir, blocos de notas e exemplos de código de como usar as regras do Debugger para monitorar trabalhos de SageMaker treinamento são fornecidos.

Cadernos de exemplo de regras integradas do depurador

Os exemplos de cadernos a seguir mostram como usar as regras integradas do Debugger ao executar trabalhos de treinamento com a Amazon: SageMaker

Ao executar os notebooks de exemplo no SageMaker Studio, você pode encontrar o teste de trabalho de treinamento criado na guia Studio Experiment List. Por exemplo, conforme mostrado na captura de tela a seguir, você pode encontrar e abrir uma janela Descrever o Componente de Teste do seu trabalho de treinamento atual. Na guia Depurador, você pode verificar se as regras do Depurador vanishing_gradient() e loss_not_decreasing() estão monitorando a sessão de treinamento em paralelo. Para obter instruções completas sobre como encontrar seus componentes de teste de emprego de treinamento na interface do usuário do Studio, consulte SageMaker Studio - View Experiments, Trials and Trial Components.

Uma imagem da execução de um trabalho de treinamento com as regras integradas do Debugger ativadas no Studio SageMaker

Há duas maneiras de usar as regras integradas do Debugger no SageMaker ambiente: implantar as regras integradas conforme elas são preparadas ou ajustar seus parâmetros conforme desejar. Os tópicos a seguir mostram como usar as regras integradas com códigos de exemplo.

Código de exemplo de regras integradas do depurador

O exemplo de código a seguir mostra como configurar as regras integradas do Depurador usando o método Rule.sagemaker. Para especificar as regras integradas que você deseja executar, use a operação rules_configs da API para chamar as regras integradas. Para encontrar uma listagem completa das regras integradas do Depurador e dos valores de parâmetros padrão, consulte Lista de regras integradas do Debugger.

import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import Rule, CollectionConfig, rule_configs # call built-in rules that you want to use. built_in_rules=[ Rule.sagemaker(rule_configs.vanishing_gradient()) Rule.sagemaker(rule_configs.loss_not_decreasing()) ] # construct a SageMaker estimator with the Debugger built-in rules sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-built-in-rules-demo', instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.9.0", py_version="py39", # debugger-specific arguments below rules=built_in_rules ) sagemaker_estimator.fit()
nota

As regras integradas do Depurador são executadas em paralelo ao seu trabalho de treinamento. O número máximo de contêineres de regras integradas para um trabalho de treinamento é 20.

Para obter mais informações sobre a classe de regras, os métodos e os parâmetros do Debugger, consulte a classe SageMaker Debugger Rule no SDK do Amazon Python. SageMaker

Para encontrar um exemplo de como ajustar os parâmetros da regra do Depurador, consulte a seção Use regras integradas do Depurador com modificações de parâmetros a seguir.

Use regras integradas do Depurador com modificações de parâmetros

O exemplo de código a seguir mostra a estrutura das regras integradas para ajustar os parâmetros. Neste exemplo, o stalled_training_rule coleta a coleção losses de tensores de um trabalho de treinamento a cada 50 etapas e um estágio de avaliação a cada 10 etapas. Se o processo de treinamento se iniciar parado e não coletar as saídas do tensor por 120 segundos, o stalled_training_rule interrompe o trabalho de treinamento.

import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import Rule, CollectionConfig, rule_configs # call the built-in rules and modify the CollectionConfig parameters base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time())) built_in_rules_modified=[ Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ 'threshold': '120', 'training_job_name_prefix': base_job_name_prefix, 'stop_training_on_fire' : 'True' } collections_to_save=[ CollectionConfig( name="losses", parameters={ "train.save_interval": "50" "eval.save_interval": "10" } ) ] ) ] # construct a SageMaker estimator with the modified Debugger built-in rule sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name=base_job_name_prefix, instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.9.0", py_version="py39", # debugger-specific arguments below rules=built_in_rules_modified ) sagemaker_estimator.fit()

Para uma configuração avançada das regras integradas do Depurador usando a API CreateTrainingJob, consulte Configurar o depurador usando a API da Amazon SageMaker .