Meta otimiza tempo de treinamento de IA e reduz desperdícios
Grandes empresas de tecnologia que treinam e disponibilizam modelos avançados de inteligência artificial enfrentam pressões cada vez maiores para otimizar seus investimentos em infraestrutura computacional. Com a expansão dos projetos de IA, a eficiência dos processos torna-se um desafio ainda maior, pois o tempo total de execução inclui diversos componentes além do treinamento propriamente dito – como inicialização de sistemas, orquestração, salvamento de pontos de verificação (checkpoints), tentativas de recuperação após falhas e processos de retomada. Na Meta, a métrica de Tempo Efetivo de Treinamento (ETT%, na sigla em inglês) foi desenvolvida para medir precisamente quanto desse tempo total é realmente dedicado ao treinamento produtivo. Segundo essa métrica, qualquer segundo gasto em etapas não essenciais representa uma oportunidade de melhoria na eficiência operacional.
A Meta vem aplicando essa métrica de forma proativa em sua infraestrutura de treinamento de modelos, identificando gargalos específicos e implementando soluções para maximizar o ETT%. Embora muitas das tecnologias desenvolvidas sejam voltadas para os sistemas internos da empresa, várias delas foram abertas como código aberto ou adaptadas para solucionar problemas comuns enfrentados pela indústria como um todo. Entre as contribuições compartilhadas estão otimizações no TorchRec para particionamento de dados e melhorias na compilação do PyTorch 2, que reduzem significativamente o tempo de compilação e de reinicialização. Essas iniciativas demonstram como a colaboração aberta pode acelerar o avanço da infraestrutura de IA em escala global.
O cálculo do ETT% na Meta é feito com base na porcentagem do tempo total de execução dedicado ao consumo de novos dados durante o treinamento. Como esse tempo total depende de fatores como arquitetura do modelo, complexidade da tarefa e volume de dados, medi-lo diretamente torna-se inviável. Por isso, a empresa desenvolveu uma abordagem indireta que foca na mensuração da ociosidade e de falhas ocorridas durante o processo. A fórmula utilizada considera três métricas principais no nível 1: o tempo de inicialização (Time to Start), o tempo de recuperação após falhas (Time to Recover) e o número total de falhas. Essas métricas ajudam a identificar onde estão os principais desperdícios de tempo na cadeia de treinamento.
A partir do segundo semestre de 2024, a Meta passou a analisar sistematicamente o ETT% em toda a sua frota de treinamento. Essa iniciativa teve como objetivo estabelecer um diagnóstico do estado atual da eficiência, identificar as áreas críticas que mereciam atenção e priorizar ações de melhoria. Nos anos anteriores, a empresa já havia desenvolvido mais de 40 novas tecnologias voltadas para aumentar o ETT%, e os resultados começaram a aparecer. A equipe conseguiu um marco importante no final de 2025, elevando a porcentagem de Tempo Efetivo de Treinamento para mais de 90% nos treinamentos offline – um feito significativo que demonstra o potencial dessas otimizações.
Para atingir esse nível de eficiência, a equipe realizou uma análise detalhada de cada componente que contribui para o ETT%. As principais iniciativas de otimização se concentraram em três frentes: redução do tempo de inicialização do treinador, melhorias na compilação do PyTorch 2.0 e avanços no processo de salvamento de checkpoints. Cada uma dessas áreas apresentava oportunidades distintas de ganho, e a combinação das melhorias resultou no salto de produtividade observado. A abordagem estruturada da Meta serve como modelo para outras organizações que buscam otimizar seus pipelines de treinamento de IA em larga escala.
A inicialização do treinador é uma das etapas mais críticas no ciclo de treinamento, composta por múltiplos sub-processos como inicialização de dispositivos, configuração de grupos de processos, criação de módulos de pré-processamento e preparação dos dados. Antes das otimizações implementadas em 2024, havia um grande desperdício de tempo nessas etapas iniciais. Por exemplo, a criação desnecessária de múltiplos grupos de processos e comunicações não otimizadas entre diferentes instâncias (ranks) durante a inicialização de cada tarefa contribuíam significativamente para o aumento do tempo total. A equipe identificou que, em vez de depender de múltiplas chamadas all_gather para construir metadados de particionamento de forma fragmentada, cada rank poderia construir sua seção global usando metadados já disponíveis localmente após a transmissão do plano de particionamento. Essa simples mudança resultou em melhorias substanciais no tempo de inicialização do treinador.
Outra inovação importante foi a paralelização de processos que não possuem dependências entre si durante a fase de inicialização. Etapas como a compilação do PyTorch 2 (PT2) e o pré-aquecimento do DPP (Data Pipeline Processor, responsável pelo carregamento dos dados de treinamento) são extremamente custosas e ocorrem antes do início efetivo do treinamento. Tradicionalmente, a compilação do PT2 só podia ser iniciada após o carregamento da primeira batch de dados reais. A equipe desenvolveu uma tecnologia que utiliza uma “batch rápida” para permitir que o PT2 comece a compilar enquanto o DPP ainda está processando a primeira batch. Essa abordagem é particularmente benéfica para modelos maiores, como os Foundation Models, cujo processo de carregamento de dados é significativamente mais demorado que o de modelos menores.
A compilação no PyTorch 2.0 foi um dos principais focos de otimização, pois representava um gargalo significativo no ciclo de treinamento. A Meta implementou três abordagens principais para reduzir esse tempo: o tratamento de formas dinâmicas, a consolidação de caches e a otimização do autotune. A primeira solução envolveu a colaboração com a equipe do PyTorch no primeiro semestre de 2025 para desenvolver o recurso TORCH_COMPILE_DYNAMIC_SOURCES, que permite marcar parâmetros como dinâmicos de forma simples e sem modificar o código-fonte. Isso reduziu substancialmente as compilações desnecessárias causadas por mudanças de forma durante o treinamento. A segunda iniciativa, chamada MegaCache, unificou diversos caches de compilação do PT2 (incluindo o compilador principal, o Triton bundler e configurações de autotune) em um único arquivo, reduzindo o tempo médio de compilação em cerca de 40%. Por fim, a equipe otimizou o processo de autotune para identificar os kernels mais custosos e determinar as melhores configurações de runtime para implantação no código-base, resultando em reduções adicionais no tempo de compilação.
O salvamento de checkpoints é outra área crítica que impacta diretamente o ETT%. Quando um checkpoint é salvo, o treinamento é interrompido enquanto os dados são transferidos para armazenamento, resultando em ociosidade dos GPUs. Além disso, o intervalo entre salvamentos afeta diretamente a quantidade de progresso perdido em caso de falhas. A Meta desenvolveu duas tecnologias para mitigar esses problemas: o salvamento assíncrono de checkpoints e o uso nativo de estágios do PyTorch (PyTorch Native Staging). No salvamento assíncrono, uma cópia do checkpoint é criada na memória da CPU, permitindo que o processo principal retome o treinamento enquanto uma tarefa em segundo plano conclui o upload. Já o PyTorch Native Staging utiliza APIs nativas do PyTorch para otimizar a transferência de dados, reduzindo o tempo de bloqueio do treinamento em comparação com a implementação anterior em C++. Essas melhorias resultaram em uma redução significativa no número total de horas de GPU bloqueadas diariamente para salvamento de checkpoints.
Além de otimizar o processo de salvamento, a Meta também ajustou o intervalo entre checkpoints para minimizar o tempo total de treinamento desperdiçado. Esse tempo desperdiçado é composto por duas partes: o progresso não salvo após uma falha (unsaved training time) e o tempo de bloqueio durante o salvamento do checkpoint. Ao analisar a taxa de falhas e o custo de cada componente, a equipe conseguiu determinar o intervalo ideal para cada tipo de treinamento. Por exemplo, em um cenário hipotético com 15 segundos de bloqueio por checkpoint e três falhas diárias, a análise mostrou que ajustar o intervalo de salvamento pode reduzir significativamente a porcentagem de tempo desperdiçado. Esses insights permitiram que a Meta implementasse intervalos otimizados tanto para jobs de produção quanto para experimentos, resultando em ganhos consistentes de eficiência.
A fase de encerramento do treinamento (shutdown phase) também foi alvo de otimizações, especialmente no processo de publicação de modelos para inferência. Tradicionalmente, a publicação ocorria imediatamente após o término do treinamento, utilizando o último checkpoint gerado. No entanto, a análise da Meta revelou que esse processo dominava a duração da fase de pós-treinamento. A solução adotada foi a adoção de uma estratégia independente de publicação, na qual o treinamento é encerrado após a criação de um checkpoint âncora, e a publicação do modelo é realizada em um job separado. Essa abordagem decoupled permitiu que a publicação utilizasse os dados armazenados para gerar uma versão otimizada do modelo para inferência, reduzindo o tempo total de encerramento em aproximadamente 30 minutos por job. Essa mudança não apenas acelerou os ciclos de treinamento como também melhorou a qualidade dos modelos publicados.
A redução de falhas foi outro pilar fundamental na estratégia de otimização do ETT%. Qualquer regressão causada por mudanças no código ou na configuração pode impactar negativamente a métrica. A Meta identificou que flutuações no painel de ETT% estavam diretamente relacionadas a dois fatores principais: preempções de jobs pela infraestrutura e falhas não previstas nos processos de treinamento. Para lidar com as preempções, a empresa vem colaborando com equipes de infraestrutura para desenvolver novos algoritmos de escalonamento que reduzam a taxa de preempção sem afetar as cotas ou a experiência dos usuários. Paralelamente, uma equipe dedicada monitora cada componente relacionado ao ETT%, construindo painéis avançados para acompanhar métricas como tempo de inicialização, tempo de recuperação e tempo de salvamento de checkpoints. Essa abordagem proativa de monitoramento permite detectar e mitigar regressões antes que afetem os acordos de nível de serviço (SLAs).
À medida que os modelos de IA crescem em escala, as restrições de recursos computacionais tornam-se um desafio cada vez mais crítico para a indústria. Embora técnicas como a maximização da utilização de FLOPs (MFU, na sigla em inglês) – por meio de co-projeto de modelos e otimização de kernels – continuem essenciais, o treinamento em larga escala revelou um novo gargalo: uma quantidade significativa do tempo de GPU é desperdiçada em fases não relacionadas ao treinamento estável. A análise da Meta mostrou que essa ociosidade pode ser particularmente substancial em treinamentos de grande porte. Para enfrentar esse desafio, a empresa lançou uma iniciativa bem-sucedida focada em otimizar o ETT%, que já resultou em economias significativas de capacidade computacional.
A principal lição para profissionais da área é clara: para melhorar a relação custo-benefício e a produtividade em escala, é fundamental otimizar não apenas as etapas de treinamento, mas também as fases intermediárias. Como a pilha de treinamento da Meta é baseada no PyTorch, a empresa se esforçou para garantir que essas melhorias fossem aplicáveis além do seu ambiente interno. Diversos componentes foram disponibilizados como código aberto, como as otimizações no TorchRec e no PyTorch 2, permitindo que outras organizações se beneficiem dessas inovações. Embora soluções como publicação de modelos e salvamento de checkpoints sejam mais específicas do contexto da Meta, elas abordam problemas comuns enfrentados pela indústria e podem ser adaptadas para uso em outros ambientes. Essa abordagem colaborativa reforça a importância do ecossistema aberto no avanço da infraestrutura de IA.
A Meta espera que essas lições ajudem outras equipes a diagnosticar gargalos semelhantes, aplicar métricas como o ETT% e contribuir com melhorias adicionais para o ecossistema. A empresa estende seus agradecimentos a Max Leung, Apoorv Purwar, Musharaf Sultan, John Bocharov, Barak Pat, Jonathan Tang, Vivek Trehan, Chris Gottbrath e Vitor Brumatti Pereira por suas valiosas revisões e suporte. O sucesso desse trabalho só foi possível graças ao empenho da equipe inteira da Meta responsável pelo desenvolvimento e pela produção dessas soluções. Para aqueles interessados em implementar melhorias semelhantes, a Meta disponibiliza documentação detalhada do PyTorch e tutoriais avançados que podem servir como ponto de partida para otimizações personalizadas.
A jornada da Meta rumo a um treinamento de IA mais eficiente demonstra que, mesmo em ambientes de grande escala, há sempre espaço para inovação e otimização. Ao compartilhar essas experiências, a empresa não apenas contribui para a comunidade técnica como também reforça seu compromisso com a eficiência operacional. Para desenvolvedores e engenheiros que buscam aplicar essas práticas, o primeiro passo é medir o ETT% atual de seus pipelines e identificar as fases que oferecem maior potencial de economia. Com as ferramentas e técnicas certas, é possível transformar treinamentos que antes pareciam ineficientes em processos altamente otimizados, reduzindo custos e acelerando a inovação em IA.