ParalelismoRuta Optimización

ZeRO y FSDP

Leerlo en el Capítulo 4 · checkpoint +50 XP →

Reparte el estado del optimizador, los gradientes y los parámetros entre los rangos de paralelismo de datos en lugar de replicarlos.

El paralelismo de datos simple desperdicia memoria: cada rango guarda copias idénticas de todo. ZeRO (y FSDP de PyTorch) lo reparten:

EtapaRepartidoEstado por GPU (Adam en precisión mixta)
0nada16 B/parámetro
1estados del optimizador4 + 12/N B/parámetro
2+ gradientes2 + 14/N B/parámetro
3 / FSDP+ parámetros16/N B/parámetro

El problema de la etapa 3: los parámetros deben reunirse con all-gather antes del forward y del backward de cada capa, en cada micro-batch. Para un modelo de 70B son ~140 GB movidos dos veces por micro-batch. Sobre NVLink va bien. Sobre una NIC de 400 Gb/s puede dominar el paso.

Guía práctica

  • ZeRO-1 es casi gratis y casi siempre vale la pena.
  • ZeRO-3/FSDP es excelente dentro de un nodo o en redes rápidas, y para hacer caber un modelo que de otro modo no cabría.
  • A gran escala, combínalo: TP dentro del nodo, ZeRO-1 o sharding híbrido (repartir dentro del nodo, replicar entre nodos).
EN VIVO Calculadora de memoria de entrenamiento
pesos 13.4 GBgradientes 13.4 GBoptimizador 5.0 GBactivaciones 36.5 GBframework 3.0 GB
80 GB HBM
Por GPU
71.3 GB
Veredicto
cabe
Paralelismo de datos
dp = 16
Parámetros / GPU
6.70 B

Memoria por GPU para Adam en precisión mixta, longitud de secuencia 4096, flash attention. Las activaciones usan la estimación de Korthikanti et al.

Úsalo en una misión

Relacionado

Fuentes y lecturas adicionales

Escrito para LazyLab con nuestras propias palabras; las fuentes se citan para profundizar y verificar.