Ferramenta de perfil de memória
Você pode usar o Memory Profile para visualizar o uso de memória dos aceleradores ao longo do tempo.
Plataformas compatíveis
TPU: compatível
GPU: compatível
Como usar a ferramenta de perfil de memória
O perfil de memória tem os seguintes componentes:
- O seletor de ID de memória na parte de cima da página permite que você se concentre na memória de alta largura de banda (HBM, na sigla em inglês) anexada a um dos diferentes aceleradores que podem estar conectados ao host em que o perfil está sendo criado ou até mesmo na memória do host em determinados casos.
- O "Memory Timeline Graph" e o "Memory Profile Summary" capturam informações de alto nível sobre alocações, desalocações e uso de memória durante a sessão de criação de perfil, incluindo detalhamentos na pilha e no heap, e qualquer impacto da fragmentação.
- A tabela de detalhamento da memória fornece informações sobre as operações no nível do framework que contribuem mais para o uso da memória. Há também outros detalhes por operação, como a forma, o tipo de dados etc., se essas informações forem disponibilizadas pelo compilador para o XProf. A tabela mostra esses detalhes no ponto de pico de uso na janela de criação de perfil para ajudar na depuração de situações de falta de memória (OOM).
- As alocações e desalocações são gerenciadas (e adicionadas ao perfil) pelo alocador de execução da XLA, que é proprietário de todo o espaço de memória HBM.
- O perfil de memória normalmente é mais interessante e valioso para a criação de perfil de GPU do que para cargas de trabalho de TPU. O modelo de execução da TPU geralmente envolve uma grande alocação inicial pelo compilador XLA, em vez de durante o treinamento ou a inferência do modelo. Portanto, é comum que o gráfico de alocação se pareça com uma linha horizontal plana. Todas as alocações provavelmente ocorreram no início do perfil (se o criador de perfil estava ativo naquele momento da execução), o que dificulta a visualização.
- A métrica de fragmentação no resumo do perfil de memória e o gráfico de linha do tempo da memória (como porcentagem) ajudam a identificar problemas de fragmentação de memória. Um valor de fragmentação alto indica que, embora haja memória livre total suficiente, ela não é contígua. Portanto, uma solicitação de alocação grande pode falhar.
Confira algumas diferenças importantes entre essa ferramenta e a Memory Viewer:
- O Memory Viewer é puramente estático e se concentra na ordem do programa. O Memory Profile oferece uma visualização dinâmica ao longo do tempo durante o intervalo de criação de perfil.
- O Memory Viewer visualiza as alocações de memória por módulo XLA. Para cargas de trabalho que consistem em vários módulos XLA, o Memory Profile fornece uma visão global da memória.