Entrenamiento Distribuido
¡Acelere el entrenamiento de la IA con el entrenamiento distribuido! Aprenda a reducir el tiempo de entrenamiento, escalar modelos y optimizar los recursos para proyectos complejos de ML.
El entrenamiento distribuido es una potente técnica de
aprendizaje automático que acelera el proceso de
proceso de creación de modelos dividiendo la carga de trabajo computacional entre varios procesadores, como
Unidades de procesamiento gráfico (GPU) o
unidades de procesamiento Tensor (TPU). Al aprovechar la potencia combinada de dispositivos concurrentes, ya estén ubicados en una única
estación de trabajo o conectados en red a través de un gran clúster, los desarrolladores pueden reducir drásticamente el tiempo necesario para entrenar complejas arquitecturas de aprendizaje profundo (deep learning, DL).
arquitecturas de aprendizaje profundo (DL). Este enfoque es
para manejar conjuntos de datos masivos y desarrollar sistemas de inteligencia
sistemas de inteligencia artificial (IA) de última generación,
lo que permite ciclos de iteración más rápidos y una experimentación más amplia.
Estrategias básicas de paralelización
Para distribuir eficazmente la carga de trabajo, los ingenieros suelen emplear una de las dos estrategias principales, o un enfoque híbrido
diseñado para maximizar la eficiencia:
-
Paralelismo de datos: Este es el método más común para tareas como
detección de objetos. En esta configuración, una copia completa
del modelo reside en cada dispositivo. Los datos de entrenamiento de
datos de entrenamiento se dividen en trozos más pequeños, y
cada dispositivo procesa simultáneamente un subconjunto diferente. Durante la fase de
fase de retropropagación, los gradientes se calculan
gradientes se calculan de forma independiente y luego se sincronizan en todos los dispositivos
interfaz de paso de mensajes (MPI) para actualizar
los pesos del modelo.
-
Paralelismo de modelos: Cuando una
red neuronal (NN) es demasiado grande para caber en
la memoria de una sola GPU, se requiere paralelismo de modelos. Las capas o componentes del modelo se dividen
en diferentes dispositivos. Los datos fluyen de forma secuencial o concurrente entre los dispositivos a medida que atraviesan la red.
Esta técnica es fundamental para entrenar modelos
modelos de fundamentos y
grandes modelos lingüísticos (LLM), en los que
donde el número de parámetros puede alcanzar los billones, lo que requiere herramientas especializadas como
Microsoft DeepSpeed para gestionar la memoria.
Aplicaciones en el mundo real
La formación distribuida permite a las industrias resolver problemas que antes eran inviables desde el punto de vista computacional debido a limitaciones de tiempo o memoria.
de tiempo o memoria.
-
Conducción autónoma: Desarrollar coches autónomos fiables requiere procesar petabytes de datos de vídeo
y datos de sensores. Las empresas automovilísticas utilizan clústeres distribuidos a gran escala para entrenar modelos de visión para la segmentación semántica y el seguimiento de objetos en tiempo real.
segmentación semántica y seguimiento de objetos en tiempo real.
Al utilizar la IA en los flujos de trabajo de automoción,
los ingenieros pueden iterar rápidamente en modelos críticos de seguridad para mejorar el rendimiento.
-
Imagen médica: En
AI in Healthcare, el análisis de escáneres 3D
de alta resolución, como resonancias magnéticas o tomografías computarizadas. El entrenamiento distribuido permite a los investigadores
entrenar modelos de diagnóstico de alta precisión en diversos
conjuntos de datos que respeten la privacidad. Marcos como
NVIDIA CLARA a menudo se basan en técnicas distribuidas
para procesar eficientemente estas complejas imágenes médicas.
Implantación de la formación distribuida con YOLO
En ultralytics simplifica la implementación de la formación DDP (Distributed Data Parallel). En
puede escalar fácilmente su entrenamiento de YOLO11 modelos en
múltiples GPUs simplemente especificando los índices de los dispositivos.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Train the model using two GPUs (device 0 and 1)
# The library automatically handles DDP setup for parallel processing
results = model.train(data="coco8.yaml", epochs=5, device=[0, 1])
Entrenamiento distribuido vs. Conceptos relacionados
Es importante distinguir la formación distribuida de otros términos relacionados en el ecosistema de la IA:
-
vs. Aprendizaje Federado: Aunque ambos implican múltiples dispositivos, sus objetivos principales difieren.
La formación distribuida suele centralizar los datos en un clúster de alto rendimiento para maximizar la velocidad y el rendimiento. En
Por el contrario, el aprendizaje federado
descentralizados en los dispositivos de los usuarios (como los smartphones) para priorizar
la privacidad de los datos, agregando actualizaciones
sin que los datos salgan del dispositivo de origen.
-
vs. Computación de alto rendimiento (HPC): La HPC es un campo amplio que abarca 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 redes
redes neuronales, a menudo utilizando bibliotecas de comunicación especializadas como
NVIDIA NCCL para reducir la latencia entre GPU.
Herramientas y ecosistema
Un sólido ecosistema de herramientas y plataformas de código abierto apoya la implantación de la formación distribuida:
-
Marcos: PyTorch ofrece soporte nativo
a través de su paquete distribuido, mientras que
TensorFlow proporciona estrategias como
MirroredStrategy para un escalado sin fisuras.
-
Orquestación: La gestión de recursos a través de un gran clúster a menudo implica la orquestación de contenedores
como Kubernetes o
Kubeflow, que automatizan el despliegue y el escalado de los trabajos de formación.
-
Infraestructura en la nube: Los principales proveedores ofrecen servicios gestionados como
AWS SageMaker y
Google Cloud TPUs que proporcionan una infraestructura optimizada para cargas de trabajo distribuidas, eliminando la carga del mantenimiento del hardware.
cargas de trabajo distribuidas, eliminando la carga del mantenimiento del hardware.
-
Escalabilidad universal: Bibliotecas como Horovod y
Ray proporcionan enfoques de escalado independientes del marco, lo que permite a los desarrolladores adaptar su código a entornos distribuidos con cambios mínimos.
su código a entornos distribuidos con cambios mínimos.