Pipeline Parallelism
Descubre cómo el paralelismo de canalización divide los modelos de aprendizaje profundo entre GPUs. Aprende a evitar errores de falta de memoria y a optimizar el entrenamiento distribuido.
Pipeline Parallelism es una técnica avanzada de distributed training diseñada para particionar una neural network (NN) grande entre múltiples dispositivos informáticos, como GPUs, separando el modelo según su profundidad. Cuando los model weights y los estados del optimizador de una arquitectura moderna superan los límites de memoria de un solo acelerador, los ingenieros dividen las capas secuenciales de la red en "fases". Por ejemplo, las primeras 10 capas pueden residir en la GPU 0, mientras que las 10 capas posteriores residen en la GPU 1. Durante el forward pass, los datos fluyen de un dispositivo al siguiente. Al encadenar estos dispositivos, los investigadores pueden entrenar algoritmos masivos de deep learning (DL) sin encontrarse con out-of-memory errors que limiten el hardware.
Cómo funciona el paralelismo de canalización#
Una implementación ingenua de dividir capas entre dispositivos genera graves ineficiencias conocidas como "burbujas de canalización" (pipeline bubbles). Como las capas se procesan de forma secuencial, la GPU 1 permanece completamente inactiva mientras la GPU 0 procesa las capas iniciales. Para maximizar la utilización del hardware, los planificadores de canalización modernos dividen el batch size global en "micro-lotes" (micro-batches) más pequeños.
En lugar de esperar a que termine un lote entero, la GPU 0 comienza a procesar inmediatamente el segundo micro-lote en cuanto le pasa el primer micro-lote a la GPU 1. Herramientas como Microsoft DeepSpeed y la PyTorch Distributed Pipelining API utilizan comúnmente la 1F1B (One Forward, One Backward) scheduling strategy. Este método alterna de forma concurrente el cálculo de los pasos hacia adelante y hacia atrás para diferentes micro-lotes, minimizando significativamente las burbujas de la canalización y el consumo de memoria. Los avances recientes de 2024 y 2025 introducen incluso el Zero Bubble Pipeline Parallelism, una estrategia de predicción de pesos consciente del optimizador que casi elimina el tiempo de inactividad en los clústeres de computación.
Diferenciación de técnicas de paralelismo relacionadas#
El paralelismo de canalización opera dentro de un ecosistema más amplio de estrategias de computación distribuida. Entender las diferencias es fundamental para escalar modelos de IA de manera eficaz:
- Paralelismo de modelo: Este es el término general para dividir un modelo entre dispositivos. El paralelismo de canalización es una forma altamente específica de paralelismo de modelo que particiona la arquitectura secuencialmente por profundidad.
- Tensor Parallelism: A diferencia de las divisiones por profundidad del paralelismo de canalización, el paralelismo de tensores fragmenta las operaciones de matrices individuales horizontalmente entre las GPUs. Estas dos técnicas se combinan frecuentemente para maximizar el rendimiento.
- Data Parallelism: El paralelismo de datos replica todo el modelo en cada GPU y distribuye los datos de entrenamiento entre ellas. Para arquitecturas compactas y altamente optimizadas de object detection y image segmentation como el modelo Ultralytics YOLO26, que cabe de forma nativa en la VRAM de un solo dispositivo, el paralelismo de datos mediante DistributedDataParallel (DDP) de PyTorch es el método preferido para acelerar el entrenamiento.
Aplicaciones en el mundo real en IA y ML#
Escalar la infraestructura compleja es esencial para construir modernos sistemas de IA de última generación:
- Training Foundation Models: El desarrollo de gigantescos Large Language Models (LLMs) y foundation models como Llama 3 de Meta requiere combinar paralelismo de tensores, de datos y de canalización. Marcos como NVIDIA Megatron-LM aprovechan estas estrategias para entrenar arquitecturas masivas de Mixture-of-Experts (MoE) en miles de GPUs en plataformas en la nube como AWS SageMaker.
- High-Resolution Medical Diagnostics: En la AI in healthcare y el modelado científico, las exploraciones volumétricas en 3D a menudo producen activaciones demasiado masivas para un solo acelerador. Organizar las capas de la red en canalización entre nodos permite a los hospitales de investigación entrenar redes profundas en inmensos conjuntos de datos de MRI sin comprometer la resolución de la imagen.
Ejemplo de código: Concepto de particionamiento de capas#
Históricamente, distribuir capas entre dispositivos requería código personalizado y complejo. Hoy en día, la lógica fundamental asigna capas específicas a diferentes identificadores de dispositivos. A continuación, se muestra una representación conceptual de cómo se dividen las fases de la red entre los dispositivos en PyTorch, sentando las bases para las operaciones paralelas de canalización:
import torch.nn as nn
class SimplePipelineModel(nn.Module):
def __init__(self):
super().__init__()
# Stage 1 is assigned to the first GPU
self.stage1 = nn.Sequential(nn.Linear(1024, 1024), nn.ReLU()).to("cuda:0")
# Stage 2 is assigned to the second GPU
self.stage2 = nn.Sequential(nn.Linear(1024, 1024), nn.ReLU()).to("cuda:1")
def forward(self, x):
# The forward pass seamlessly crosses device boundaries
x_out = self.stage1(x.to("cuda:0"))
return self.stage2(x_out.to("cuda:1"))Si bien la creación de modelos fundamentales requiere una orquestación compleja, implementar proyectos de computer vision (CV) rápidos y escalables suele ser más sencillo. Para un model deployment optimizado y el uso automatizado de múltiples GPUs, los desarrolladores confían en la Ultralytics Platform para escalar las cargas de trabajo automáticamente. Aprovechando los sólidos model training tips, la plataforma abstrae la gestión de la infraestructura, lo que permite a los ingenieros centrarse por completo en construir soluciones de IA precisas capaces de realizar real-time inference.






