Paralelismo de datos (DDP)
Leerlo en el Capítulo 4 · checkpoint +50 XP →
Cada GPU tiene una réplica completa del modelo, procesa datos distintos y promedia los gradientes en cada paso.
La forma más simple de escalar: replica el modelo en N GPUs, dale a cada una una parte distinta del batch y luego haz all-reduce de los gradientes para que cada réplica dé el mismo paso del optimizador.
Costo: un all-reduce del gradiente completo (2 bytes × parámetros en BF16) por paso. Con all-reduce en anillo, el tráfico por GPU es ~2× el tamaño del gradiente, independiente de N. Por eso el paralelismo de datos escala tan bien.
Cómo hacerlo rápido
- Solapamiento: DDP agrupa los gradientes en buckets y hace all-reduce de cada bucket en cuanto el backward lo produce, ocultando la comunicación detrás del cómputo (ver CUDA streams y ejecución asíncrona).
- Acumulación de gradientes: corre varios micro-batches antes de sincronizar. Obtienes un batch global mayor con la misma memoria y menos sincronizaciones por token.
Límite: cada GPU debe tener el estado completo del modelo. Cuando eso deja de caber, ver ZeRO y FSDP, paralelismo tensorial y paralelismo de pipeline.
Úsalo en una misión
Relacionado
Fuentes y lecturas adicionales
- Distributed Training (T. Tsugriy) — parallelism strategies, collectives, memory
- NCCL User Guide
Escrito para LazyLab con nuestras propias palabras; las fuentes se citan para profundizar y verificar.