Frameworks de Treinamento Distribuído
PyTorch
- URL: pytorch.org
- Versão estável: 2.x (2024)
- Linguagem: Python + C++/CUDA
- Padrão de facto para pesquisa e produção de LLMs
Features Relevantes para LLMs
- FSDP2 (Fully Sharded Data Parallel): Estratégia ZeRO-3 nativa; prefetching implícito
- torch.compile: Compilação JIT → 30–50% speedup automático
- FlexAttention: API flexível para variantes de atenção
- DTensor: Primitiva de tensor distribuído (base do FSDP2, Tensor Parallel)
torch.distributed: NCCL, Gloo, MPI backends
JAX (Google)
- URL: github.comgooglejax
- Paradigma: Funcional puro; arrays imutáveis; transformações (grad, jit, vmap, pmap)
- XLA (Accelerated Linear Algebra): Compilador JIT para TPU e GPU
jit: Compila função para XLA → speedup automáticovmap: Vectorized map — batching automático de funções escalarespmap: Parallel map — distribui computação em múltiplos dispositivos
Ecossistema:
- Flax: Módulos de rede neural (NNX API, Linen)
- Optax: Optimizadores (Adam, AdaFactor, Lion)
- Orbax: Checkpointing distribuído
- Grain: Pipeline de dados para JAX
Quando usar: Pesquisa Google; TPUs; workloads que se beneficiam de transformações funcionais
Keras (François Chollet)
- URL: keras.io · GitHub: keras-team/keras
- Criador: François Chollet (ex-Google, hoje na Anthropic; mesmo criador do ARC-AGI — ver
08-benchmarks/gerais-raciocinio.md) - História:
- Keras 1.0 (2015): API alto-nível para Theano (depois TensorFlow). Um dos motivos da adoção massiva de DL fora de pesquisa.
- Keras 2 (2017): integrado ao TensorFlow como
tf.keras(default API do TF 2.x). - Keras 3 (2023, "Keras Core"): multi-backend — mesma API roda sobre TensorFlow, JAX e PyTorch. Reset estratégico após "Keras virou só wrapper de TF" perceived weakness.
- Paradigma: Sequential / Functional / Subclassing API. Foco em ergonomia para beginner + production.
- KerasCV / KerasNLP / KerasHub: componentes pré-treinados;
keras_hub.models.Llama3CausalLM.from_preset()interface tipo HuggingFace. - KerasTuner: hyperparameter search.
Estado em LLM-land (2026):
- Não dominante. PyTorch + HuggingFace é a stack hegemônica para LLM training (PEFT, TRL, Axolotl, Megatron-LM). JAX para TPU em Google. Keras 3 multi-backend tenta retomar relevância via "escreva uma vez, escolha backend" mas adoção em LLMs frontier permanece marginal.
- Onde Keras ainda brilha: ensino, prototipagem rápida, modelos clássicos (CNN, RNN, transformers menores), edge deployment via TF Lite, integração com TensorBoard.
- Quando usar: projetos pedagógicos; transição de DL clássico para LLM; quando você quer trocar de backend sem reescrever; integração com ecossistema TensorFlow legacy.
Por que está aqui: referência cultural relevante (Chollet), e Keras 3 multi-backend é um exemplo de design que vale conhecer mesmo se você não usar diariamente.
DeepSpeed (Microsoft)
- URL: github.commicrosoftDeepSpeed
- Uso: ZeRO (123/Infinity), pipeline parallelism, activation checkpointing
- Integrações: PyTorch nativo; HuggingFace
accelerate
ZeRO Optimizer (ver também 04-treinamento/pre-treino.md)
| Estágio | Particiona | Economia de Memória |
|---|---|---|
| ZeRO-1 | Optimizer states | ~4× |
| ZeRO-2 | + Gradients | ~8× |
| ZeRO-3 | + Parâmetros | N× (N = GPUs) |
| ZeRO-Infinity | + CPU/NVMe offload | Ilimitado* |
DeepSpeed Inference
- Kernel de atenção otimizado
- Quantização INT8 integrada
- Quando usar: Se já usa DeepSpeed para treino; kernels customizados
FSDP — Fully Sharded Data Parallel (PyTorch Nativo)
- Alternativa ao ZeRO-3 sem dependência de DeepSpeed
- FSDP2 (2024): API renovada;
fully_shard()por layer; melhor interoperabilidade comtorch.compile - Documentação: pytorch.orgtutorialsintermediate/FSDP_tutorial.html
- Quando usar: Treino de modelos 7B–70B em 2–16 GPUs; padrão para maioria dos times
Megatron-LM (NVIDIA)
- URL: github.comNVIDIAMegatron-LM
- Origem: NVIDIA Research (2019)
- Especialidade: Tensor Parallelism + Pipeline Parallelism + Data Parallelism (3D parallelism)
- Performance: FlashAttention integrado; FP16BF16FP8; mixed precision
- Escala: Modelos 1T+ parâmetros em clusters de 1000+ GPUs
Quando usar:
- Pré-treino de modelos muito grandes (>70B parâmetros)
- Acesso a clusters NVIDIA (DGX, Selene)
- Reprodução de papers NVIDIA
ColossalAI
- URL: github.comhpcaitechColossalAI
- Foco: Auto-parallelism; buscador automático de estratégia de paralelismo
- Features: Sequência Parallelism, Tensor Parallelism, ZeRO alternativo
- Quando usar: Experimentação com estratégias de paralelismo automático
Nanotron (HuggingFace)
- URL: github.comhuggingfacenanotron
- Foco: Pré-treino minimalista e reprodutível
- Design: Simples de entender; Tensor + Pipeline + Data parallelism
- Uso: HuggingFace usa internamente; bom para pesquisa e reprodução
nanoGPT (Karpathy)
- URL: github.comkarpathynanoGPT
- ~300 linhas de Python — implementação minimal de GPT-2 treinável
- Valor: Referência educacional; base para experimentos
- llm.c: Versão em C puro de Karpathy (2024) — GPT-2 em C sem dependências
LightSeq / Liger Kernel
LightSeq (ByteDance)
- Kernels CUDA otimizados para transformer (atenção, layer norm, embeddings)
- 1.5–2× speedup em fine-tuning
Liger Kernel (LinkedIn/Liger)
- URL: github.comlinkedinLiger-Kernel
- Kernels Triton para RMSNorm, RoPE, SwiGLU, CrossEntropy com chunking
- Reduz memória de ativações em 60%; compatível com HuggingFace
- Drop-in:
from liger_kernel.transformers import apply_liger_kernel_to_llama
Accelerate (HuggingFace)
- URL: github.comhuggingfaceaccelerate
- Papel: Camada de abstração sobre FSDP, DeepSpeed, TPU, multi-GPU
- Uso:
Accelerator()→ mesmo código roda em 1 GPU, 8 GPUs, TPU - Integração: TRL, Axolotl, LLaMA-Factory usam internamente
Stack de Pré-Treino Recomendado (2026)
| Escala | Framework | Paralelismo |
|---|---|---|
| 1–2 GPUs | PyTorch + FSDP2 | DP |
| 4–8 GPUs consumer | PyTorch + FSDP2 + DeepSpeed ZeRO-3 | DP + ZeRO |
| 8–64 GPUs A100/H100 | Megatron-LM ou Nanotron | TP + PP + DP |
| 100+ GPUs H100/B200 | Megatron-LM | 3D parallelism |
| TPU | JAX + Flax | pmap / mesh |
Monitoring de Treino
- Weights & Biases (wandb): Padrão de facto; curvas de loss, LR, gradients
- TensorBoard: Integrado ao PyTorch; menor overhead
- MLflow: Open-source; experiment tracking; model registry
- Comet ML: Alternativa ao wandb com foco enterprise
Integração mínima:
import wandb
wandb.init(project="kode-pretraining")
wandb.log({"loss": loss, "lr": scheduler.get_last_lr()[0]})