Explore os dados de saída do perfil visualizados na interface do SageMaker usuário do Profiler - 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á.

Explore os dados de saída do perfil visualizados na interface do SageMaker usuário do Profiler

Esta seção mostra a interface do usuário do SageMaker Profiler e fornece dicas sobre como usá-la e obter informações a partir dela.

Carregar perfil

Quando você abre a interface do SageMaker Profiler, a página Carregar perfil é aberta. Para carregar e gerar o Painel e a Linha do tempo, siga o procedimento a seguir.

Para carregar o perfil de um trabalho de treinamento
  1. Na seção Lista de trabalhos de treinamento, use a caixa de seleção para escolher o trabalho de treinamento para o qual você deseja carregar o perfil.

  2. Escolha Load. O nome do trabalho deve aparecer na seção Perfil carregado na parte superior.

  3. Escolha o botão de opção à esquerda do Nome do trabalho para gerar o Painel e a Linha do tempo. Observe que quando você escolhe o botão de opção, a interface do usuário abre automaticamente o Painel. Observe também que, se você gerar as visualizações enquanto o status do trabalho e o status do carregamento ainda parecem estar em andamento, a interface do usuário do SageMaker Profiler gerará gráficos de painel e uma linha do tempo até os dados de perfil mais recentes coletados do trabalho de treinamento contínuo ou dos dados de perfil parcialmente carregados.

dica

Você pode carregar e visualizar um perfil por vez. Para carregar outro perfil, você deve primeiro descarregar o perfil carregado anteriormente. Para descarregar um perfil, use o ícone da lixeira na extremidade direita do perfil na seção Perfil carregado.

Uma captura de tela da página Carregar perfil na interface do usuário do SageMaker Profiler

Painel

Depois de terminar de carregar e selecionar o trabalho de treinamento, a interface do usuário abre a página Painel com os seguintes painéis por padrão.

  • GPUtempo ativo — Esse gráfico circular mostra a porcentagem de tempo GPU ativo versus tempo GPU ocioso. Você pode verificar se GPUs está mais ativo do que ocioso durante todo o trabalho de treinamento. GPUo tempo ativo é baseado nos pontos de dados do perfil com uma taxa de utilização maior que 0%, enquanto o tempo GPU ocioso são os pontos de dados perfilados com 0% de utilização.

  • GPUutilização ao longo do tempo — Esse gráfico de cronograma mostra a taxa média de GPU utilização ao longo do tempo por nó, agregando todos os nós em um único gráfico. Você pode verificar se há uma carga de trabalho desequilibrada, problemas de subutilização, gargalos ou problemas de inatividade durante determinados intervalos de tempo. GPUs Para rastrear a taxa de utilização no GPU nível individual e as execuções relacionadas do kernel, use o. Interface de linha do tempo Observe que a coleta de GPU atividades começa de onde você adicionou a função inicial do profiler SMProf.start_profiling() em seu script de treinamento e termina em. SMProf.stop_profiling()

  • CPUtempo ativo — Esse gráfico circular mostra a porcentagem de tempo CPU ativo versus tempo CPU ocioso. Você pode verificar se CPUs está mais ativo do que ocioso durante todo o trabalho de treinamento. CPUo tempo ativo é baseado nos pontos de dados perfilados com uma taxa de utilização maior que 0%, enquanto o tempo CPU ocioso são os pontos de dados perfilados com 0% de utilização.

  • CPUutilização ao longo do tempo — Esse gráfico de cronograma mostra a taxa média de CPU utilização ao longo do tempo por nó, agregando todos os nós em um único gráfico. Você pode verificar se CPUs eles estão congestionados ou subutilizados durante determinados intervalos de tempo. Para rastrear a taxa de utilização do CPUs alinhado com a GPU utilização individual e as execuções do kernel, use o. Interface de linha do tempo Observe que as métricas de utilização começam desde o início da inicialização do trabalho.

  • Tempo gasto por todos os GPU kernels — Este gráfico circular mostra todos os GPU kernels operados durante todo o trabalho de treinamento. Ele mostra os 15 principais GPU kernels por padrão como setores individuais e todos os outros kernels em um setor. Passe o mouse sobre os setores para ver informações mais detalhadas. O valor mostra o tempo total dos GPU kernels operados em segundos e a porcentagem é baseada em todo o tempo do perfil.

  • Tempo gasto pelos 15 principais GPU kernels — Este gráfico circular mostra todos os GPU kernels operados durante todo o trabalho de treinamento. Ele mostra os 15 principais GPU kernels como setores individuais. Passe o mouse sobre os setores para ver informações mais detalhadas. O valor mostra o tempo total dos GPU kernels operados em segundos e a porcentagem é baseada em todo o tempo do perfil.

  • Contagens de lançamento de todos os GPU kernels — Esse gráfico circular mostra o número de contagens de cada GPU kernel lançado durante o trabalho de treinamento. Ele mostra os 15 principais GPU kernels como setores individuais e todos os outros kernels em um setor. Passe o mouse sobre os setores para ver informações mais detalhadas. O valor mostra a contagem total dos GPU kernels lançados e a porcentagem é baseada na contagem total de todos os kernels.

  • Contagens de lançamento dos 15 principais GPU kernels — Esse gráfico circular mostra o número de contagens de cada GPU kernel lançado durante o trabalho de treinamento. Mostra os 15 principais GPU grãos. Passe o mouse sobre os setores para ver informações mais detalhadas. O valor mostra a contagem total dos GPU kernels lançados e a porcentagem é baseada na contagem total de todos os kernels.

  • Distribuição do tempo das etapas — Esse histograma mostra a distribuição das durações das etapas em. GPUs Esse gráfico é gerado somente depois que você adiciona o anotador de etapas no script de treinamento.

  • Distribuição de precisão do kernel — Esse gráfico circular mostra a porcentagem de tempo gasto na execução de kernels em diferentes tipos de dadosFP32, como,FP16, e. INT32 INT8

  • GPUdistribuição de atividades — Esse gráfico circular mostra a porcentagem de tempo gasto em GPU atividades, como executar kernels, memória (memcpyememset) e sincronização (). sync

  • GPUdistribuição de operações de memória — Esse gráfico circular mostra a porcentagem de tempo gasto em operações de GPU memória. Isso visualiza as atividades memcopy e ajuda a identificar se o trabalho de treinamento está gastando muito tempo em determinadas operações de memória.

  • Crie um novo histograma — Crie um novo diagrama de uma métrica personalizada que você anotou manualmente durante a Etapa 1: Adapte seu script de treinamento usando os módulos SageMaker Profiler Python Ao adicionar uma anotação personalizada a um novo histograma, selecione ou digite o nome da anotação que você adicionou no script de treinamento. Por exemplo, no script de treinamento de demonstração na Etapa 1, step, Forward, Backward, Optimize e Loss estão as anotações personalizadas. Ao criar um novo histograma, esses nomes de anotações devem aparecer no menu suspenso para seleção de métricas. Se você escolher Backward, a interface do usuário adiciona o histograma do tempo gasto em retrocessos ao longo do tempo perfilado no painel. Esse tipo de histograma é útil para verificar se há valores discrepantes demorando muito mais e causando problemas de gargalo.

