Ferramenta de estatísticas de operação do HLO

É possível usar as estatísticas de operação do HLO para conferir as estatísticas de desempenho das operações do High Level Optimizer (HLO) executadas durante uma sessão de criação de perfil. Essa ferramenta é útil para identificar possíveis metas de otimização de desempenho, destacando as operações mais demoradas no gráfico de HLO durante o período de perfil.

Plataformas compatíveis

TPU: compatível

GPU: compatível

Para GPUs, as operações HLO têm uma relação N:M com os kernels que são executados. Para conferir estatísticas no nível do kernel, consulte a ferramenta "Estatísticas do kernel da GPU".

Componentes da ferramenta de estatísticas de operações do HLO

A ferramenta HLO Op Stats tem os seguintes componentes-chave:

  • Tabela de estatísticas de operação de HLO: é o componente principal, apresentando um detalhe detalhado de cada operação de HLO executada durante a sessão de criação de perfil em um formato tabular. Há uma linha para cada operação de HLO diferente e colunas que capturam vários detalhes relacionados a essa operação.
    • Um seletor suspenso permite que você decida quais colunas quer visualizar para cada operação de HLO.
    • Também é possível filtrar linhas por categoria de operação HLO usando um segundo seletor de menu suspenso.
    • As caixas de pesquisa permitem filtrar por IDs de programas específicos, operações de HLO, o texto da operação de HLO ou o nome da operação do framework. Os filtros são selecionados para a string fornecida que aparece em qualquer lugar da respectiva coluna.
  • Seção de gráficos resumidos: essa seção tem gráficos que resumem a tabela detalhada por operação da seguinte maneira:
    • Um gráfico de pizza que mostra a fração de tempo consumida por diferentes categorias de operações de HLO.
    • Um gráfico de pizza que mostra a fração de tempo consumida por diferentes operações HLO individuais (truncadas para as operações N principais, com o restante classificado como "Outros" para melhorar a legibilidade).
    • Um gráfico de pizza que mostra a fração do tempo total gasto em operações que fazem parte da rematerialização. O XProf recebe essas informações dos metadados do compilador associados ao perfil.
    • Um gráfico de pizza que mostra as categorias de operação de HLO para onde o tempo de rematerialização (se houver) vai.
    • Tempo gasto na compilação externa: a compilação externa é um recurso do TensorFlow que permite que determinadas operações em um cálculo XLA sejam executadas de forma transparente na CPU host, em vez de no dispositivo acelerador, por exemplo, tf.summary ou tf.print que exigem acesso de E/S que o dispositivo não tem.
    • Um gráfico que mostra os GFLOPS/s de todas as operações de HLO, ordenados por tempo próprio total.
    • Somente para TPUs, tempo por HLO por grupo de réplica: um menu suspenso permite escolher entre as diferentes operações coletivas executadas durante a sessão de criação de perfil. Diferentes instâncias dessa operação coletiva podem ter sido executadas em diferentes grupos de réplicas (por exemplo, AllGather); um gráfico de pizza mostra a distribuição do tempo entre essas diferentes instâncias.

Detalhes da tabela de estatísticas da operação de HLO

Clique em qualquer um dos cabeçalhos de coluna para classificar a tabela de estatísticas de operação da HLO. A ordem padrão é baseada no tempo total de autoexecução da operação (rotulada como "rank" na tabela).

A tabela inclui as seguintes informações para cada operação de HLO:

  • Nome da operação: o nome exclusivo atribuído à operação HLO pelo compilador do XLA.
  • ID do programa: um identificador do módulo HLO associado a esta operação
  • Categoria de operação HLO: são definidas principalmente pelo compilador XLA. O XProf também usa heurísticas para identificar e categorizar determinadas operações (por exemplo, fusões de convolução).
  • Texto de operação HLO: fornecido pelo compilador XLA e inclui detalhes como os tipos e formas de entradas/parâmetros.
  • Nome da operação do framework: a operação no nível do framework (por exemplo, JAX) que resultou na geração dessa operação HLO.
  • Ocorrências: o número total de vezes que essa operação específica de HLO foi executada durante o período de criação de perfil.
  • Tempo total (μs): o tempo cumulativo gasto na execução dessa operação em todas as ocorrências. Se essa operação tiver operações filhas (por exemplo, dentro de uma fusão), esse tempo inclui o tempo gasto nessas operações filhas.
  • Tempo médio (μs): o tempo médio por execução dessa operação HLO, incluindo o tempo gasto em operações filhas, se houver.
  • Tempo próprio total (μs): o tempo cumulativo gasto apenas no corpo desta operação de HLO, excluindo o tempo gasto nas operações filhas.
  • Tempo próprio médio (μs): o tempo médio por execução desta operação de HLO, excluindo o tempo gasto nas operações filhas.
  • Tempo próprio total (%): o tempo próprio da operação como uma porcentagem do tempo total no dispositivo em todas as operações.
  • Tempo próprio total cumulativo (%): uma soma em execução do tempo próprio total (%) de todas as operações que aparecem antes na ordem de "classificação".
  • Parada de DMA (%): a porcentagem do tempo total durante o qual a operação foi interrompida devido a operações de acesso direto à memória (DMA).
  • Consumo de largura de banda (uso/s) para FLOPs, HBM e memórias internas de TPU, se disponível (por exemplo, O CMEM está presente apenas na TPU v4. Todos são calculados usando a análise de custo estático do compilador (numerador) e o tempo de execução de perfil (denominador).
  • Modelo GFLOPS/s: o custo de GFLOPs é calculado pelo compilador XLA, e o tempo é medido pelo perfil.
  • GFLOPS/s normalizado: normaliza os FLOPs computados pelo compilador por operação com base na precisão numérica e nos FLOPs máximos aceitos pelo dispositivo para diferentes precisões. Por exemplo, a TPU v6e oferece suporte ao dobro de FLOPs de pico em int8 do que em bf16. O XProf é padronizado para bf16 por padrão.
  • Largura de banda de memória: o número de bytes/s consumidos pela operação de qualquer memória (por exemplo, VMEM e HBM de TPU no chip). O compilador XLA fornece o número de "bytes" e a duração é medida no perfil.
  • Largura de banda da HBM: o número de bytes/s consumidos especificamente da HBM.
  • Intensidade operacional: calculada como a proporção de FLOPS por bytes, conforme definido para a análise de teto.
  • Limite de computação/memória: com base no modelo de teto, essa coluna indica se o desempenho da operação é limitado principalmente por recursos de computação ou pela largura de banda da memória.
  • Rematerialização: indica se a operação fez parte de uma rematerialização.
  • Outside compilation: indica se a operação foi executada na CPU do host usando a facilidade de compilação externa do TensorFlow.
  • Autotuned: indica se a operação foi ajustada automaticamente pelo XLA. Para mais informações, consulte Ajuste automático e Ajuste automático persistente.