Meta atinge 90% de eficiência em IA com treinamento otimizado

Empresas que treinam e servem modelos de IA em larga escala enfrentam metas agressivas de retorno sobre investimento (ROI) aliadas a limitações apertadas de capacidade computacional. À medida que as cargas de trabalho (workloads) escalam, melhorar a eficiência da infraestrutura torna-se um desafio cada vez maior, pois o tempo total de execução inclui sobrecargas além do treinamento propriamente dito — como inicialização, orquestração, salvamento de pontos de controle (checkpoints), retentativas, falhas e recuperação. Para mensurar essa eficiência, a Meta desenvolveu o conceito de Tempo Efetivo de Treinamento (ETT%), definido como a porcentagem do tempo total de execução dedicado exclusivamente ao treinamento produtivo. Essa métrica não apenas identifica desperdícios de tempo, mas também direciona prioridades para otimizações. A abordagem da Meta, embora ancorada em sua experiência de produção com o PyTorch, compartilha lições valiosas para a indústria, com melhorias já implementadas em código aberto — como otimizações no TorchRec e no PyTorch 2 (PT2) — e soluções específicas, como checkpointing assíncrono, que abordam gargalos comuns em toda a cadeia de treinamento de IA.

O ETT% é calculado com base na porcentagem do tempo total de execução dedicado ao consumo de novos dados durante o treinamento. No entanto, medir diretamente esse valor é complexo, pois depende de fatores como arquitetura do modelo, complexidade e volume de dados — variáveis que mudam de um experimento para outro. Por isso, a Meta foca em métricas de ociosidade e falhas como proxy para identificar ineficiências. Esses indicadores são divididos em três submétricas de nível 1: Tempo para Iniciar (mede a ociosidade antes do treinamento começar), Tempo para Recuperar (tempo gasto em retentativas após falhas) e Número de Falhas (quantifica interrupções no processo). A fórmula combina esses elementos para fornecer uma visão clara de onde o tempo está sendo desperdiçado. Desde o segundo semestre de 2024, a Meta analisa proativamente a frota (fleetwide) de modelos para estabelecer um baseline do ETT%, identificar áreas críticas e implementar melhorias estruturais.

A empresa já desenvolveu mais de 40 tecnologias nos últimos anos para elevar o ETT% global. Um dos avanços mais significativos foi alcançado em 2025, quando a Meta superou a marca de 90% de eficiência em treinamentos offline. Esse feito foi possível graças a um esforço concentrado da equipe em otimizar cada componente do ciclo de treinamento, desde a inicialização do treinador até o salvamento de checkpoints e a publicação de modelos. As iniciativas foram divididas em pilares principais, com foco em reduzir o Tempo para Iniciar, melhorar a compilação do PyTorch 2, otimizar o checkpointing e modernizar a publicação de modelos. Cada uma dessas frentes trouxe ganhos mensuráveis, mas algumas soluções foram mais impactantes que outras, exigindo abordagens inovadoras para superar gargalos há muito tempo negligenciados.

A inicialização do treinador é uma das primeiras etapas do ciclo, composta por várias subetapas: inicialização de dispositivos, criação de grupos de processos, pré-processamento, criação do módulo de treinamento, inicialização de plugins, pré-treinamento e obtenção do primeiro lote de dados. Antes das otimizações, havia uma série de processos desnecessários, como a criação repetida de grupos de comunicação entre nós (ranks) e chamadas excessivas de all_gather para construir metadados de partição (sharding). Essas operações, embora pareçam simples, acumulavam sobrecarga significativa, especialmente em jobs com centenas ou milhares de GPUs. A solução encontrada pela Meta foi permitir que cada rank construísse sua seção local do metadado global usando informações já disponíveis após a transmissão do plano de partição, eliminando a necessidade de reconstruir dados que já haviam sido processados. Essa mudança reduziu drasticamente o tempo de inicialização, especialmente em modelos grandes, onde a partição de dados é mais complexa.

