Use TensorBoard para depurar e analisar trabalhos de treinamento na Amazon SageMaker - 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á.

Use TensorBoard para depurar e analisar trabalhos de treinamento na Amazon SageMaker

O Amazon SageMaker with TensorBoard é um recurso da Amazon SageMaker que traz as ferramentas de visualização do TensorBoardto SageMaker, integradas ao SageMaker treinamento e ao domínio. Ele fornece opções para administrar sua AWS conta e os usuários pertencentes à conta por meio do SageMaker domínio, para dar aos usuários do domínio acesso aos TensorBoard dados com as permissões apropriadas para o Amazon S3 e ajudar os usuários do domínio a realizar tarefas de depuração de modelos usando os plug-ins de visualização. TensorBoard SageMaker with TensorBoard é estendido com o plug-in SageMaker Data Manager, com o qual os usuários do domínio podem acessar várias tarefas de treinamento em um único local dentro do TensorBoard aplicativo.

nota

Esse recurso serve para treinar e depurar modelos de aprendizado profundo usando a PyTorch estrutura or. TensorFlow

Para cientistas de dados

O treinamento de modelos grandes pode ter problemas científicos que exigem que os cientistas de dados os depurem e resolvam a fim de melhorar a convergência do modelo e estabilizar os processos de gradiente descendente.

Quando você encontra problemas de treinamento do modelo, como perda não convergente ou desaparecimento ou explosão de pesos e gradientes, você precisa acessar os dados do tensor para aprofundar e analisar os parâmetros do modelo, os escalares e quaisquer métricas personalizadas. Usando SageMaker com TensorBoard, você pode visualizar os tensores de saída do modelo extraídos dos trabalhos de treinamento. Ao experimentar diferentes modelos, várias execuções de treinamento e hiperparâmetros de modelo, você pode selecionar vários trabalhos de treinamento TensorBoard e compará-los em um só lugar.

Para administradores

Por meio da página TensorBoard inicial no SageMaker console ou no SageMaker domínio, você pode gerenciar os usuários do TensorBoard aplicativo se for administrador de uma AWS conta ou SageMaker domínio. Cada usuário do domínio pode acessar seu próprio TensorBoard aplicativo com as permissões concedidas. Como administrador de SageMaker domínio e usuário do domínio, você pode criar e excluir o TensorBoard aplicativo com o nível de permissão que você tem.

Estruturas suportadas e Regiões da AWS

Esse recurso é compatível com as seguintes estruturas de aprendizado de máquina e Regiões da AWS.

Frameworks
  • PyTorch

  • TensorFlow

  • Transformadores Hugging Face

Regiões da AWS
  • Leste dos EUA (Norte da Virgínia) (us-east-1)

  • Leste dos EUA (Ohio) (us-east-2)

  • Oeste dos EUA (Oregon) (us-west-2)

  • Europa (Frankfurt) (eu-central-1)

  • Europa (Irlanda) (eu-west-1)

nota

A Amazon SageMaker TensorBoard executa o TensorBoard aplicativo em uma ml.r5.large instância e incorre em cobranças após o nível SageMaker gratuito ou o período de teste gratuito do recurso. Para obter mais informações, consulte Definição de preço do Amazon SageMaker.

Pré-requisitos

A lista a seguir mostra os pré-requisitos para começar a usar. SageMaker TensorBoard

Prepare um trabalho de treinamento com uma configuração TensorBoard de dados de saída

Um trabalho de treinamento típico para aprendizado profundo SageMaker consiste em duas etapas principais: preparar um script de treinamento e configurar um iniciador de trabalhos de SageMaker treinamento. Nesta seção, você pode verificar as alterações necessárias para coletar dados TensorBoard compatíveis do SageMaker Treinamento.

Etapa 1: Modifique o script de treinamento

Certifique-se de determinar quais tensores e escalares de saída coletar e modificar as linhas de código em seu script de treinamento usando qualquer uma das seguintes ferramentas: TensorBoard X, TensorFlow Summary Writer, PyTorch Summary Writer ou SageMaker Debugger.

