Monitore e analise trabalhos de treinamento usando o Amazon CloudWatch Metrics - 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á.

Monitore e analise trabalhos de treinamento usando o Amazon CloudWatch Metrics

Um trabalho de SageMaker treinamento da Amazon é um processo iterativo que ensina um modelo a fazer previsões apresentando exemplos de um conjunto de dados de treinamento. Normalmente, um algoritmo de treinamento calcula várias métricas, como erro de treinamento e precisão de previsão. Essas métricas ajudam a diagnosticar se o modelo está aprendendo bem e generalizará bem para fazer previsões sobre dados não vistos. O algoritmo de treinamento grava os valores dessas métricas em registros, que SageMaker monitoram e enviam para a Amazon CloudWatch em tempo real. Para analisar o desempenho do seu trabalho de treinamento, você pode visualizar gráficos dessas métricas em CloudWatch. Quando um trabalho de treinamento estiver concluído, você também poderá obter uma lista dos valores de métrica que ele calcula em sua iteração final chamando a operação DescribeTrainingJob.

nota

A Amazon CloudWatch oferece suporte a métricas personalizadas de alta resolução, e sua melhor resolução é de 1 segundo. No entanto, quanto melhor for a resolução, menor será a vida útil das métricas. CloudWatch Para a resolução de frequência de 1 segundo, as CloudWatch métricas ficam disponíveis por 3 horas. Para obter mais informações sobre a resolução e a vida útil das CloudWatch métricas, consulte GetMetricStatisticsa Amazon CloudWatch API Reference.

dica

Se você quiser traçar o perfil do seu trabalho de treinamento com uma resolução mais precisa de até 100 milissegundos (0,1 segundo) de granularidade e armazenar as métricas de treinamento indefinidamente no Amazon S3 para análise personalizada a qualquer momento, considere usar o Amazon Debugger. SageMaker SageMaker O Debugger fornece regras integradas para detectar automaticamente problemas comuns de treinamento; ele detecta problemas de utilização de recursos de hardware (como gargalos de CPU, GPU e E/S) e problemas de modelos não convergentes (como sobreajuste, gradientes que diminuem e tensores explosivos). SageMaker O Debugger também fornece visualizações por meio do Studio Classic e seu relatório de criação de perfil. Para explorar as visualizações do Debugger, consulte Passo a passo do painel do SageMaker Debugger Insights, Passo a passo do relatório de criação de perfil do depurador e Análise de dados usandoa biblioteca cliente SMDebug.

Definindo métricas de treinamento

SageMaker analisa automaticamente os registros de trabalhos de treinamento e envia métricas de treinamento para o. CloudWatch Por padrão, SageMaker envia métricas de utilização de recursos do sistema listadas em SageMaker Jobs and Endpoint Metrics. Se você SageMaker quiser analisar registros e enviar métricas personalizadas de um trabalho de treinamento de seu próprio algoritmo para CloudWatch, você precisa especificar as definições de métricas passando o nome das métricas e expressões regulares ao configurar uma solicitação de trabalho de SageMaker treinamento.

Você pode especificar as métricas que deseja monitorar usando o SageMaker console, o SDK do SageMaker Python ou a API de baixo nível. SageMaker

Se estiver usando seu próprio algoritmo, faça o seguinte:

  • Certifique-se de que o algoritmo grave as métricas que você deseja capturar nos logs.

  • Defina uma expressão regular que pesquise com precisão os registros para capturar os valores das métricas para as quais você deseja enviar CloudWatch.

Por exemplo, suponhamos que o seu algoritmo emita as seguintes métricas de erro de treinamento e de validação:

Train_error=0.138318; Valid_error=0.324557;

Se você quiser monitorar essas duas métricas CloudWatch, o dicionário para as definições de métricas deve ser semelhante ao exemplo a seguir:

[ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ]

No regex da métrica train:error definida no exemplo anterior, a primeira parte do regex localiza o texto exato "Train_error=", e a expressão (.*?); captura todos os caracteres até que o primeiro ponto e vírgula apareça. Nessa expressão, os parênteses informam ao regex para capturar o que está dentro deles, . significa qualquer caractere, * significa zero ou mais, e ? significa capturar apenas até a primeira instância do caractere ;.

Defina métricas usando o SDK do SageMaker Python

Defina as métricas para as quais você deseja enviar CloudWatch especificando uma lista de nomes de métricas e expressões regulares como metric_definitions argumento ao inicializar um Estimator objeto. Por exemplo, se você quiser monitorar as validation:error métricas train:error e em CloudWatch, sua Estimator inicialização seria semelhante ao exemplo a seguir:

import sagemaker from sagemaker.estimator import Estimator estimator = Estimator( image_uri="your-own-image-uri", role=sagemaker.get_execution_role(), sagemaker_session=sagemaker.Session(), instance_count=1, instance_type='ml.c4.xlarge', metric_definitions=[ {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'}, {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'} ] )

Para obter mais informações sobre treinamento usando estimadores do Amazon SageMaker Python SDK, consulte Sagemaker Python SDK on. GitHub

Defina métricas usando o SageMaker console

