Defina métricas e variáveis de ambiente - 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á.

Defina métricas e variáveis de ambiente

Um trabalho de ajuste otimiza hiperparâmetros para trabalhos de treinamento que ele inicia usando uma métrica para avaliar o desempenho. Este guia mostra como definir métricas para que você possa usar um algoritmo personalizado para treinamento ou usar um algoritmo incorporado da Amazon SageMaker. Este guia também mostra como especificar variáveis de ambiente durante uma tarefa de ajuste automático do modelo (AMT).

Definir métricas

O ajuste de SageMaker hiperparâmetros da Amazon analisa seus algoritmos stdout e stderr fluxos de aprendizado de máquina para encontrar métricas, como perda ou precisão de validação. As métricas mostram o desempenho do modelo no conjunto de dados.

As seguintes seções descrevem como usar dois tipos de algoritmos para treinamento: integrado e personalizado.

Use um algoritmo integrado para treinamento

Se você usa um dos algoritmos SageMaker integrados, as métricas já estão definidas para você. Além disso, os algoritmos integrados enviam automaticamente métricas para o ajuste do hiperparâmetros para otimização. Essas métricas também são gravadas nos CloudWatch registros da Amazon. Para obter mais informações, consulte Registrar SageMaker eventos da Amazon com a Amazon CloudWatch.

Para a métrica objetivo do trabalho de ajuste, escolha uma das métricas que o algoritmo integrado emite. Para obter uma lista das métricas disponíveis, consulte a seção de ajuste do modelo para o algoritmo apropriado em Use os algoritmos SageMaker integrados da Amazon ou modelos pré-treinados.

Você pode escolher até 40 métricas para monitorar o seu trabalho de ajuste. Selecione uma dessas métricas para ser a métrica objetiva. O trabalho de ajuste de hiperparâmetros retorna o trabalho de treinamento que teve o melhor desempenho em relação à métrica objetiva.

nota

O ajuste de hiperparâmetros envia automaticamente um hiperparâmetro adicional _tuning_objective_metric para passar sua métrica objetiva para o trabalho de ajuste para uso durante o treinamento.

Use um algoritmo personalizado para treinamento

Esta seção mostra como definir suas próprias métricas para usar seu próprio algoritmo personalizado para treinamento. Ao fazer isso, certifique-se de que seu algoritmo grave pelo menos uma métrica em stderr ou stdout. O ajuste de hiperparâmetros analisa esses fluxos para encontrar métricas de algoritmos que mostram o desempenho do modelo no conjunto de dados.

Você pode definir métricas personalizadas especificando um nome e uma expressão regular para cada métrica que seu trabalho de ajuste monitora. Em seguida, passe essas definições métricas para o CreateHyperParameterTuningJobAPIno TrainingJobDefinition parâmetro no MetricDefinitions campo deAlgorithmSpecification.

Veja a seguir um exemplo de saída de um log gravado em stderr ou stdout por um algoritmo de treinamento.

GAN_loss=0.138318; Scaled_reg=2.654134; disc:[-0.017371,0.102429] real 93.3% gen 0.0% disc-combined=0.000000; disc_train_loss=1.374587; Loss = 16.020744; Iteration 0 took 0.704s; Elapsed=0s

O exemplo de código a seguir mostra como usar expressões regulares em Python (regex). Isso é usado para pesquisar a saída do log de amostra e capturar os valores numéricos de quatro métricas diferentes.

[ { "Name": "ganloss", "Regex": "GAN_loss=(.*?);", }, { "Name": "disc-combined", "Regex": "disc-combined=(.*?);", }, { "Name": "discloss", "Regex": "disc_train_loss=(.*?);", }, { "Name": "loss", "Regex": "Loss = (.*?);", }, ]

Em expressões regulares, parênteses () são usados para agrupar partes da expressão regular.

  • Para a loss métrica definida no exemplo de código, a expressão (.*?); captura qualquer caractere entre o texto exato "Loss=" e o primeiro caractere ponto e vírgula (;).

  • O caractere . instrui a expressão regular a corresponder a qualquer caractere.

  • O caractere * significa corresponder a zero ou mais caracteres.

  • O personagem ? significa capturar somente até a primeira instância do ; personagem.

A métrica de perda definida na amostra de código será capturada Loss = 16.020744 a partir da saída da amostra.

Escolha uma das métricas que você definiu como métrica objetiva para o trabalho de ajuste. Se você estiver usando o SageMaker API, especifique o valor da name chave no HyperParameterTuningJobObjective campo do HyperParameterTuningJobConfig parâmetro que você envia para a CreateHyperParameterTuningJoboperação.

Especificar variáveis de ambiente

SageMaker AMTotimiza os hiperparâmetros em um trabalho de ajuste para encontrar os melhores parâmetros para o desempenho do modelo. Você pode usar variáveis de ambiente para configurar o trabalho de ajuste para alterar o comportamento. Você também pode usar variáveis de ambiente usadas durante o treinamento em seu trabalho de ajuste.

Se você quiser usar uma variável de ambiente do seu trabalho de ajuste ou especificar uma nova variável de ambiente, insira um valor de cadeia de caracteres Environment dentro do SageMaker HyperParameterTrainingJobDefinitionAPI. Passe essa definição de trabalho de treinamento para CreateHyperParameterTuningJobAPIo.

Por exemplo, a variável de ambiente SM_LOG_LEVEL pode ser definida com os seguintes valores para personalizar a saída de um contêiner Python.

NOTSET=0 DEBUG=10 INFO=20 WARN=30 ERROR=40 CRITICAL=50

Por exemplo, para definir o nível de registro para 10 depurar seus registros de contêiner, defina a variável de ambiente dentro do HyperParameterTrainingJobDefinition, da seguinte forma.

{ "HyperParameterTuningJobConfig": { ..., } "TrainingJobDefinition": { ..., "Environment" : [ { "SM_LOG_LEVEL": 10 } ], ..., }, ..., }