Cómo funciona

Cuando un modelo no cabe en la memoria de una sola GPU, el paralelismo de modelo distribuye sus capas o parámetros entre varias GPUs. En el paralelismo de pipeline, cada GPU procesa una etapa de la red. En el paralelismo de tensor, una sola operación se divide entre GPUs.

La comunicación entre GPUs es el cuello de botella: los datos deben transferirse entre etapas en cada paso. Frameworks como DeepSpeed y Megatron-LM implementan estas técnicas de forma optimizada.

El paralelismo de modelo se combina frecuentemente con el paralelismo de datos (3D parallelism) para escalar entrenamientos de modelos con cientos de miles de millones de parámetros.

Ejemplo práctico

Un modelo de 100 mil millones de parámetros no cabe en una GPU de 80 GB. Con paralelismo de modelo en 4 GPUs, cada una almacena ~25 mil millones de parámetros. El forward pass pasa datos de una GPU a la siguiente.

Texto
GPU 0: camadas 1-20
GPU 1: camadas 21-40
GPU 2: camadas 41-60
GPU 3: camadas 61-80

Con DeepSpeed, la configuración se hace vía JSON:

JSON
{
  "tensor_parallel": {"size": 4},
  "pipeline_parallel": {"size": 2}
}

Para qué sirve

Entrenar y servir modelos que exceden la memoria de una GPU. Es la base de sistemas como Megatron-LM y DeepSpeed. Complementa el paralelismo de datos en entrenamientos a gran escala.