Além disso, certifique-se de especificar o caminho de saída de TensorBoard dados como o diretório de log (log_dir) para retorno de chamada no contêiner de treinamento.

Para obter mais informações sobre retornos de chamada por estrutura, consulte os recursos a seguir.

Etapa 2: Construir um lançador SageMaker de treinamento com configuração TensorBoard de dados

Use o sagemaker.debugger.TensorBoardOutputConfig ao configurar um estimador de SageMaker estrutura. Essa API de configuração mapeia o bucket do S3 que você especifica para salvar TensorBoard dados com o caminho local no contêiner de treinamento (/opt/ml/output/tensorboard). Passe o objeto do módulo para o parâmetro tensorboard_output_config da classe do estimador. O trecho de código a seguir mostra um exemplo de preparação de um TensorFlow estimador com o TensorBoard parâmetro de configuração de saída.

nota

Este exemplo pressupõe que você use o SDK do SageMaker Python. Se você usa a SageMaker API de baixo nível, deve incluir o seguinte na sintaxe de solicitação da CreateTrainingJobAPI.

"TensorBoardOutputConfig": { "LocalPath": "/opt/ml/output/tensorboard", "S3OutputPath": "s3_output_bucket" }
from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import TensorBoardOutputConfig # Set variables for training job information, # such as s3_out_bucket and other unique tags. ... LOG_DIR="/opt/ml/output/tensorboard" output_path = os.path.join( "s3_output_bucket", "sagemaker-output", "date_str", "your-training_job_name" ) tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=os.path.join(output_path, 'tensorboard'), container_local_output_path=LOG_DIR ) estimator = TensorFlow( entry_point="train.py", source_dir="src", role=role, image_uri=image_uri, instance_count=1, instance_type="ml.c5.xlarge", base_job_name="your-training_job_name", tensorboard_output_config=tensorboard_output_config, hyperparameters=hyperparameters )

Como acessar TensorBoard em SageMaker

Você pode acessar TensorBoard por dois métodos: programaticamente usando o sagemaker.interactive_apps.tensorboard módulo que gera uma URL não assinada ou pré-assinada, ou usando a página TensorBoard inicial no console. SageMaker Depois de abrir TensorBoard, SageMaker executa o TensorBoard plug-in e encontra automaticamente todos os dados de saída do trabalho de treinamento em formato TensorBoard de arquivo compatível.

Abra TensorBoard usando o sagemaker.interactive_apps.tensorboard módulo

O sagemaker.interactive_apps.tensorboard módulo fornece uma função chamada get_app_url that gera URLs não assinadas ou pré-assinadas para abrir o TensorBoard aplicativo em qualquer ambiente no Amazon SageMaker EC2. Isso é para fornecer uma experiência unificada para usuários do Studio Classic e não do Studio Classic. Para o ambiente Studio, você pode abrir TensorBoard executando a get_app_url() função como ela está ou também pode especificar um nome de trabalho para iniciar o rastreamento quando o TensorBoard aplicativo for aberto. Para ambientes que não sejam do Studio Classic, você pode abrir TensorBoard fornecendo suas informações de domínio e perfil de usuário para a função do utilitário. Com essa funcionalidade, independentemente de onde ou como você executa o código de treinamento e inicia trabalhos de treinamento, você pode acessar diretamente TensorBoard executando a get_app_url função em seu notebook ou terminal Jupyter.

nota

Essa funcionalidade está disponível no SageMaker Python SDK v2.184.0 e versões posteriores. Para usar essa funcionalidade, certifique-se de atualizar o SDK executando pip install sagemaker --upgrade.

Opção 1: Para SageMaker Studio Classic

Se você estiver usando o SageMaker Studio Classic, poderá abrir diretamente o TensorBoard aplicativo ou recuperar uma URL não assinada executando a get_app_url função da seguinte maneira. Como você já está no ambiente Studio Classic e está conectado como usuário do domínio, get_app_url() gera uma URL não assinada porque não é necessário se autenticar novamente.

Para abrir o TensorBoard aplicativo

O código a seguir abre automaticamente o TensorBoard aplicativo a partir da URL não assinada que a get_app_url() função retorna no navegador padrão do seu ambiente.

