Pipeline Parallelism
Descubre cómo el paralelismo de canalización divide los modelos de aprendizaje profundo entre varias GPU. Aprende a evitar errores de memoria insuficiente y optimizar el entrenamiento distribuido.
El paralelismo de canalización es una técnica avanzada de entrenamiento distribuido diseñada para particionar una gran red neuronal (NN) entre varios dispositivos de computación, como GPU, separando el modelo por profundidad. Cuando los pesos del modelo y los estados del optimizador de una arquitectura moderna superan los límites de memoria de un único acelerador, los ingenieros dividen las capas secuenciales de la red en «etapas». Por ejemplo, las 10 primeras capas podrían residir en la GPU 0, mientras que las 10 siguientes residirían en la GPU 1. Durante la pasada hacia delante, los datos fluyen de un dispositivo al siguiente. Al encadenar estos dispositivos, los investigadores pueden entrenar algoritmos masivos de aprendizaje profundo (DL) sin encontrarse con errores de falta de memoria que limiten el hardware.
Cómo funciona el paralelismo de canalización#
Una implementación ingenua de la división de capas entre dispositivos provoca graves ineficiencias conocidas como «burbujas de canalización». Como las capas se procesan secuencialmente, 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 tamaño del lote global en «microlotes» más pequeños.
En lugar de esperar a que termine un lote completo, la GPU 0 comienza inmediatamente a procesar el segundo microlote en cuanto pasa el primero a la GPU 1. Herramientas como Microsoft DeepSpeed y la API de canalización distribuida de PyTorch suelen utilizar la estrategia de planificación 1F1B (una pasada hacia delante, una hacia atrás). Este método alterna el cálculo de pasadas hacia delante y hacia atrás para distintos microlotes de forma simultánea, lo que minimiza considerablemente las burbujas de canalización y el consumo de memoria. Los avances recientes de 2024 y 2025 incluso introducen el paralelismo de canalización sin burbujas, una estrategia de predicción de pesos que tiene en cuenta el optimizador y que elimina casi por completo el tiempo de inactividad en los clústeres de computación.
Diferencias entre técnicas de paralelismo relacionadas#
El paralelismo de canalización forma parte de un ecosistema más amplio de estrategias de computación distribuida. Comprender las diferencias es fundamental para escalar modelos de IA de forma eficaz:
- Paralelismo de modelos: Es el término general para dividir un modelo entre varios dispositivos. El paralelismo de canalización es una forma muy específica de paralelismo de modelos que particiona la arquitectura secuencialmente por profundidad.
- Paralelismo de tensores: A diferencia de las divisiones por profundidad del paralelismo de canalización, el paralelismo de tensores fragmenta operaciones matriciales individuales horizontalmente entre varias GPU. Estas dos técnicas se combinan con frecuencia para maximizar el rendimiento.
- Paralelismo de datos: El paralelismo de datos replica el modelo completo en cada GPU y distribuye los datos de entrenamiento entre ellas. Para arquitecturas compactas y altamente optimizadas de detección de objetos y segmentación de imágenes, como el modelo Ultralytics YOLO26, que cabe de forma nativa en la VRAM de un único dispositivo, el paralelismo de datos mediante DistributedDataParallel (DDP) de PyTorch es el método preferido para acelerar el entrenamiento.
Aplicaciones reales en IA y ML#
Ampliar infraestructuras complejas es esencial para crear sistemas de IA modernos de última generación:
- Entrenamiento de modelos fundacionales: Desarrollar modelos de lenguaje de gran tamaño (LLMs) y modelos fundacionales gigantescos, como Llama 3 de Meta, requiere combinar el paralelismo de tensores, de datos y de canalización. Frameworks como NVIDIA Megatron-LM aprovechan estas estrategias para entrenar arquitecturas masivas de mezcla de expertos (MoE) en miles de GPU en plataformas en la nube como AWS SageMaker.
- Diagnóstico médico de alta resolución: En la IA aplicada a la atención sanitaria y la modelización científica, las exploraciones volumétricas en 3D suelen generar activaciones demasiado grandes para un solo acelerador. Canalizar las capas de la red entre nodos permite a los hospitales de investigación entrenar redes profundas con enormes conjuntos de datos de MRI sin comprometer la resolución de las imágenes.
Ejemplo de código: concepto de partición de capas#
Históricamente, distribuir capas entre dispositivos requería código complejo y personalizado. Hoy, la lógica fundamental asigna capas específicas a distintos identificadores de dispositivo. A continuación se muestra una representación conceptual de cómo se dividen las etapas de una red entre dispositivos en PyTorch, sentando las bases para las operaciones de paralelismo 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"))Aunque crear modelos fundacionales requiere una orquestación compleja, desarrollar proyectos rápidos y escalables de visión por computador (CV) suele ser más sencillo. Para agilizar el despliegue de modelos y automatizar el uso de varias GPU, los desarrolladores confían en Ultralytics Platform para escalar automáticamente las cargas de trabajo. Al aprovechar consejos sólidos para entrenar modelos, la plataforma abstrae la gestión de la infraestructura y permite a los ingenieros centrarse por completo en crear soluciones de IA precisas capaces de realizar inferencias en tiempo real.









