Ferramenta de análise de limite de cobertura
A ferramenta de análise de teto oferece um modelo de desempenho visual intuitivo que pode ser usado para entender as limitações inerentes do hardware que afetam o desempenho do programa. Especificamente, ele se concentra se o programa é limitado por memória ou limitado por computação e quão próximo o desempenho do programa está do pico teórico de desempenho do hardware, representado como um "roofline".
Plataformas compatíveis
TPU: compatível
GPU: com suporte (em versão Beta)
O que é o gráfico de limite máximo
O gráfico de teto mostra a relação entre a intensidade operacional (FLOPS por byte acessado) e os FLOPS por segundo alcançados.
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
A forma de "teto" é formada pelo menor valor de FLOPS de pico e o desempenho alcançável, considerando a largura de banda de memória e a intensidade operacional. O ponto de pico indica a intensidade operacional mínima necessária para atingir o pico de FLOPS.
Saiba mais sobre modelos de roofline em Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures, ou no tópico Roofline model na Wikipedia.
Como interpretar o gráfico de limite máximo
Ao traçar a intensidade operacional e os FLOPS alcançados para diferentes etapas, partes do programa ou operações individuais de HLO no gráfico de teto, você pode ter insights sobre os gargalos de desempenho:
- Se um ponto de dados estiver na parte inclinada do limite máximo, o desempenho provavelmente será limitado pela largura de banda da memória (limitação de memória). Aumentar a intensidade operacional (realizar mais cálculos por byte de dados acessados) pode melhorar o desempenho.
- Se um ponto de dados estiver na parte plana do teto, a performance provavelmente será limitada pela capacidade de computação (limitada por computação). Nesse caso, aumentar ainda mais a intensidade operacional pode não resultar em ganhos significativos de desempenho, a menos que os FLOPS máximos do hardware possam ser melhor utilizados.
- A distância de um ponto de dados em relação ao limite máximo indica o potencial de melhoria de performance. Uma distância maior sugere que há oportunidades de otimizar o programa para aproveitar melhor os recursos do hardware.
Componentes da interface
A interface da ferramenta de análise de limite de teto tem vários componentes importantes:
- Uma seção de informações do dispositivo descreve as especificações de hardware, que são usadas para desenhar estaticamente as "linhas de teto" no gráfico.
- Um gráfico de limite máximo no nível do programa com pontos de dados correspondentes aos
seguintes:
- A duração total do perfil.
- A duração total do perfil, mas com dados de FLOPS/s derivados de contadores de desempenho de hardware, em vez dos modelos de custo padrão calculados pelo compilador XLA.
- Uma média das etapas completas executadas durante a duração do perfil (para jobs de treinamento. Você pode ignorar a terminologia de etapas para jobs de inferência).
- Cada etapa concluída que foi executada durante a duração do perfil (para jobs de treinamento. Você pode ignorar a terminologia de etapas para jobs de inferência).
- O gráfico de teto também tem os seguintes recursos:
- Você pode incluir ou excluir operações de infeed/outfeed usando o menu suspenso fornecido.
- Passar o cursor sobre qualquer um dos pontos de dados no gráfico mostra outras informações relevantes, como números de largura de banda para diferentes memórias, tempo total gasto etc.
- Uma tabela de estatísticas no nível do programa que fornece detalhes adicionais para cada ponto de dados, como a porcentagem de utilização máxima de memória, a porcentagem de taxa de FLOP máxima etc.
- Um segundo gráfico de teto que fornece informações mais detalhadas, com pontos
de dados plotados para as 1.000 operações mais demoradas durante o período de
criação de perfil:
- Assim como no gráfico de limite máximo no nível do programa, passar o cursor sobre cada ponto de dados mostra mais informações sobre essa operação.
- É possível personalizar os pontos de dados mostrados no gráfico das seguintes
maneiras:
- Incluir/excluir operações de infeed e outfeed usando um menu suspenso.
- Filtrar categorias específicas de operações.
- Filtrar operações vinculadas a um determinado recurso.
- Filtrar uma operação nomeada específica.
- Uma segunda tabela de estatísticas, semelhante à tabela do nível do programa, que fornece mais detalhes para cada ponto de dados.
Em todas as seções descritas acima, as seguintes memórias são compatíveis:
- Para TPUs: HBM, VMEM, CMEM (somente TPU v4).
- Para GPUs: HBM, L1/SharedMem.
- As linhas correspondentes no gráfico só aparecem se houver operações na duração do perfil que foram vinculadas a essa memória. Por exemplo, se todas as operações forem HBM ou vinculadas ao compute, não haverá linhas para VMEM ou CMEM.