Outra inovação crucial foi a paralelização de processos. Muitas subetapas da inicialização não possuem dependências entre si, permitindo que fossem executadas de forma assíncrona. Por exemplo, a compilação do PyTorch 2 (PT2) e o warm-up do DataLoader (DPP) para buscar o primeiro lote de dados são operações custosas que ocorriam sequencialmente antes do treinamento começar. Com a nova abordagem, a compilação do PT2 é adiantada usando um fast batch de dados, enquanto o DPP ainda está carregando o primeiro lote real. Isso não só reduz o tempo de espera, como também permite que a compilação ocorra em paralelo, economizando minutos preciosos em treinamentos de modelos de grande porte, como os Foundation Models. Essa técnica se mostrou especialmente eficaz em cargas de trabalho onde o carregamento de dados é o principal gargalo.

A compilação no PyTorch 2 (PT2) sempre foi um ponto crítico de gargalo, representando uma parcela significativa do tempo total de execução. A Meta identificou três frentes principais para reduzir esse tempo: lidar com formas dinâmicas (dynamic shapes), consolidar caches de compilação e otimizar o autotune de kernels. O problema das formas dinâmicas era particularmente prejudicial, pois cada alteração na forma dos tensores durante o treinamento forçava uma recompilação do modelo, gerando sobrecarga repetida. Para resolver isso, a Meta e a equipe do PyTorch desenvolveram em 2025 a variável de ambiente TORCH_COMPILE_DYNAMIC_SOURCES, que permite marcar parâmetros como dinâmicos sem modificar o código-fonte. Essa funcionalidade também suporta a marcação de variáveis inteiras e o uso de expressões regulares para abranger um conjunto maior de parâmetros, reduzindo a necessidade de compilações desnecessárias.

Outra inovação transformadora foi o MegaCache, uma solução que unifica caches de compilação do PT2 em um único arquivo compactado. Antes, cada componente — como o Inductor (compilador principal), o Triton Bundler (para código GPU), o AOT Autograd (para gradientes), o Dynamo PGO (otimizações guiadas por perfis) e configurações de autotune — era gerenciado separadamente, o que tornava o compartilhamento e a reutilização de caches lento e ineficiente. O MegaCache consolidou tudo em um único arquivo, permitindo que diferentes jobs baixassem e compartilhassem caches pré-otimizados. Até o final de 2025, a Meta conseguiu habilitar o MegaCache em todas as plataformas de treinamento, reduzindo o tempo médio de compilação do PT2 em cerca de 40%. Essa melhoria não só acelerou os treinamentos, como também reduziu a carga sobre os servidores de compilação, que antes precisavam processar as mesmas otimizações repetidamente.

O autotune do PyTorch 2, que otimiza automaticamente kernels e hiperparâmetros, também foi alvo de otimizações. Com o crescente uso de kernels Triton, o tempo gasto para compilar e buscar as melhores configurações aumentou consideravelmente. A equipe desenvolveu um processo para identificar os kernels mais lentos e determinar as configurações ideais de runtime para implementação direta no código. Essa abordagem resultou em uma redução substancial no tempo de compilação, especialmente em modelos que dependem fortemente de kernels customizados. Além disso, a Meta investiu em ferramentas internas para monitorar e ajustar o autotune dinamicamente, garantindo que as otimizações fossem aplicadas sem interromper o fluxo de treinamento.

