GUIA Técnico

ZeRO e otimizadores fragmentados

ZeRO (Zero Redundancy Optimizer) elimina o desperdício de duplicação de memória do paralelismo de dados, fragmentando o estado, gradientes e pesos do otimizador entre GPUs.

  • 2 minutos de leitura
  • Última atualização
Nesta página2 minutos de leitura
  1. Visão geral
  2. Mergulho profundo
  3. Impacto Estratégico
  4. O futuro do ZeRO e dos otimizadores fragmentados
  5. Implementação no mundo real
  6. Riscos e guarda-corpos
  7. Roteiro de implementação
  8. Continue explorando
  9. Perguntas frequentes

Visão geral

Ele permite treinar modelos enormes com a simplicidade do paralelismo de dados, mas com uma fração da memória por GPU.

Mergulho profundo

No paralelismo de dados comum, cada GPU armazena uma cópia completa redundante do estado, gradientes e parâmetros do otimizador, o que é um enorme desperdício, especialmente para Adam, onde o estado do otimizador pode ser várias vezes maior que o tamanho do próprio modelo. ZeRO, introduzido por Microsoft no DeepSpeed, remove essa redundância particionando esses tensores entre GPUs para que cada dispositivo possua apenas uma fatia. ZeRO vem em três estágios progressivos: Estado do otimizador de fragmentos do Estágio 1, Estágio 2 adiciona fragmentação de gradiente e Estágio 3 fragmenta os próprios parâmetros. Conforme necessário, as GPUs reúnem as fatias ausentes por meio de comunicação, calculam e depois as liberam. O resultado é uma memória drasticamente menor por GPU, permitindo treinamento de bilhões a trilhões de parâmetros, ao mesmo tempo em que mantém o modelo de programação fácil de paralelismo de dados.

Impacto Estratégico

Custo e orçamento

As decisões de arquitetura impulsionam o desempenho e os custos operacionais durante anos.

Decisões mais claras

A educação técnica ajuda as equipes a escolher a pilha certa, não apenas a mais nova.

Controle de qualidade

Melhores escolhas de engenharia reduzem incidentes de confiabilidade na produção.

O futuro do ZeRO e dos otimizadores fragmentados

A fragmentação está se tornando o padrão para treinamento em larga escala, em vez de uma opção exótica. Espere uma integração mais profunda com o descarregamento (enviando fatias para CPU ou NVMe via ZeRO-Infinity), melhor sobreposição de coleta total e dispersão reduzida com computação para ocultar seu custo e combinações com paralelismo de tensor e pipeline. À medida que os modelos continuam crescendo, os otimizadores fragmentados com uso eficiente de memória são fundamentais para ajustá-los a orçamentos de hardware realistas.

Implementação no mundo real

Usando o DeepSpeed ​​ZeRO Stage 2 para ajustar um modelo de linguagem com vários bilhões de parâmetros que, de outra forma, sobrecarregaria a memória da GPU.

Treinamento com PyTorch FSDP, que fragmenta parâmetros, gradientes e estado do otimizador em GPUs e os reúne por camada sob demanda.

Aplicando ZeRO-Offload para enviar o estado do otimizador para a memória da CPU, permitindo que uma única GPU treine um modelo muitas vezes maior que seu VRAM.

Dimensionando um modelo de trilhões de parâmetros com ZeRO-Infinity, transmitindo fragmentos de parâmetros do armazenamento NVMe quando a memória da GPU e da CPU acabar.

Riscos e guarda-corpos

  • A otimização de um benchmark pode ocultar fraquezas mais amplas do sistema.

  • Os custos de infraestrutura e manutenção são frequentemente subestimados.

  • As lacunas de segurança e observabilidade podem aumentar à medida que os sistemas se tornam mais complexos.

Roteiro de implementação

  1. Defina metas de latência, qualidade e custo antes da implementação.

  2. Benchmark sob condições realistas de carga e dados.

  3. Monitoramento de instrumentos para erros, desvios e impacto no usuário.

  4. Prepare caminhos de reversão e resposta a incidentes antes de escalar.

Continue explorando

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the ZeRO and Sharded Optimizers quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Iniciar teste

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Perguntas frequentes

O que são ZeRO e otimizadores fragmentados?

ZeRO (Zero Redundancy Optimizer) elimina o desperdício de duplicação de memória do paralelismo de dados, fragmentando o estado, gradientes e pesos do otimizador entre GPUs. Ele permite treinar modelos enormes com a simplicidade do paralelismo de dados, mas com uma fração da memória por GPU.

Que redundância o ZeRO elimina em comparação com o paralelismo de dados simples?

O paralelismo de dados padrão armazena uma cópia completa do estado, gradientes e pesos do otimizador em cada GPU; ZeRO os fragmenta para que cada GPU contenha apenas uma fatia.

Por que o estado do otimizador costuma ser o que mais consome memória para Adam?

Adam mantém estimativas em execução, como primeiro e segundo momentos por parâmetro, que combinados com pesos mestres fp32 podem diminuir o tamanho do próprio modelo.

O que o ZeRO Stage 3 fragmenta que os estágios 1 e 2 não fazem?

O Estágio 1 fragmenta o estado do otimizador, o Estágio 2 adiciona gradientes e o Estágio 3 vai além, fragmentando os parâmetros do modelo entre GPUs também.

No ZeRO Stage 3, como uma GPU obtém todos os parâmetros necessários para o avanço de uma camada?

Antes de calcular uma camada, um all-gather reúne todos os seus parâmetros em cada GPU; uma vez feito isso, as fatias não pertencentes são liberadas para recuperar memória.

Qual recurso PyTorch implementa nativamente a fragmentação no estilo ZeRO?

O Fully Sharded Data Parallel (FSDP) do PyTorch fragmenta parâmetros, gradientes e estado do otimizador, reunindo-os e refragmentando-os dinamicamente, espelhando o ZeRO.