from sagemaker.interactive_apps import tensorboard region = "us-west-2" app = tensorboard.TensorBoardApp(region) app.get_app_url( training_job_name="your-training_job_name" # Optional. Specify the job name to track a specific training job )

Para recuperar um URL não assinado e abrir o aplicativo manualmente TensorBoard

O código a seguir imprime uma URL não assinada que você pode copiar para um navegador da Web e abrir o TensorBoard aplicativo.

from sagemaker.interactive_apps import tensorboard region = "us-west-2" app = tensorboard.TensorBoardApp(region) print("Navigate to the following URL:") print( app.get_app_url( training_job_name="your-training_job_name", # Optional. Specify the name of the job to track. open_in_default_web_browser=False # Set to False to print the URL to terminal. ) )

Observe que, se você executar as duas amostras de código anteriores fora do ambiente SageMaker Studio Classic, a função retornará uma URL para a página TensorBoard inicial no SageMaker console, pois elas não têm informações de login no seu domínio e perfil de usuário. Para criar um URL pré-assinado, consulte a Opção 2 na seção a seguir.

Opção 2: Para ambientes que não sejam do Studio Classic

Se você usa ambientes que não são do Studio Classic, como a instância do SageMaker Notebook ou o Amazon EC2, e deseja TensorBoard abrir diretamente do ambiente em que está, você precisa gerar uma URL pré-assinada com suas informações de domínio e perfil de usuário. Uma URL pré-assinada é uma URL que está conectada ao Amazon SageMaker Studio Classic enquanto a URL está sendo criada com seu domínio e perfil de usuário e, portanto, concede acesso a todos os aplicativos e arquivos de domínio associados ao seu domínio. Para abrir TensorBoard por meio de um URL pré-assinado, use a get_app_url função com seu domínio e nome de perfil de usuário da seguinte forma.

Observe que essa opção exige que o usuário do domínio tenha a sagemaker:CreatePresignedDomainUrl permissão. Sem a permissão, o usuário do domínio receberá um erro de exceção.

Importante

Não compartilhe nenhum URL pré-assinado. A get_app_url função cria URLs pré-assinados, que se autenticam automaticamente com seu domínio e perfil de usuário e dão acesso a todos os aplicativos e arquivos associados ao seu domínio.

print( app.get_app_url( training_job_name="your-training_job_name", # Optional. Specify the name of the job to track. create_presigned_domain_url=True, # Reguired to be set to True for creating a presigned URL. domain_id="your-domain-id", # Required if creating a presigned URL (create_presigned_domain_url=True). user_profile_name="your-user-profile-name", # Required if creating a presigned URL (create_presigned_domain_url=True). open_in_default_web_browser=False, # Optional. Set to False to print the URL to terminal. optional_create_presigned_url_kwargs={} # Optional. Add any additional args for Boto3 create_presigned_domain_url ) )
dica

A get_app_url função executa a SageMaker.Client.create_presigned_domain_urlAPI AWS SDK for Python (Boto3) no back-end. Como a create_presigned_domain_url API Boto3 cria URLs de domínio pré-assinados que expiram em 300 segundos por padrão, os URLs de TensorBoard aplicativos pré-assinados também expiram em 300 segundos. Se você quiser estender o tempo de expiração, passe o argumento ExpiresInSeconds para o argumento optional_create_presigned_url_kwargs da função get_app_url da seguinte maneira:

optional_create_presigned_url_kwargs={"ExpiresInSeconds": 1500}
nota

Se alguma de suas entradas passadas para os argumentos de get_app_url for inválida, a função exibirá um URL para a página de TensorBoard destino em vez de abrir o TensorBoard aplicativo. A mensagem de saída seria semelhante ao seguinte:

Navigate to the following URL: https://us-west-2.console.aws.amazon.com/sagemaker/home?region=us-west-2#/tensor-board-landing

Abra TensorBoard usando a get_app_url função como um método estimator de classe

Se você estiver executando um trabalho de treinamento usando a estimator classe do SDK do SageMaker Python e tiver um objeto ativo da estimator classe, também poderá acessar a get_app_urlfunção como um método de classe da classe. estimator Abra o TensorBoard aplicativo ou recupere um URL não assinado executando o get_app_url método da seguinte maneira. O método de get_app_url classe extrai o nome do trabalho de treinamento do estimador e abre o TensorBoard aplicativo com o trabalho especificado.

nota

Essa funcionalidade está disponível no SageMaker Python SDK v2.184.0 e versões posteriores. Para usar essa funcionalidade, certifique-se de atualizar o SDK executando pip install sagemaker --upgrade.

Opção 1: Para SageMaker Studio Classic

Para abrir o TensorBoard aplicativo

O código a seguir abre automaticamente o TensorBoard aplicativo a partir da URL não assinada que o get_app_url() método retorna no navegador padrão do seu ambiente.

estimator.get_app_url( app_type=SupportedInteractiveAppTypes.TENSORBOARD # Required. )

Para recuperar um URL não assinado e abrir o aplicativo manualmente TensorBoard

O código a seguir imprime uma URL não assinada que você pode copiar para um navegador da Web e abrir o TensorBoard aplicativo.

print( estimator.get_app_url( app_type=SupportedInteractiveAppTypes.TENSORBOARD, # Required. open_in_default_web_browser=False, # Optional. Set to False to print the URL to terminal. ) )

Observe que, se você executar as duas amostras de código anteriores fora do ambiente SageMaker Studio Classic, a função retornará uma URL para a página TensorBoard inicial no SageMaker console, pois elas não têm informações de login no seu domínio e perfil de usuário. Para criar um URL pré-assinado, consulte a Opção 2 na seção a seguir.

Opção 2: Para ambientes que não sejam do Studio Classic

Se você usa ambientes que não são do Studio Classic, como a instância do SageMaker Notebook e o Amazon EC2, e deseja gerar uma URL pré-assinada para abrir TensorBoard o aplicativo, use get_app_url o método com suas informações de domínio e perfil de usuário da seguinte forma.

Observe que essa opção exige que o usuário do domínio tenha a sagemaker:CreatePresignedDomainUrl permissão. Sem a permissão, o usuário do domínio receberá um erro de exceção.

Importante

Não compartilhe nenhum URL pré-assinado. A get_app_url função cria URLs pré-assinados, que se autenticam automaticamente com seu domínio e perfil de usuário e dão acesso a todos os aplicativos e arquivos associados ao seu domínio.

print( estimator.get_app_url( app_type=SupportedInteractiveAppTypes.TENSORBOARD, # Required create_presigned_domain_url=True, # Reguired to be set to True for creating a presigned URL. domain_id="your-domain-id", # Required if creating a presigned URL (create_presigned_domain_url=True). user_profile_name="your-user-profile-name", # Required if creating a presigned URL (create_presigned_domain_url=True). open_in_default_web_browser=False, # Optional. Set to False to print the URL to terminal. optional_create_presigned_url_kwargs={} # Optional. Add any additional args for Boto3 create_presigned_domain_url ) )

Abra TensorBoard através do SageMaker console

Você também pode usar a interface do SageMaker console para abrir o TensorBoard aplicativo. Há duas opções para abrir o TensorBoard aplicativo pelo SageMaker console.

Opção 1: iniciar TensorBoard a partir da página de detalhes do domínio

Navegue até a página de detalhes do domínio

O procedimento a seguir mostra como navegar até a página de detalhes do domínio.

  1. Abra o SageMaker console da Amazon em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação à esquerda, escolha Configurações do administrador.

  3. Em Configurações do administrador, escolha domínios.

  4. Na lista de domínios, selecione o domínio no qual você deseja iniciar o TensorBoard aplicativo.

Executar um aplicativo de perfil de usuário

O procedimento a seguir mostra como iniciar um aplicativo Studio Classic que tem como escopo um perfil de usuário.

  1. Na página de detalhes do domínio, escolha a guia Perfis de usuário.

  2. Identifique o perfil de usuário para o qual você deseja iniciar o aplicativo Studio Classic.

  3. Escolha Iniciar para o perfil de usuário selecionado e, em seguida, escolha TensorBoard.

Opção 2: iniciar TensorBoard a partir da página TensorBoard de destino

O procedimento a seguir descreve como iniciar um TensorBoard aplicativo a partir da TensorBoard página inicial.

  1. Abra o SageMaker console da Amazon em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação esquerdo, escolha TensorBoard.

  3. Em Começar, selecione o domínio no qual você deseja iniciar o aplicativo Studio Classic. Se seu perfil de usuário pertencer apenas a um domínio, você não verá a opção de selecionar um domínio.

  4. Selecione o perfil de usuário para o qual você deseja iniciar o aplicativo Studio Classic. Se não houver perfil de usuário no domínio, escolha Criar perfil de usuário. Para obter mais informações, consulte Remover perfis de usuário.

  5. Escolha Abrir TensorBoard.

A captura de tela a seguir mostra a localização de TensorBoard no painel de navegação esquerdo do SageMaker console e a página TensorBoard inicial SageMaker com no painel principal.

A página TensorBoard de destino

Acesse e visualize os dados de saída do treinamento em TensorBoard

Você pode realizar uma análise on-line ou off-line carregando os tensores de saída coletados dos buckets S3 combinados com trabalhos de treinamento durante ou após o treinamento.

Quando você abre o TensorBoard aplicativo, TensorBoard abre com a guia Gerenciador de SageMaker dados. A captura de tela a seguir mostra a visualização completa da guia Gerenciador de SageMaker dados no TensorBoard aplicativo.

Uma captura de tela da guia Gerenciador de SageMaker dados no aplicativo TensorBoard

Na guia Gerenciador de SageMaker dados, você pode selecionar qualquer trabalho de treinamento e carregar dados TensorBoard de saída de treinamento compatíveis do Amazon S3.

  1. Na seção Pesquisar trabalhos de treinamento, use os filtros para restringir a lista de trabalhos de treinamento que você deseja encontrar, carregar e visualizar.

  2. Na seção Lista de trabalhos de treinamento, use as caixas de seleção para escolher os trabalhos de treinamento dos quais você deseja extrair dados e visualizar para depuração.

  3. Escolha Adicionar trabalhos selecionados. Os trabalhos selecionados devem aparecer na seção Trabalhos de treinamento monitorados, conforme mostrado na captura de tela a seguir.

    Uma captura de tela da seção Trabalhos de treinamento monitorados na guia Gerenciador de SageMaker dados no aplicativo TensorBoard
nota

A guia Gerenciador de SageMaker dados mostra somente os trabalhos de treinamento configurados com o TensorBoardOutputConfig parâmetro. Verifique se você configurou o SageMaker estimador com esse parâmetro. Para ter mais informações, consulte Etapa 2: Construir um lançador SageMaker de treinamento com configuração TensorBoard de dados.

nota

As guias de visualização podem não aparecer se você estiver usando SageMaker com TensorBoard pela primeira vez ou se nenhum dado for carregado de um uso anterior. Depois de adicionar trabalhos de treinamento e esperar alguns segundos, atualize o visualizador escolhendo a seta circular no sentido horário no canto superior direito. As guias de visualização devem aparecer depois que os dados do trabalho forem carregados com êxito. Você também pode configurar a atualização automática usando o botão Configurações ao lado do botão de atualização no canto superior direito.

Explore os dados de resultados de treinamento visualizados em TensorBoard

Nas guias gráficas, você pode ver a lista dos trabalhos de treinamento carregados no painel esquerdo. Você também pode usar as caixas de seleção dos trabalhos de treinamento para mostrar ou ocultar visualizações. Os plug-ins TensorBoard dinâmicos são ativados dinamicamente, dependendo de como você configurou seu script de treinamento para incluir redatores de resumos e retornos de chamada de transmissão para coleção de tensores e escalares e, portanto, as guias gráficas também aparecem dinamicamente. As capturas de tela a seguir mostram exemplos de visualizações de cada guia com a visualização de dois trabalhos de treinamento que coletaram métricas para plug-ins de séries temporais, escalares, gráficos, distribuição e histogramas.

A visualização da guia SÉRIES TEMPORAIS

Uma captura de tela da guia SÉRIE TEMPORAL que mostra os TensorBoard dados dos trabalhos de treinamento selecionados para rastreamento e os gráficos de histogramas serializados no painel principal .

A visualização da guia SCALARS

Uma captura de tela da guia SCALARS que mostra os TensorBoard dados dos trabalhos de treinamento selecionados para rastreamento e os gráficos de valores escalares, como precisão e perda, em relação à etapa (ou época) no painel principal.

A visualização da guia GRÁFICOS

Uma captura de tela da guia GRÁFICOS que mostra o gráfico do modelo de um trabalho de treinamento selecionado.

A visualização da guia DISTRIBUIÇÕES

Uma captura de tela da guia DISTRIBUIÇÕES que mostra os TensorBoard dados dos trabalhos de treinamento selecionados para rastreamento e as mudanças na distribuição dos parâmetros do modelo, como vieses e kernels, em relação à etapa (ou época) no painel principal.

A visualização da guia HISTOGRAMAS

Uma captura de tela da guia HISTOGRAMAS que mostra os TensorBoard dados dos trabalhos de treinamento selecionados para rastreamento e os histogramas serializados dos parâmetros do modelo, como vieses e kernels, no painel principal.

Excluir aplicativos não utilizados TensorBoard

Depois de concluir o monitoramento e a experimentação dos trabalhos em TensorBoard, encerre o TensorBoard aplicativo.

  1. Abra o SageMaker console.

  2. No painel de navegação à esquerda, escolha Configurações do administrador.

  3. Em Configurações do administrador, escolha domínios.

  4. Escolha o seu domínio.

  5. Escolha seu perfil de usuário.

  6. Em Aplicativos, escolha Excluir aplicativo para a TensorBoard linha.

  7. Escolha Sim, excluir o aplicativo.

  8. Digite delete no campo de texto e escolha Excluir.

  9. Uma mensagem azul deve aparecer na parte superior da tela: o padrão está sendo excluído.

Considerações

Considere o seguinte ao usar SageMaker com TensorBoard.

  • Você não pode compartilhar os TensorBoard aplicativos para fins de colaboração porque o SageMaker domínio não permite o compartilhamento de aplicativos entre usuários. Os usuários podem compartilhar os tensores de saída salvos em um bucket do S3, se tiverem acesso ao bucket.

  • Os plug-ins de visualização podem não aparecer quando você inicia o TensorBoard aplicativo pela primeira vez. Depois de selecionar trabalhos de treinamento no plug-in SageMaker Data Manager, o TensorBoard aplicativo carrega os TensorBoard dados e preenche os plug-ins de visualização.

  • O TensorBoard aplicativo é desligado automaticamente após 1 hora de inatividade. Se você quiser encerrar o aplicativo quando terminar de usá-lo, desligue-o manualmente TensorBoard para evitar pagar pela instância que o hospeda. Para obter instruções sobre como excluir o aplicativo, consulte Excluir aplicativos não utilizados TensorBoard .

  • O TensorBoard aplicativo foi SageMaker projetado para fornecer out-of-the-box suporte para trabalhos SageMaker de treinamento. Essa integração integrada permite um mapeamento contínuo entre o diretório local dentro do contêiner de treinamento e um bucket do Amazon S3, facilitado na CreateTrainingJobcamada de API. Com essa integração, você pode mapear facilmente os caminhos do diretório conforme descrito na seção Preparar um trabalho de treinamento com uma configuração de dados TensorBoard de saída.

    No entanto, observe que o TensorBoard aplicativo não fornece out-of-the-box suporte para trabalhos de ajuste de SageMaker hiperparâmetros, pois a CreateHyperParameterTuningJobAPI não está integrada à configuração TensorBoard de saída do mapeamento. Para usar o TensorBoard aplicativo para trabalhos de ajuste de hiperparâmetros, você precisa escrever código para fazer o upload de métricas para o Amazon S3 em seu script de treinamento. Depois que as métricas são carregadas em um bucket do Amazon S3, você pode carregar o bucket no TensorBoard aplicativo em. SageMaker