Glosario

Formación Distribuida

¡Acelera el entrenamiento de IA con el entrenamiento distribuido! Aprende a reducir el tiempo de entrenamiento, escalar modelos y optimizar recursos para proyectos complejos de ML.

Entrena los modelos YOLO simplemente
con Ultralytics HUB

Saber más

El entrenamiento distribuido es una técnica utilizada en el aprendizaje automático (AM) para acelerar significativamente el proceso de entrenamiento de modelos, en particular los grandes y complejos habituales en el aprendizaje profundo (AD). A medida que los conjuntos de datos se hacen masivos y los modelos como los transformadores o las grandes redes convolucionales crecen en tamaño, entrenarlos en un único procesador, como una CPU o incluso una potente GPUpuede llevar mucho tiempo, días, semanas o incluso meses. El entrenamiento distribuido supera este cuello de botella dividiendo la carga de trabajo computacional entre varias unidades de procesamiento. Estas unidades (a menudo GPUs) pueden residir en una única máquina potente o estar repartidas entre varias máquinas conectadas en red, utilizando a menudo recursos de computación en nube.

Cómo funciona la formación distribuida

El principio fundamental del entrenamiento distribuido es el paralelismo: dividir la tarea de entrenamiento para que varias partes puedan ejecutarse simultáneamente. En lugar de que un procesador maneje todos los datos y cálculos secuencialmente, el trabajo se reparte entre varios procesadores, a menudo denominados "trabajadores". Hay dos estrategias principales para conseguirlo:

  • Paralelismo de datos: Es el enfoque más habitual. Se coloca una copia completa del modelo en cada trabajador. El conjunto de datos de entrenamiento se divide en trozos más pequeños, y cada trabajador procesa su trozo asignado utilizando su copia local del modelo. Los trabajadores calculan las actualizaciones de los pesos del modelo basándose en su subconjunto de datos. A continuación, estas actualizaciones (gradientes) se agregan a todos los trabajadores (a menudo se promedian) y se utilizan para actualizar el modelo maestro o sincronizar todas las copias del modelo. Esto permite procesar eficazmente lotes de mayor tamaño. Frameworks como PyTorch ofrecen Par alelismo de Datos Distribuido (DDP) y TensorFlow proporciona varias estrategias de entrenamiento distribuido que implementan el paralelismo de datos. La comunicación eficiente entre los trabajadores es crucial, a menudo gestionada por librerías como la NVIDIA Collective Communications Library (NCCL).
  • Paralelismo de modelos: Esta estrategia se suele emplear cuando un modelo es tan grande que no cabe en la memoria de una sola GPU. En lugar de replicar todo el modelo, se colocan diferentes partes (por ejemplo, capas) del modelo en diferentes trabajadores. Los datos fluyen secuencialmente por estas partes a través de los trabajadores durante los pases hacia delante y hacia atrás. Este enfoque es más complejo de implementar que el paralelismo de datos, pero necesario para entrenar modelos realmente enormes. Algunos marcos ofrecen herramientas de ayuda, como los enfoques deTensorFlow para el paralelismo de modelos, y a menudo se utilizan técnicas como el paralelismo de canalización.

Aplicaciones en el mundo real

El entrenamiento distribuido es indispensable para muchas aplicaciones punteras de Inteligencia Artificial (IA):

  • Entrenamiento de grandes modelos lingüísticos (LLM): Los modelos como el GPT-4 de OpenAI o el Gemini de Google tienen miles o billones de parámetros. Para entrenarlos es necesario distribuir el cálculo entre miles de GPUs durante largos periodos de tiempo. Esto es esencial para tareas como el procesamiento del lenguaje natural (PLN), la traducción automática y la creación de chatbots avanzados.
  • Modelos avanzados de visión por ordenador: Entrenamiento de modelos avanzados de visión por ordenador, como Ultralytics YOLO para la detección de objetos o modelos complejos para la segmentación de imágenes, en grandes conjuntos de datos como ImageNet o COCO se beneficia enormemente del entrenamiento distribuido. Por ejemplo, el entrenamiento de un modelo de detección de objetos para vehículos autónomos implica grandes cantidades de datos de imágenes y requiere una gran precisión, por lo que el entrenamiento distribuido en múltiples GPU es una necesidad para obtener resultados en un plazo razonable. Esto también se aplica a campos especializados como el análisis de imágenes médicas.
  • Sistemas de recomendación: Empresas como Netflix o Amazon entrenan modelos complejos con datos de interacción de los usuarios para generar recomendaciones personalizadas. La escala de estos datos a menudo requiere enfoques distribuidos.
  • Computación científica: Las simulaciones a gran escala en campos como la modelización del clima, la física y el descubrimiento de fármacos a menudo aprovechan principios informáticos distribuidos similares a los utilizados en el entrenamiento distribuido de ML.

Formación distribuida frente a otros métodos de formación

Es importante diferenciar la formación distribuida de los conceptos relacionados:

  • Aprendizaje Federado: Aunque ambos implican múltiples dispositivos, el Aprendizaje Feder ado está diseñado para escenarios en los que los datos están descentralizados y no pueden (o no deben) trasladarse a una ubicación central por motivos de privacidad de los datos (por ejemplo, el entrenamiento de modelos con datos de usuario almacenados en teléfonos móviles). En el aprendizaje federado, las actualizaciones del modelo se calculan localmente en los dispositivos y se envían a un servidor central para su agregación, pero los datos en bruto nunca salen del dispositivo. El entrenamiento distribuido suele suponer que los datos pueden trasladarse y distribuirse por el clúster de computación (por ejemplo, en un centro de datos o en la nube). Echa un vistazo a TensorFlow Federated para ver un marco de ejemplo.
  • Entrenamiento en un solo dispositivo: Este es el método tradicional en el que todo el proceso de entrenamiento se ejecuta en una única CPU o GPU. Es más sencillo de configurar(ver Inicio rápido de Ultralytics ), pero resulta inviable para grandes modelos o conjuntos de datos debido a las limitaciones de tiempo y memoria.

Herramientas y aplicación

La implantación de la formación distribuida se ve facilitada por diversas herramientas y plataformas:

  • Marcos ML: Frameworks básicos como PyTorch y TensorFlow ofrecen soporte integrado para API de entrenamiento distribuido.
  • Bibliotecas especializadas: Bibliotecas como Horovod, desarrollada por Uber, ofrecen un enfoque agnóstico del aprendizaje profundo distribuido.
  • Plataformas en la nube: Los principales proveedores de la nube, como AWS, Google Cloud y Microsoft Azure, ofrecen servicios gestionados de ML e infraestructuras optimizadas para la formación distribuida a gran escala.
  • Plataformas MLOps: Las plataformas como Ultralytics HUB simplifican el proceso proporcionando interfaces para gestionar conjuntos de datos, seleccionar modelos y lanzar trabajos de formación, incluyendo opciones de formación en la nube que gestionan la infraestructura distribuida subyacente. Las buenas prácticas de MLOps son clave para gestionar eficazmente la formación distribuida.

El entrenamiento distribuido es una técnica fundamental que permite el desarrollo de los modelos de IA más potentes de hoy en día, al hacer que el entrenamiento a gran escala sea factible y eficiente.

Leer todo