As capturas de tela a seguir mostram a taxa de tempo CPU ativo GPU e a média GPU e a taxa de CPU utilização em relação ao tempo por nó de computação.

Uma captura de tela da página do Dashboard na interface do SageMaker Profiler

A captura de tela a seguir mostra um exemplo de gráficos circulares para comparar quantas vezes os GPU kernels são lançados e medir o tempo gasto em executá-los. Nos painéis Tempo gasto por todos os GPU kernels e Contagens de lançamento de todos os GPU kernels, você também pode especificar um número inteiro no campo de entrada para k para ajustar o número de legendas a serem mostradas nos gráficos. Por exemplo, se você especificar 10, os gráficos mostrarão os 10 kernels mais executados e lançados, respectivamente.

Uma captura de tela da página do Dashboard na interface do SageMaker Profiler

A captura de tela a seguir mostra um exemplo de etapa, tempo, duração, histograma e gráficos circulares para a distribuição de precisão do kernel, distribuição de GPU atividades e GPU distribuição de operação de memória.

Uma captura de tela da página do Dashboard na interface do SageMaker Profiler

Interface de linha do tempo

Para obter uma visão detalhada dos recursos computacionais no nível das operações e dos kernels programados CPUs e executados noGPUs, use a interface Timeline.

Você pode ampliar e reduzir o zoom e se deslocar para a esquerda ou para a direita na interface da linha do tempo usando o mouse, as teclas [w, a, s, d] ou as quatro teclas de seta do teclado.

dica

Para obter mais dicas sobre os atalhos do teclado para interagir com a interface da Linha do tempo, escolha Atalhos de teclado no painel esquerdo.

