El entrenamiento distribuido se divide en 4 etapas, pero los desarrolladores normalmente se centran en solo una:

Etapa 1 → Emparejamiento (Matchmaking): agrupar nodos por capacidad y detectar cuellos de botella antes de que arruinen tu ejecución

Etapa 2 → Canalización sin burbujas (Zero-bubble): los micro-batches se transmiten de forma asíncrona; las pasadas forward/backward se superponen para que ninguna GPU permanezca ociosa

(Corte de hilo—parece que faltan las etapas 3 y 4, pero el enfoque de paralelismo en la canalización es clave: superponer fases de cómputo para maximizar la utilización y eliminar el tiempo de burbujas en configuraciones distribuidas)