Se você escolher a opção Seu próprio contêiner de algoritmo no ECR como sua fonte de algoritmo no SageMaker console ao criar um trabalho de treinamento, adicione as definições de métricas na seção Métricas. A captura de tela a seguir mostra como ela deve ficar depois de adicionar os nomes das métricas de exemplo e as expressões regulares correspondentes.

Defina métricas usando a API de baixo nível SageMaker

Defina as métricas para as quais você deseja enviar CloudWatch especificando uma lista de nomes de métricas e expressões regulares no MetricDefinitions campo do parâmetro de AlgorithmSpecificationentrada que você passa para a CreateTrainingJoboperação. Por exemplo, se você quiser monitorar as validation:error métricas train:error e em CloudWatch, você AlgorithmSpecification teria a seguinte aparência:

"AlgorithmSpecification": { "TrainingImage": your-own-image-uri, "TrainingInputMode": "File", "MetricDefinitions" : [ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ] }

Para obter mais informações sobre como definir e executar um trabalho de treinamento usando a SageMaker API de baixo nível, consulte CreateTrainingJob.

Monitorando métricas de trabalho de treinamento (CloudWatch console)

Você pode monitorar as métricas que um trabalho de treinamento emite em tempo real no CloudWatch console.

Para monitorar as métricas do trabalho de treinamento (CloudWatch console)
  1. Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch.

  2. Escolha Métricas e, em seguida, escolha /aws/sagemaker/ TrainingJobs.

  3. Escolha TrainingJobName.

  4. Na guia Todas as métricas, escolha os nomes das métricas de treinamento que você deseja monitorar.

  5. Na guia Métricas representadas em gráficos, configure as opções de gráficos. Para obter mais informações sobre o uso de CloudWatch gráficos, consulte Graph Metrics no Guia do CloudWatch usuário da Amazon.

Monitorar métricas de trabalho de treinamento (Console do SageMaker)

Você pode monitorar as métricas que um trabalho de treinamento emite em tempo real usando o SageMaker console.

Para monitorar as métricas do trabalho de treinamento (SageMaker console)
  1. Abra o SageMaker console em https://console.aws.amazon.com/sagemaker.

  2. Escolha Training jobs (Trabalhos de treinamento) e escolha o trabalho de treinamento cujas métricas você deseja visualizar.

  3. Escolha TrainingJobName.

  4. Na seção Monitor (Monitoramento), você pode analisar os gráficos de utilização da instância e as métricas do algoritmo.

Exemplo: exibir uma curva de treinamento e validação

Normalmente, você divide os dados nos quais treina seu modelo em conjuntos de dados de treinamento e validação. Você usa o conjunto de treinamento para treinar os parâmetros do modelo que são usados para fazer previsões no conjunto de dados de treinamento. Em seguida, você testa as previsões do modelo calculando as previsões para o conjunto de validação. Para analisar o desempenho de um trabalho de treinamento, em geral, você plota uma curva de treinamento em uma curva de validação.

A visualização de um gráfico que mostra a precisão dos conjuntos de treinamento e validação ao longo do tempo pode ajudar você a melhorar o desempenho do seu modelo. Por exemplo, se a precisão do treinamento continuar a aumentar com o tempo, mas, em algum momento, a precisão da validação começar a diminuir, é provável que você esteja fazendo o sobreajuste do seu modelo. Para resolver isso, você pode fazer ajustes ao seu modelo, como aumentar a regularização.

Neste exemplo, você pode usar o mage-classification-full-training exemplo I na seção Exemplos de cadernos de anotações da sua instância de SageMaker notebook. Se você não tiver uma instância de SageMaker notebook, crie uma seguindo as instruções emEtapa 1: criar uma instância do Amazon SageMaker Notebook. Se preferir, você pode acompanhar o exemplo de classificação de imagens multiclasse de ponta a ponta no caderno de exemplo em. GitHub Você também precisa de um bucket do Amazon S3 para armazenar os dados de treinamento e para a saída do modelo.

Para visualizar curvas de erro de treinamento e validação:
  1. Abra o SageMaker console em https://console.aws.amazon.com/sagemaker.

  2. Escolha Blocos de anotações e escolha Instâncias de bloco de anotações.

  3. Escolha a instância de bloco de anotações que você deseja usar e selecione Open (Abrir).

  4. No painel da instância do seu notebook, escolha SageMakerExemplos.

  5. Expanda a seção Introdução aos algoritmos da Amazon e escolha Usar ao lado de I mage-classification-fulltraining .ipynb.

  6. Escolha Criar cópia. SageMaker cria uma cópia editável do notebook I mage-classification-fulltraining .ipynb em sua instância de notebook.

  7. Execute todas as células no bloco de anotações até a seção Inferência. Você não precisa implantar um endpoint nem obter inferência para este exemplo.

  8. Depois que o trabalho de treinamento começar, abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch.

  9. Escolha Métricas e, em seguida, escolha /aws/sagemaker/ TrainingJobs.

  10. Escolha TrainingJobName.

  11. Na aba All metrics (Todas as métricas), escolha as métricas train:accuracy e validation:accuracy para o trabalho de treinamento que você criou no bloco de anotações.

  12. No gráfico, escolha uma área na qual os valores das métricas aumentem. Você deve ver algo parecido com o exemplo a seguir.