O salvamento de checkpoints é essencial para garantir que um treinamento possa ser retomado após uma falha, mas também é uma das principais fontes de ociosidade em GPUs. Tradicionalmente, o processo de checkpointing bloqueava o treinamento enquanto os dados eram salvos na memória ou transferidos para armazenamento, consumindo recursos valiosos e interrompendo o loop de treinamento. Para resolver isso, a Meta implementou duas soluções inovadoras: checkpointing assíncrono e PyTorch Native Staging. O checkpointing assíncrono cria uma cópia dos dados em memória CPU enquanto o treinamento continua, permitindo que um processo em segundo plano conclua o upload sem interromper a execução principal. Já o PyTorch Native Staging utiliza APIs nativas do PyTorch para otimizar a transferência de dados, reduzindo o tempo de bloqueio em troca de um consumo maior de memória no treinador. Essas melhorias reduziram drasticamente o número de horas de GPU bloqueadas diariamente, permitindo que os modelos treinassem por mais tempo sem interrupções desnecessárias.

Além de otimizar o tempo de salvamento dos checkpoints, a Meta também ajustou os intervalos de checkpointing para minimizar o tempo desperdiçado em caso de falhas. O desafio aqui é equilibrar dois componentes: o tempo não salvo (progresso perdido após uma falha, caso não haja um checkpoint recente) e o tempo de bloqueio do checkpoint (tempo que o treinamento fica parado para salvar um ponto de controle). Em um cenário hipotético com 15 segundos de bloqueio por checkpoint e três falhas diárias, ajustar o intervalo de salvamento pode reduzir significativamente o tempo total perdido. Por exemplo, aumentar o intervalo de 5 para 10 minutos pode reduzir o tempo não salvo em 50%, mas aumenta o risco de perder mais progresso em caso de falha. A Meta desenvolveu modelos matemáticos para calcular o tempo total perdido (WTT%), permitindo que as equipes ajustassem os intervalos de forma otimizada para cada tipo de carga de trabalho, desde experimentos exploratórios até treinamentos de produção em larga escala.

A fase de publicação de modelos (model publishing) também foi identificada como um gargalo crítico, especialmente em jobs que precisam servir modelos para inferência após o treinamento. Tradicionalmente, o processo de publicação era acoplado ao treinamento, exigindo que o modelo fosse otimizado e empacotado enquanto o treinamento ainda estava em andamento — ou imediatamente após sua conclusão. Essa abordagem não só consumia recursos adicionais, como também prolongava o tempo de encerramento do job, reduzindo a eficiência geral. A solução da Meta foi adotar uma estratégia de publicação autônoma, na qual o treinamento termina com a criação de um checkpoint âncora, e um processo separado — executado após a conclusão do treinamento — é responsável por otimizar e preparar o modelo para inferência. Essa mudança decouplou as duas etapas, reduzindo o tempo de shutdown de cada job em aproximadamente 30 minutos e liberando recursos para novos treinamentos mais rapidamente.

A redução de falhas e preempções foi outro foco central da Meta, pois cada interrupção não planejada impacta diretamente o ETT%. As flutuações no dashboard de ETT% muitas vezes estavam relacionadas a dois fatores principais: preempções de jobs (quando a infraestrutura prioriza outros trabalhos mais críticos) e falhas de treinamento causadas por regressões em código ou configurações. Para lidar com as preempções, a Meta está colaborando com equipes de infraestrutura no desenvolvimento de um novo algoritmo de escalonamento que minimize a taxa de preempção sem afetar as cotas ou a experiência dos usuários. Já para reduzir falhas, foi criado um time dedicado que analisa cada componente relacionado ao ETT%, construindo dashboards avançados para monitorar métricas como Tempo para Iniciar/Recuperar (TTS/TTR), tempo não salvo e tempo de salvamento de checkpoints. Essa abordagem proativa permite detectar e mitigar regressões rapidamente, garantindo que o ETT% permaneça estável mesmo em ambientes de alta demanda.