As trilhas da linha do tempo são organizadas em uma estrutura de árvore, fornecendo informações desde o host ao dispositivo. Por exemplo, se você executar N instâncias com oito GPUs em cada, a estrutura do cronograma de cada instância seria a seguinte.

  • algo-i node — Essas são as SageMaker tags para atribuir trabalhos às instâncias provisionadas. O dígito inode é atribuído aleatoriamente. Por exemplo, se você usar 4 instâncias, esta seção se expandirá de algo-1 para algo-4.

    • CPU— Nesta seção, você pode verificar a taxa média de CPU utilização e os contadores de desempenho.

    • GPUs— Nesta seção, você pode verificar a taxa média de GPU utilização, a taxa de GPU utilização individual e os kernels.

      • SUMUtilização — As taxas médias de GPU utilização por instância.

      • HOST-0 PID -123 — Um nome exclusivo atribuído a cada trilha do processo. O acrônimo PID é o ID do processo, e o número anexado a ele é o número do ID do processo que é registrado durante a captura de dados do processo. Esta seção mostra as seguintes informações do processo.

        • GPUnum_gpuutilização -i — A taxa de utilização do i num_gpu GPU -th ao longo do tempo.

        • GPU-i num_gpu device — O kernel é executado no num_gpu GPU i-th dispositivo.

          • stream i cuda_stream — CUDA streams mostrando a execução do kernel no GPU dispositivo. Para saber mais sobre CUDA streams, consulte os slides PDF em CUDAC/C++ Streams and Concurrency fornecidos por. NVIDIA

        • GPU-i num_gpu host — O kernel é iniciado no num_gpu GPU i-th host.

As várias capturas de tela a seguir mostram a linha do tempo do perfil de um trabalho de treinamento executado em ml.p4d.24xlarge instâncias equipadas com 8 NVIDIA A100 Tensor Core em cada uma. GPUs

A seguir, é apresentada uma visão ampliada do perfil, imprimindo uma dúzia de etapas, incluindo um carregador de dados intermitente entre step_232 e step_233 para buscar o próximo lote de dados.

Página de cronograma na interface do usuário do SageMaker Profiler, que visualiza o perfil de um exemplo de trabalho de treinamento.

Para cada umCPU, você pode rastrear os contadores de CPU utilização e desempenho, como "clk_unhalted_ref.tsc" e"itlb_misses.miss_causes_a_walk", que são indicativos das instruções executadas no. CPU

Para cada umGPU, você pode ver a linha do tempo do host e a linha do tempo do dispositivo. Os lançamentos do kernel estão na linha do tempo do host e as execuções do kernel estão na linha do tempo do dispositivo. Você também pode ver anotações (como avançar, retroceder e otimizar) se tiver adicionado um script de treinamento na linha do tempo do GPU anfitrião.

Na visualização da linha do tempo, você também pode rastrear pares de launch-and-run kernels. Isso ajuda você a entender como uma inicialização do kernel agendada em um host (CPU) é executada no GPU dispositivo correspondente.

dica

Pressione a tecla f para ampliar o kernel selecionado.

A captura de tela a seguir é uma visão ampliada de step_233 e step_234 para a captura de tela anterior. O intervalo da linha do tempo selecionado na captura de tela a seguir é a AllReduce operação, uma etapa essencial de comunicação e sincronização no treinamento distribuído, executada no GPU dispositivo -0. Na captura de tela, observe que a inicialização do kernel no host GPU -0 se conecta ao kernel executado no fluxo de dispositivos GPU -0 1, indicado com a seta na cor ciano.

Uma captura de tela da página Timeline na interface do Profiler SageMaker

Além disso, duas guias de informações aparecem no painel inferior da interface do usuário quando você seleciona um intervalo da linha do tempo, conforme mostrado na captura de tela anterior. A guia Seleção atual mostra os detalhes do kernel selecionado e da inicialização do kernel conectado a partir do host. A direção da conexão é sempre do host (CPU) para o dispositivo (GPU), pois cada GPU kernel é sempre chamado de a. CPU A guia Conexões mostra o par escolhido para iniciar e executar o kernel. Você pode selecionar qualquer um deles para movê-lo para o centro da visualização da Linha do tempo.

A captura de tela a seguir amplia ainda mais o par de lançamento e execução da operação AllReduce.

Uma captura de tela da página Timeline na interface do Profiler SageMaker

Informações

Em Informações, você pode acessar informações sobre o trabalho de treinamento carregado, como o tipo de instância, Amazon Resource Names (ARNs) dos recursos computacionais provisionados para o trabalho, nomes de nós e hiperparâmetros.

Configurações

Por padrão, a instância do aplicativo SageMaker Profiler UI está configurada para ser desligada após 2 horas de tempo ocioso. Em Configurações, use as seguintes configurações para ajustar o cronômetro de desligamento automático.

  • Ativar desligamento automático do aplicativo — Escolha e defina como Ativado para permitir que o aplicativo seja desligado automaticamente após o número especificado de horas de tempo ocioso. Para desativar a funcionalidade de desligamento automático, escolha Desativado.

  • Limite de desligamento automático em horas — Se você escolher Ativado para Ativar o desligamento automático do aplicativo, poderá definir o tempo-limite em horas para o desligamento automático do aplicativo. Por padrão, ele é definida como 2.