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

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:

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

  • Utilização da GPU ao longo do tempo: Esse gráfico de cronograma mostra a taxa média de utilização da GPU 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 individual da GPU e as execuções relacionadas do kernel, use o Interface de linha do tempo. Observe que a coleção de atividades da GPU começa de onde você adicionou a função inicial do Profiler SMProf.start_profiling() no script de treinamento e termina em SMProf.stop_profiling().

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

  • Utilização da CPU ao longo do tempo: Esse gráfico de cronograma mostra a taxa média de utilização da CPU 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 utilização individual da GPU 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 kernels da GPU: Este gráfico circular mostra todos os kernels da GPU operados durante todo o trabalho de treinamento. Ele mostra os 15 principais kernels de GPU 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 kernels da GPU operados em segundos e a porcentagem é baseada em todo o tempo do perfil.

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

  • Contagens de lançamento de todos os kernels de GPU: Esse gráfico circular mostra o número de contagens de cada kernel de GPU lançado durante o trabalho de treinamento. Ele mostra os 15 principais kernels de GPU 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 kernels da GPU lançados e a porcentagem é baseada na contagem total de todos os kernels.

  • Contagens de lançamentos dos 15 principais kernels da GPU: Este gráfico circular mostra o número de contagens de cada kernel da GPU lançado durante o trabalho de treinamento. Ele mostra os 15 principais kernels da GPU. Passe o mouse sobre os setores para ver informações mais detalhadas. O valor mostra a contagem total dos kernels da GPU 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 dados FP32, como, FP16, e. INT32 INT8

  • Distribuição da atividade da GPU: Esse gráfico circular mostra a porcentagem de tempo gasto em atividades da GPU, como executar kernels, memória (memcpy e memset) e sincronização (sync).

  • Distribuição das operações de memória da GPU: Esse gráfico circular mostra a porcentagem de tempo gasto nas operações de memória da GPU. 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 ativo da GPU e da CPU e a taxa média de utilização da GPU e da CPU 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 kernels da GPU são lançados e medir o tempo gasto na execução deles. Nos painéis Tempo gasto por todos os kernels da GPU e Contagens de inicialização de todos os núcleos da GPU, 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 tempo de etapa, duração, histograma e gráficos circulares para a distribuição de precisão do kernel, distribuição de atividades da GPU e distribuição da operação de memória da GPU.

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 no GPUs, 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 tags de SageMaker IA 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 utilização da CPU e os contadores de desempenho.

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

      • Utilização do SUM: As taxas médias de utilização da GPU por instância.

      • HOST-0 PID-123: Um nome exclusivo atribuído a cada trilha de processo. A sigla PID é a ID do processo, e o número anexado a ela é o número da ID do processo que é registrado durante a captura de dados do processo. Esta seção mostra as seguintes informações do processo:

        • Utilização da GPU-inum_gpu: A taxa de utilização da GPU num_gpu-ésimo ao longo do tempo.

        • Dispositivo GPU-inum_gpu: O kernel é executado no dispositivo GPU inum_gpu-th.

          • stream icuda_stream: Fluxos CUDA mostrando a execução do kernel no dispositivo GPU. Para saber mais sobre os fluxos CUDA, veja os slides em PDF em CUDA C/C++ Streams and Concurrency fornecidos pela NVIDIA.

        • Host GPU-inum_gpu: O kernel é executado no host da GPU inum_gpu-th.

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 CPU, você pode rastrear os contadores de utilização e desempenho da CPU, como "clk_unhalted_ref.tsc" e "itlb_misses.miss_causes_a_walk", que são indicativos das instruções executadas na CPU.

Para cada GPU, 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 host da GPU.

Na visualização da linha do tempo, você também pode rastrear pares de launch-and-run kernels. Isso ajuda você a entender como a inicialização de um kernel agendada em um host (CPU) é executada no dispositivo de GPU 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 operação AllReduce, uma etapa essencial de comunicação e sincronização no treinamento distribuído, executada no dispositivo GPU-0. Na captura de tela, observe que a inicialização do kernel no host GPU-0 se conecta ao kernel executado no fluxo do dispositivo 1 GPU-0, 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 de conexão é sempre do host (CPU) para o dispositivo (GPU), pois cada kernel da GPU é sempre chamado a partir de uma 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 AI 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 encerramento automático da aplicação: Escolha e defina como Ativado para permitir que a aplicação seja encerrada automaticamente após o número especificado de horas de tempo ocioso. Para desativar a funcionalidade de desligamento automático, escolha Desativado.

  • Limite de encerramento automático em horas: Se você escolher Ativado para Ativar o encerramento automático da aplicação, poderá definir o tempo limite em horas para o encerramento automático da aplicação. Por padrão, ele é definida como 2.