Distributed Training
Explora cómo el entrenamiento distribuido escala las cargas de trabajo de IA en varias GPU. Aprende a acelerar el entrenamiento de Ultralytics YOLO26 con DDP para obtener resultados más rápidos y precisos.
El entrenamiento distribuido es un método de aprendizaje automático en el que la carga de trabajo de entrenar un modelo se divide entre varios procesadores o máquinas. Este enfoque es esencial para gestionar conjuntos de datos a gran escala y arquitecturas de redes neuronales complejas que, de otro modo, tardarían un tiempo impracticable en entrenarse en un solo dispositivo. Al aprovechar la potencia computacional combinada de varias unidades de procesamiento gráfico (GPUs) o unidades de procesamiento tensorial (TPUs), el entrenamiento distribuido acelera significativamente el ciclo de desarrollo, lo que permite a investigadores e ingenieros iterar más rápido y lograr una mayor precisión en sus modelos.
Cómo funciona el entrenamiento distribuido#
La idea central del entrenamiento distribuido es la paralelización. En lugar de procesar los datos secuencialmente en un solo chip, la tarea se divide en fragmentos más pequeños que se procesan simultáneamente. Hay dos estrategias principales para lograrlo:
- Paralelismo de datos: Este es el enfoque más común para tareas como la detección de objetos. En esta configuración, se coloca una copia del modelo completo en cada dispositivo. Los datos de entrenamiento globales se dividen en lotes más pequeños y cada dispositivo procesa un lote diferente al mismo tiempo. Después de cada paso, los gradientes (actualizaciones del modelo) se sincronizan en todos los dispositivos para garantizar que los pesos del modelo sigan siendo coherentes.
- Paralelismo de modelos: Cuando una red neuronal (NN) es demasiado grande para caber en la memoria de una sola GPU, el propio modelo se divide entre varios dispositivos. Las distintas capas o componentes del modelo residen en chips diferentes y los datos fluyen entre ellos. Esto suele ser necesario para entrenar enormes modelos fundacionales y grandes modelos de lenguaje (LLMs).
Aplicaciones en el mundo real#
El entrenamiento distribuido ha transformado sectores al hacer posible resolver problemas que antes eran computacionalmente inviables.
- Conducción autónoma: Desarrollar vehículos autónomos seguros requiere analizar petabytes de vídeo y datos de sensores. Los ingenieros de automoción utilizan grandes clústeres distribuidos para entrenar modelos de visión destinados a la segmentación semántica en tiempo real y a la detección de carriles. Esta enorme escala garantiza que los sistemas de IA en el sector automovilístico puedan reaccionar de forma fiable ante diversas condiciones de la carretera.
- Diagnóstico por imagen: En el sector sanitario, analizar exploraciones 3D de alta resolución, como las resonancias magnéticas, requiere una cantidad considerable de memoria y potencia de procesamiento. El entrenamiento distribuido permite a los investigadores crear herramientas de diagnóstico de alto rendimiento para la detección de tumores y otras tareas críticas. Mediante el uso de frameworks como NVIDIA MONAI, los hospitales pueden entrenar modelos con conjuntos de datos diversos sin alcanzar los límites de memoria, mejorando los resultados de la IA en el ámbito sanitario.
Uso del entrenamiento distribuido con Ultralytics#
La biblioteca ultralytics facilita la implementación del entrenamiento con Paralelismo de datos distribuido (DDP). Puedes escalar el entrenamiento de modelos YOLO26 de última generación en varias GPUs especificando simplemente los índices de los dispositivos en los argumentos de entrenamiento.
from ultralytics import YOLO
# Load a pre-trained YOLO26 model
model = YOLO("yolo26n.pt")
# Train the model using two GPUs (device 0 and 1)
# The library automatically handles the DDP communication backend
results = model.train(data="coco8.yaml", epochs=100, device=[0, 1])Conceptos y comparaciones relacionados#
Para comprender sus funciones específicas, es útil distinguir el entrenamiento distribuido de términos similares del ecosistema del aprendizaje automático:
- Frente al aprendizaje federado: Aunque ambos implican varios dispositivos, sus objetivos son diferentes. El entrenamiento distribuido suele centralizar los datos en un clúster de alto rendimiento para maximizar la velocidad. En cambio, el aprendizaje federado mantiene los datos descentralizados en los dispositivos de los usuarios (como los smartphones) para priorizar la privacidad de los datos, actualizando el modelo global sin que los datos sin procesar salgan de su origen.
- Frente a la computación de alto rendimiento (HPC): La HPC es un campo amplio que incluye la supercomputación para simulaciones científicas, como la predicción meteorológica. El entrenamiento distribuido es una aplicación específica de la HPC aplicada a algoritmos de optimización en el aprendizaje profundo. A menudo depende de bibliotecas de comunicación especializadas, como NVIDIA NCCL, para minimizar la latencia entre GPUs.
Escalado con plataformas en la nube#
Gestionar la infraestructura para el entrenamiento distribuido puede ser complejo. Las plataformas modernas simplifican esta tarea al ofrecer entornos gestionados. Por ejemplo, la plataforma de Ultralytics permite a los usuarios gestionar conjuntos de datos e iniciar ejecuciones de entrenamiento que pueden desplegarse en entornos en la nube o en clústeres locales. Esta integración agiliza el flujo de trabajo desde la anotación de datos hasta el despliegue final del modelo, garantizando que el escalado a varias GPUs sea lo más fluido posible. Del mismo modo, proveedores de servicios en la nube como Google Cloud Vertex AI y Amazon SageMaker proporcionan una infraestructura sólida para ejecutar trabajos de entrenamiento distribuido a escala empresarial.