Um dos insights mais valiosos desse trabalho foi perceber que, em treinamentos de larga escala, o tempo gasto fora do loop principal de treinamento — ou seja, em fases como inicialização, checkpointing e publicação — pode representar uma parcela significativa da ociosidade total. Enquanto a indústria tradicionalmente foca em maximizar a Utilização de FLOPs do Modelo (MFU) através de co-desenho e otimização de kernels, a Meta descobriu que esses esforços são complementares, mas não suficientes para eliminar desperdícios em escala. Por exemplo, em alguns dos maiores treinamentos, até 30% do tempo total podia ser gasto em overheads não relacionados ao treinamento propriamente dito. Essa descoberta reforçou a importância de otimizar as “fases intermediárias”, um conceito que a Meta batizou de Tempo Efetivo de Treinamento (ETT%). Ao reduzir essas ineficiências, a empresa não só melhorou a eficiência, como também conseguiu economias substanciais de capacidade computacional, que podem ser realocadas para novos projetos.

A stack de treinamento da Meta é baseada no PyTorch, e a empresa fez questão de garantir que as otimizações fossem aplicáveis além de seu ambiente interno. Várias melhorias já foram compartilhadas como código aberto, incluindo otimizações no TorchRec (para partição de modelos) e no PyTorch 2 (como o MegaCache e o suporte a formas dinâmicas). Outros componentes, como checkpointing assíncrono e publicação autônoma de modelos, embora específicos à Meta, abordam desafios comuns na indústria — como a necessidade de minimizar interrupções em treinamentos longos e a pressão para reduzir o tempo de chegada ao mercado (time-to-market) de novos modelos. Essas soluções podem ser adaptadas por outras empresas, especialmente aquelas que enfrentam gargalos semelhantes em suas infraestruturas de IA.

As lições aprendidas com o projeto de otimização do ETT% da Meta oferecem um roteiro claro para equipes que buscam melhorar a eficiência de seus treinamentos de IA. A primeira recomendação é mensurar sistematicamente o ETT% usando métricas de ociosidade e falhas, em vez de tentar calcular diretamente o tempo efetivo de treinamento. Em seguida, priorizar otimizações nos pontos de maior impacto — como inicialização do treinador, compilação do PT2, checkpointing e publicação de modelos. Ferramentas como o MegaCache e o suporte a formas dinâmicas no PyTorch 2 já estão disponíveis para adoção imediata, enquanto soluções como checkpointing assíncrono podem ser implementadas com ajustes relativamente simples. Por fim, é fundamental estabelecer um sistema de monitoramento contínuo para detectar regressões rapidamente e garantir que os ganhos de eficiência sejam sustentáveis a longo prazo.

O sucesso da Meta nesse projeto não teria sido possível sem a colaboração de dezenas de engenheiros e pesquisadores, incluindo Max Leung, Apoorv Purwar, Musharaf Sultan, John Bocharov, Barak Pat, Jonathan Tang, Vivek Trehan, Chris Gottbrath e Vitor Brumatti Pereira, cujas revisões e insights foram fundamentais. Agradecimentos também à equipe inteira responsável pelo desenvolvimento e produção dessas melhorias, que transformaram o ETT% de um conceito abstrato em uma métrica tangível e acionável. Para quem deseja aprofundar-se nas técnicas discutidas, a Meta recomenda explorar a documentação completa do PyTorch, tutoriais avançados e recursos de desenvolvimento disponíveis no ecossistema aberto. Ao compartilhar essas descobertas, a empresa não só contribui para a evolução do treinamento de IA, como também convida outras organizações a se unirem nesse esforço coletivo de otimização.

À medida que os modelos de IA continuam a crescer em complexidade e escala, a pressão por eficiência nunca foi tão grande. A abordagem da Meta — focada em reduzir desperdícios em todas as fases do ciclo de treinamento — oferece um modelo replicável para outras empresas que buscam maximizar o ROI de seus investimentos em IA. Com soluções como MegaCache, checkpointing assíncrono e publicação autônoma de modelos, é possível não só acelerar os treinamentos, como também reduzir custos operacionais e aumentar a produtividade das equipes de ML. O futuro do treinamento de IA não depende apenas de modelos mais poderosos, mas também de infraestruturas mais inteligentes e eficientes — e a Meta está liderando esse movimento com resultados concretos.