Criação de perfis de ambientes com várias fatias

Os ambientes de vários segmentos de TPU na nuvem são compostos por vários segmentos de TPU que comunicam através da rede do centro de dados (DCN). Pode usar a ferramenta de estatísticas de grande escala no XProf para ver informações sobre a eficácia com que o seu ambiente de vários segmentos está a usar a rede DCN. Especificamente, a ferramenta Megascale Stats permite-lhe:

  • Veja e compreenda o desempenho da rede entre segmentos com base nos dados recolhidos
  • Identifique restrições de desempenho
  • Otimize o desempenho do modelo

Todas as métricas na ferramenta de estatísticas da Megascale são geradas por TPU. Para ativar esta ferramenta, siga os mesmos passos para capturar o perfil na sua framework e use a biblioteca XProfiler para configurar uma instância do TensorBoard XProf para ver os seus perfis. Desde que a sua carga de trabalho tenha sido executada como uma carga de trabalho de vários fragmentos, o TensorBoard apresenta a ferramenta "Estatísticas de grande escala" para qualquer carga de trabalho de vários fragmentos.

Para mais detalhes sobre a ferramenta de estatísticas de grande escala no XProf, consulte o guia da ferramenta de estatísticas de grande escala.

Terminologia

A ferramenta de estatísticas coletivas da DCN apresenta métricas que descrevem a comunicação que ocorre entre fatias de TPU num ambiente de várias fatias. Quando o tempo de execução da TPU inicia a comunicação entre fatias, é usada uma série de operações:

  • send: interrompe o anfitrião para iniciar o acesso direto à memória (DMA) e fornece um buffer preenchido ao anfitrião para iniciar a transferência de dados.
  • send-done: sinaliza ao anfitrião que a transferência de dados está concluída.
  • recv: fornece um buffer vazio para o anfitrião preencher com os dados transferidos.
  • recv-done: sinaliza ao anfitrião que os dados foram recebidos.

Uma ação coletiva é iniciada quando ocorre uma operação send e é concluída quando ocorre a operação recv-done correspondente.

Tempo de folga

Uma medida do tempo durante o qual o coletivo consegue enviar e receber dados. Isto não inclui as operações send, send-done, recv ou recv-done. Por exemplo, tendo em conta a seguinte cronologia:

Chip de cápsula v5e

O tempo de folga é calculado neste exemplo da seguinte forma:

Tempo de folga = t1 + t2 + t3

Aumentar o tempo de folga reduz as hipóteses de paralisar a TPU para um coletivo. Pode aumentar o tempo de folga escolhendo um método de divisão diferente.

Duração da paragem

A duração média do tempo que o coletivo gasta nas operações send, send-done, recv e recv-done. Tenha em atenção que isto não inclui o tempo gasto na transmissão de dados. Por exemplo, tendo em conta a seguinte cronologia:

Chip de cápsula v5e

Neste exemplo, a duração da paragem é calculada da seguinte forma:

Stall duration = tsend + tsend-done + trecv + trecv-done

Duração observada

O período entre as operações send e recv-done, incluindo o tempo de envio e receção de dados. Por exemplo, tendo em conta a seguinte cronologia:

Chip de cápsula v5e

A duração observada é calculada da seguinte forma:

Duração observada = tsend + t1 + tsend-done + t2 + trecv + t3 + trecv-done

Ocorrências

O número de vezes que uma recolha é iniciada e concluída durante a duração de um perfil. Uma operação coletiva é iniciada quando ocorre uma operação send e é concluída quando ocorre a operação recv-end correspondente. A operação send e a operação recv-done correspondente têm de ocorrer durante a duração de um perfil para serem incluídas nesta métrica.

Total de paragens agregadas

A quantidade total de tempo em que um coletivo bloqueia uma TPU durante a duração de um perfil. A paralisação total da agregação é calculada da seguinte forma:

Total de paragens agregadas = duração da paragem * ocorrências

Tamanho dos dados transmitidos

A quantidade de dados transmitidos através da rede para o coletivo durante a duração do perfil.

Largura de banda necessária

A largura de banda necessária para transmitir dados dentro da folga fornecida. Pode usar esta métrica para ver o número de coletivos que competem pela largura de banda da rede durante a duração do perfil. A largura de banda necessária é calculada da seguinte forma:

Largura de banda necessária = tamanho dos dados transmitidos / tempo de folga

Estado da ferramenta

A tabela seguinte mostra a versão do TensorFlow ou do tempo de execução da TPU necessária para cada métrica apresentada na ferramenta de estatísticas coletivas da DCN.

Estatísticas coletivas da DCN Versão do tempo de execução do TensorFlow of TPU suportada
Tempo de folga TensorFlow 2.15.0, TensorBoard 2.15.1 e TensorBoard-plugin-profile 2.15.0
Duração da paragem TensorFlow 2.15.0, TensorBoard 2.15.1 e TensorBoard-plugin-profile 2.15.0
Duração observada TensorFlow 2.15.0, TensorBoard 2.15.1 e TensorBoard-plugin-profile 2.15.0
Ocorrências TensorFlow 2.15.0, TensorBoard 2.15.1 e TensorBoard-plugin-profile 2.15.0
Total de paragens agregadas tf-nightly, tb-nightly, tbp-nightly
Tamanho dos dados transmitidos tf-nightly, tb-nightly, tbp-nightly
Largura de banda necessária tf-nightly, tb-nightly, tbp-nightly

Como analisar a ferramenta de estatísticas coletivas da DCN

  1. Execute o servidor do TensorBoard e aceda ao separador Perfil.

  2. Ordene a tabela na ferramenta de estatísticas coletivas do DCN por Total de bloqueios agregados por ordem descendente.

  3. Identifique o nome coletivo do DCN que tem o Total agregado de bloqueios mais elevado. Se a duração da paragem agregada deste coletivo for significativamente elevada em comparação com outros, isto pode indicar que existe um gargalo no coletivo da DCN.

  4. Multiplique a largura de banda necessária do coletivo DCN pelo número de núcleos. Existem 8 núcleos por anfitrião de TPU v4, pelo que a largura de banda necessária para um coletivo é 8 vezes o valor apresentado. Se a largura de banda necessária for superior à largura de banda máxima da rede da TPU, isto pode significar que a rede está congestionada. Para reduzir a largura de banda necessária, experimente alterar o mecanismo de divisão que usa. Para mais informações sobre os mecanismos de divisão, consulte o artigo Vista geral do Multislice do TPU na nuvem.

  5. Gere um despejo de HLO para determinar se existem problemas de compilação. É melhor distribuir as operações send e recv-done para um coletivo para permitir o agendamento de mais operações HLO sobrepostas. A sobreposição de mais operações HLO reduz o tempo de paragem da TPU.

  6. Verifique a duração das operações recv-done no Trace Viewer para o coletivo da DCN que tem o total agregado máximo de paragens. Se a duração da transferência for elevada, pode haver um gargalo de largura de banda porque as operações são normalmente bloqueadas na rede para obter os dados.recv-done

  7. Se a duração das operações recv-done não for demasiado elevada em comparação com o tempo de folga, isto pode indicar um problema de hardware.