Zubnet AIAprenderWiki › Treinamento Distribuído
Infraestrutura

Treinamento Distribuído

Também conhecido como: Paralelismo de Dados, Paralelismo de Modelo, FSDP
Treinar um modelo em múltiplas GPUs ou máquinas simultaneamente. O paralelismo de dados dá a cada GPU uma cópia do modelo e divide os dados de treinamento. O paralelismo de modelo divide o próprio modelo entre GPUs quando ele é grande demais para uma só. Abordagens modernas como FSDP (Fully Sharded Data Parallel) e DeepSpeed combinam ambos, permitindo o treinamento de modelos com centenas de bilhões de parâmetros.

Por que isso importa

Nenhum modelo de fronteira cabe em uma única GPU. Treinar GPT-4 ou Claude requer milhares de GPUs trabalhando juntas por meses. Treinamento distribuído é a engenharia que torna isso possível — é tão crítico quanto a arquitetura ou os dados. A eficiência do seu treinamento distribuído determina diretamente quanto modelo você pode treinar para um dado orçamento.

Em profundidade

Paralelismo de dados (DP): cada GPU tem uma cópia completa do modelo, processa um mini-batch diferente, e os gradientes são promediados entre as GPUs. Simples e eficiente para modelos que cabem em uma GPU. Paralelismo de tensor (TP): camadas individuais são divididas entre GPUs, com cada GPU computando parte de cada multiplicação de matrizes. Necessário quando os pesos de uma única camada não cabem em uma GPU. Paralelismo de pipeline (PP): diferentes camadas rodam em diferentes GPUs, com micro-batches fluindo pelo pipeline.

FSDP e DeepSpeed

Fully Sharded Data Parallel (FSDP, do PyTorch) e DeepSpeed ZeRO (da Microsoft) fragmentam parâmetros do modelo, gradientes e estados do otimizador entre GPUs. Cada GPU armazena apenas uma fração do modelo, e os parâmetros são reunidos sob demanda para computação, depois liberados. Isso permite treinar modelos muito maiores que a memória de uma única GPU. DeepSpeed ZeRO tem três estágios: Estágio 1 fragmenta estados do otimizador, Estágio 2 adiciona gradientes, Estágio 3 adiciona parâmetros.

O Gargalo de Comunicação

O desafio fundamental do treinamento distribuído é comunicação: GPUs precisam sincronizar gradientes (em paralelismo de dados) ou trocar ativações (em paralelismo de modelo/pipeline). Essa comunicação acontece via NVLink (dentro de um nó, 900 GB/s) ou InfiniBand (entre nós, 400 Gb/s). A eficiência de treinamento cai quando GPUs gastam mais tempo esperando por comunicação do que computando. Configurações ótimas minimizam comunicação entre nós mantendo operações fortemente acopladas (como paralelismo de tensor) dentro de um nó e operações fracamente acopladas (como paralelismo de dados) entre nós.

Conceitos relacionados

← Todos os termos
← Treinamento com Precisão Mista Tripo →