Como criar o perfil de ambientes Multislice

Os ambientes Multislice do Cloud TPU são compostos por várias frações Pod de TPU que se comunicam pela rede de data center (DCN, na sigla em inglês). Use a ferramenta de estatísticas coletivas DCN para ver informações sobre a eficácia com que o ambiente Multislice está utilizando a rede DCN. Especificamente, a ferramenta DCN Collective Stats permite:

  • Visualizar e entender o desempenho de rede entre fatias com base nos dados coletados
  • Identificar gargalos de desempenho
  • Otimizar o desempenho do modelo

Todas as métricas na ferramenta de estatísticas coletivas da DCN são geradas por TPU.

Terminologia

A ferramenta de estatísticas coletivas da DCN exibe métricas que descrevem a comunicação que ocorre entre frações de TPU em um ambiente Multislice. Quando o ambiente de execução da TPU inicia a comunicação entre fatias, uma série de operações é usada:

send
Interrompe o host para iniciar o acesso direto à memória (DMA) e fornece um buffer preenchido ao host para iniciar a transferência de dados.
send-done
Sinaliza ao host que a transferência de dados foi concluída.
recv
Fornece um buffer vazio para o host preencher com os dados transferidos.
recv-done
Sinaliza ao host que os dados foram recebidos.

Um coletivo é iniciado quando uma operação send ocorre e é concluído quando a operação recv-done correspondente ocorre.

Tempo do Slack

Uma medida de tempo que o coletivo é capaz de enviar e receber dados. Isso não inclui as operações send, send-done, recv ou recv-done. Por exemplo, considerando o seguinte cronograma:

Chip v5e do pod

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

Tempo no Slack = t1 + t2 + t3

Aumentar o tempo de folga reduz as chances de paralisar a TPU para um coletivo. É possível aumentar o tempo de folga escolhendo um método de fragmentação diferente.

Duração da parada

A duração média do tempo que o coletivo gasta nas operações de envio, envio concluído, recebimento e recebimento concluído. Isso não inclui o tempo gasto na transmissão de dados. Por exemplo, considerando o seguinte cronograma:

Chip v5e do pod

A duração da parada é calculada neste exemplo como:

Duração da parada = tsend + tsend-done + trecv + trecv-done

Duração observada

O tempo entre as operações send e recv-done, incluindo o tempo de envio e recebimento de dados. Por exemplo, considerando o seguinte cronograma:

Chip v5e do pod

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 um coletivo é iniciado e concluído durante a duração de um perfil. Um coletivo é iniciado quando uma operação send ocorre e é concluído quando a operação recv-end correspondente ocorre. A operação send e a operação recv-done correspondente precisam ocorrer dentro de uma duração de perfil para serem incluídas nessa métrica.

Total de paradas agregado

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

Total agregado de paradas = duração da parada * ocorrências

Tamanho de transmissão dos dados

A quantidade de dados transmitidos pela 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. É possível usar essa 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 da transmissão de dados / tempo de folga

Status da ferramenta

A tabela a seguir mostra a versão do ambiente de execução do TensorFlow ou TPU necessária para cada métrica exibida na ferramenta DCN Collective Stats.

Estatísticas do DCN Collective Versão compatível do ambiente de execução da TPU
Tempo do Slack TensorFlow 2.15.0, TensorBoard 2.15.1 e Tensorboard-plugin-profile 2.15.0
Duração da parada 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 paradas agregado tf-nightly, tb-nightly, tb-nightly
Tamanho de transmissão dos dados tf-nightly, tb-nightly, tb-nightly
Largura de banda necessária tf-nightly, tb-nightly, tb-nightly

Como analisar a ferramenta de estatísticas do DCN Collective

  1. Execute o servidor do TensorBoard e acesse a guia Perfil.
  2. Classifique a tabela na ferramenta de estatísticas coletivas da DCN por Parada total agregada em ordem decrescente.
  3. Identifique o nome coletivo DCN que tem a maior Loja total agregada. Se a duração da parada agregada desse coletivo for significativamente alta em comparação com os outros, isso pode indicar que há um gargalo no coletivo DCN.
  4. Multiplique a largura de banda necessária do coletivo DCN pelo número de núcleos. Como há oito núcleos por host da TPU v4, a largura de banda necessária para um coletivo é oito x o valor exibido. Se a largura de banda necessária for maior que a largura máxima da rede da TPU, isso pode significar que a rede está congestionada. Para reduzir a largura de banda necessária, tente alterar o mecanismo de fragmentação usado. Para mais informações sobre mecanismos de fragmentação, consulte Visão geral do Cloud TPU Multislice.
  5. Gere um HLO dump para determinar se há algum problema do compilador. É melhor distribuir as operações send e recv-done para um coletivo para permitir a programação de operações HLO mais sobrepostas. A sobreposição de mais operações de HLO reduz o tempo de inatividade da TPU.
  6. Verifique a duração das operações recv-done no Visualizador de rastreamento para o coletivo DCN que tem a parada total agregada máxima. Se a duração da transferência for alta, poderá haver um gargalo de largura de banda, porque as operações recv-done geralmente são bloqueadas na rede para acessar os dados.
  7. Se a duração das operações recv-done não for muito alta em comparação com o tempo de folga, isso pode indicar um problema de hardware.