¿Qué es el machine learning distribuido?

Autores

Ivan Belcic

Staff writer

Cole Stryker

Staff Editor, AI Models

IBM Think

¿Qué es el machine learning distribuido?

El machine learning (ML) distribuido es un enfoque para las tareas de machine learning a gran escala en las que las cargas de trabajo se distribuyen en varios dispositivos o procesadores en lugar de ejecutarse en una sola computadora. El machine learning (ML) distribuido se utiliza con mayor frecuencia para entrenar modelos grandes y complejos, como redes neuronales, donde las demandas computacionales son especialmente altas. 

A medida que los modelos de IA aumentan de tamaño y complejidad, los Recursos necesarios para el entrenamiento pueden superar la capacidad de un solo dispositivo. Del mismo modo, las tareas complejas a gran escala pueden ser demasiado exigentes o requerir más memoria de la que puede proporcionar un dispositivo. Los sistemas distribuidos dividen el conjunto de datos o el modelo de IA en múltiples dispositivos o nodos para mejorar el rendimiento, la precisión y la eficiencia. 

El machine learning (ML) distribuido es un subconjunto de la computación distribuida, que abarca esfuerzos más amplios para difundir la computación en múltiples sistemas de procesamiento.

Las últimas tendencias de IA presentadas por expertos

Obtenga insights curados sobre las noticias más importantes e intrigantes de la IA. Suscríbase a nuestro boletín semanal Think. Consulte la Declaración de privacidad de IBM .

¡Gracias! Ya está suscrito.

Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

Tipos de machine learning distribuido

Los enfoques para el machine learning distribuido incluyen: 

  • Paralelismo de datos: dividir el conjunto de datos en varios dispositivos 

  • Paralelismo de modelos: partición de un modelo en varios dispositivos 

  • Paralelismo híbrido: combinación de aspectos del paralelismo de datos y modelos

La infraestructura para el machine learning (ML) distribuido utiliza uno o más nodos de servidor para mantener las actualizaciones de los parámetros del modelo, mientras que los nodos de trabajo manejan los datos y el cálculo.

Paralelismo de datos

El paralelismo de datos divide un gran conjunto de datos que se utiliza como datos de entrenamiento en un número de grupos igual al número de nodos del sistema. Cada nodo aloja una copia del modelo de IA y lo alimenta con un subconjunto de los datos distribuidos. Las operaciones de paralelismo de datos se pueden ejecutar de forma sincrónica o asincrónica. El entrenamiento sincrónico es más común con los modelos de aprendizaje profundo porque garantiza la coherencia, pero a costa de la velocidad. 

Debido a que cada nodo ejecuta una copia completa del modelo, el hardware debe tener suficiente memoria para alojarlo. Sin embargo, la carga de trabajo de IA por nodo se reduce, ya que cada uno procesa solo una parte del conjunto de datos.

Aprendizaje federado

El aprendizaje federado se asemeja al paralelismo de datos en el sentido de que varios nodos entrenan copias de un modelo en subconjuntos de datos. Sin embargo, las particiones de datos no se crean a partir de un grupo de datos centralizado, sino que consisten en datos locales para cada nodo. Las actualizaciones del modelo se agregan entre nodos, mientras que los datos nunca abandonan su fuente original. 

Debido a que cada conjunto de datos está localizado, los científicos de datos a menudo utilizan el aprendizaje federado para aplicaciones distribuidas de aprendizaje profundo que implican una alta seguridad de datos o regulaciones legales. Los grupos de datos centralizados pueden exponer accidentalmente información de identificación personal (PII) durante la transmisión. El aprendizaje federado mitiga este riesgo al aislar cada conjunto de datos en su propio nodo.

AI Academy

Conviértase en un experto en IA

Obtenga el conocimiento para priorizar las inversiones en IA que impulsan el crecimiento del negocio. Comience hoy mismo con nuestra AI Academy gratuita y lidere el futuro de la IA en su organización.

Paralelismo de modelos

En el paralelismo de modelos, un modelo se divide en porciones de componentes, como capas de una red neuronal profunda, que pueden ejecutarse de forma independiente y simultáneamente en nodos separados. Cada parte del modelo utiliza los mismos datos. El paralelismo de modelos también se conoce como paralelismo de redes. 

Cuando un único modelo de machine learning (ML) es demasiado grande para que lo maneje una sola máquina, el paralelismo del modelo permite que el modelo se ejecute en varios nodos. Cada nodo maneja una parte del modelo, por lo que sus requisitos de cómputo y memoria son menores que si una sola máquina tuviera que ejecutar el modelo completo. 

El paralelismo de modelos suele ser más difícil de implementar que el paralelismo de datos. El algoritmo de machine learning distribuido seleccionado afecta directamente la escalabilidad del método, con algunos prestándose a la técnica más que otros. El sistema debe construirse de manera que minimice la cantidad de datos compartidos entre nodos. Los sistemas de paralelismo de modelos de alto rendimiento requieren un diseño y optimización a nivel de expertos. 

El paralelismo del modelo a menudo se combina con el paralelismo de datos para que cada segmento del modelo procese una parte diferente de los datos de entrada. Los resultados se agregan en toda la red.

Paralelismo de tuberías 

El paralelismo de canalización es un tipo de paralelismo de modelos que divide un modelo secuencialmente. Cada etapa del modelo se aloja en su propio nodo. Los lotes de datos se procesan en orden a través de las etapas, de manera similar a cómo una antigua brigada de baldes pasaría un balde de agua de una persona a otra, desde la fuente de agua hasta el incendio. 

El paralelismo de pipelines puede mejorar el rendimiento: el volumen de datos que un modelo puede procesar a la vez. Sin embargo, este impulso conlleva el costo de una mayor latencia, que es la cantidad de tiempo que se tarda en generar un resultado después de recibir una entrada. 

El aumento de la latencia se debe a la fase de aceleración durante la cual los microlotes iniciales de datos pasan a través de la secuencia. Las etapas posteriores en la canalización de machine learning no pueden inicializarse hasta que los primeros microlotes de datos pasen por las etapas anteriores.

Paralelismo tensorial

El paralelismo tensorial entra en juego cuando incluso una sola capa de una red neuronal profunda requiere demasiada potencia computacional o ocupa demasiado espacio para un solo dispositivo. Las capas de autoatención e incorporación, dos piedras angulares de la arquitectura transformadora,pueden crecer mucho, lo que significa que prácticamente todo el desarrollo de Modelos de lenguaje extensos implica paralelismo tensorial. Sin el paralelismo tensorial, sería prácticamente imposible entrenar modelos LLM porque las capas son demasiado grandes para cualquier dispositivo. 

En el paralelismo tensorial, los parámetros de una sola capa se alojan en varias GPU (unidades de procesamiento de gráficos) o TPU (unidades de procesamiento de tensor). Cada dispositivo calcula parte de las Operaciones de una sola capa, y los Resultados parciales se agregan para producir los resultados de la capa. 

En comparación con el paralelismo de datos y muchos otros tipos de paralelismo de modelos, los flujos de trabajo de paralelismo tensorial requieren mucha más comunicación entre nodos. Las redes de gran ancho de banda pueden ayudar a reducir los cuellos de botella de comunicación.

Paralelismo híbrido

Las técnicas de paralelismo de datos y modelos no suelen utilizarse de forma aislada. A menudo se combinan en varias configuraciones de paralelismo híbrido. Los marcos de aprendizaje profundo de código abierto PyTorch y TensorFlow, ambos compatibles con Python, se utilizan comúnmente para construir sistemas distribuidos de aprendizaje automático. 

La mayoría de los modelos de lenguaje a gran escala, incluida la familia GPT, se basan en el paralelismo híbrido para entrenar de manera eficiente a escala.

Cómo funciona el machine learning distribuido

El aprendizaje automático distribuido puede aumentar cada etapa del pipeline de machine learning: el proceso de creación, entrenamiento y despliegue de modelos de machine learning. Preprocesamiento, entrenamiento, refinamiento, validación, inferencia y despliegue 

  • Preprocesamiento de datos distribuidos 

  • Entrenamiento distribuido

  • Ajuste distribuido 

  • Validación distribuida 

  • Inferencia distribuida 

  • Despliegue distribuido 

Preprocesamiento de datos distribuidos

El preprocesamiento de datos distribuidos utiliza redes de nodos vinculados—los múltiples procesadores o dispositivos, no las neuronas individuales de las Neural Networks, que a veces también se denominan "nodos"—para preparar grandes conjuntos de datos para su análisis y uso posterior. 

Un nodo de control central gestiona el flujo de trabajo, dividiendo los datos y asignándolos a los nodos de trabajo. La descentralización del trabajo mediante el procesamiento paralelo aumenta la escalabilidad y la eficiencia en comparación con los modelos tradicionales que utilizan un solo dispositivo.

Entrenamiento distribuido

El entrenamiento distribuido aprovecha las técnicas de aprendizaje automático (ML) distribuidas para difundir el entrenamiento de modelos en todos los dispositivos. Por ejemplo, esta técnica se utiliza a menudo con grandes neural networks. Cuando la red, el conjunto de datos de entrenamiento o ambos son demasiado grandes para un procesador, el entrenamiento distribuido distribuye la carga de trabajo entre varios servidores, GPU o máquinas. 

El descenso del gradiente estocástico (SGD) es un algoritmo de aprendizaje que divide el conjunto de datos en mini lotes y calcula el gradiente de la función de pérdida después de cada lote. El uso de minilotes en lugar del conjunto de datos completo hace que el entrenamiento sea más eficiente. 

La función de pérdida mide el error en las predicciones del modelo, y el objetivo de SGD es descender el gradiente para minimizar el valor de la función. Al igual que con el entrenamiento estándar del modelo, el proceso de entrenamiento se considera completo cuando el modelo alcanza la convergencia: cuando el algoritmo SGD minimiza con éxito el valor de la función. 

Los nodos procesan minilotes en paralelo, lo cual es posible porque cada lote se procesa independientemente de los demás dentro de cada iteración. Cada nodo calcula su gradiente y luego envía el valor de gradiente actualizado a los otros nodos de la red. Los otros nodos de trabajo implementan las actualizaciones que reciben en sus propios modelos, lo que ayuda a garantizar que todas las copias del modelo permanezcan idénticas durante todo el proceso de entrenamiento. 

La función AllReduce es una operación de comunicación colectiva que permite a cada nodo compartir sus resultados y propagar los resultados agregados a través de la red. AllReduce permite que todos los nodos sincronicen las actualizaciones de parámetros del modelo y mantengan la coherencia. AllReduce, utilizado durante mucho tiempo en la computación de alto rendimiento, se popularizó en infraestructuras de machine learning (ML) como Horovod. 

SGD se puede ejecutar de forma sincrónica o asincrónica. Synchronous SGD actualiza todos los nodos al mismo tiempo, lo que mantiene la coherencia a costa de posibles retrasos si algunos nodos se retrasan. El SGD asíncrono actualiza los parámetros tan pronto como está lista una actualización, pero algunos nodos pueden recibir actualizaciones que no incluyen los valores más actuales. 

Al reducir los recursos computacionales necesarios por dispositivo, el entrenamiento distribuido puede acelerar los tiempos de entrenamiento. Debido a que es tan intensivo en cómputo, el entrenamiento es uno de los principales casos de uso para el machine learning (ML) distribuido.

Ajuste fino distribuido 

Los mismos principios y beneficios del entrenamiento distribuido se aplican al refinamiento distribuido. El refinamiento entrena aún más un modelo previamente entrenado para especializarse en tareas más específicas. La aplicación de técnicas de machine learning (ML) distribuido hace que el proceso sea más rápido, más eficiente y más Escalable.

Validación distribuida 

La validación es el proceso de evaluar el rendimiento de un modelo entrenado. Distribuir el conjunto de datos de validación o un modelo grande en varios nodos proporciona los mismos beneficios que el resto del proceso de entrenamiento distribuido. 

Inferencia distribuida

Lainferencia es el proceso mediante el cual un modelo de IA entrenado procesa nuevos datos para reconocer patrones y generar resultados o predicciones. La distribución de la carga de trabajo en varios dispositivos permite operar modelos de IA que son demasiado grandes para una sola máquina. La inferencia distribuida también puede facilitar un mayor rendimiento y una menor latencia.

Despliegue distribuido 

El despliegue distribuido gestiona la operación de una aplicación de software a través de una red de nodos. El equilibrio de carga entre los nodos de trabajo ayuda a mitigar los cuellos de botella y optimizar la eficiencia de los recursos, aumentando el rendimiento y reduciendo la latencia.

Beneficios del machine learning (ML) distribuido

Los beneficios del machine learning distribuido incluyen: 

  • Eficiencia 

  • Escalabilidad

  • Redundancia

Eficiencia

Automatizar y dividir la carga de trabajo entre varios dispositivos reduce la carga de cualquier dispositivo. Los nodos pueden trabajar en paralelo para completar tareas a largo plazo más rápido y luego agregar sus resultados en el resultado final. 

Entrenar un modelo de reconocimiento de imágenes en ImageNet (un conjunto de datos con más de 14 millones de imágenes etiquetadas) llevaría semanas en una sola GPU. Con el machine learning (ML) distribuido, incluso una pequeña startup podría realizar esta tarea en horas.

Escalabilidad

Las empresas no necesitan invertir en computadoras ultrapotentes para ejecutar LLM y otros sistemas intensivos en recursos. La computación distribuida permite a los proveedores de servicios en la nube coordinar una vasta infraestructura en muchos servidores y centros de datos, poniéndola a disposición de los clientes empresariales bajo demanda.

Las tareas intensivas de ciencia de datos, como el procesamiento de datos con big data, se pueden completar sin una inversión significativa en infraestructura. El procesamiento de datos a gran escala permite que incluso las empresas emergentes más pequeñas ofrezcan a sus usuarios servicios, como sistemas de recomendación o chatbots. 

Mientras tanto, los centros de datos de hiperescala se encuentran en el otro extremo del espectro de escalabilidad. Donde los Recursos lo permiten, las organizaciones están construyendo clústeres para ejecutar las redes neuronales profundas más avanzadas. No sería posible operar modelos tan grandes en miles de GPU sin machine learning (ML) distribuido.

Redundancia

Muchos sistemas del mundo real dependen de la tolerancia a fallas, es decir, la capacidad de continuar operando incluso si fallan los nodos individuales. Los proveedores de modelos deben garantizar que los usuarios individuales, así como las aplicaciones conectadas con las API, puedan disfrutar de un acceso ininterrumpido. En el machine learning (ML) distribuido, la redundancia preserva el tiempo de actividad replicando procesos a través de nodos para que las fallas no interrumpan el servicio.

Desafíos del machine learning (ML) distribuido

Los desafíos de la implementación efectiva de ML distribuido incluyen: 

  • Cuellos de botella en la red

  • Sobrecarga de sincronización 

  • Consumo de energía

Cuellos de botella en la red

El ancho de banda insuficiente entre nodos es una causa frecuente de cuellos de botella en las redes distribuidas de machine learning (ML). Los métodos, como el paralelismo tensorial, que requieren más comunicación, son los que más ancho de banda consumen. Si la red no puede proporcionar el ancho de banda requerido, los proyectos de machine learning (ML) distribuido enfrentarán mayores tiempos de entrenamiento y menor escalabilidad.

Sobrecarga de sincronización

La sobrecarga de sincronización es un retraso que se produce cuando una tarea no puede comenzar hasta que se completa otra tarea. En un sistema sincrónico, todos los nodos de trabajo deben cargar datos compartidos antes de pasar a la siguiente etapa de entrenamiento. Este momento se conoce como barrera de sincronización porque la siguiente fase no comienza hasta que todos los nodos están sincronizados. 

Los nodos rezagados (trabajadores que tardan más que otros en completar su tarea) ralentizan todo el proceso. Los sistemas asíncronos eliminan la barrera ante el riesgo de que algunos nodos funcionen con configuraciones de parámetros obsoletas.

Consumo de energía

Las redes distribuidas pueden consumir mucha energía, no solo debido a los nodos sino también a la comunicación entre ellos. El consumo de energía puede variar según la implementación y la arquitectura del sistema de machine learning distribuido. 

  • Requisitos computacionales: las GPU de alto rendimiento necesarias para muchas tareas desafiantes de machine learning (ML) son intensivas en energía. 

  • Comunicación: los nodos necesitan redes de alta velocidad para comunicarse de manera efectiva y minimizar la sobrecarga de sincronización. 

  • Computación en la nube o perimetral: los centros de datos centralizados a hiperescala que impulsan los principales modelos de IA consumen enormes cantidades de energía. La computación perimetral puede ayudar a reducir los costos de red. 

  • Opciones de algoritmo y procesamiento de datos: elegir el algoritmo adecuado y seguir buenas prácticas de procesamiento de datos, como la ingeniería de características, puede hacer que los modelos sean más eficientes.

Marcos de aprendizaje automático distribuido

Los marcos de aprendizaje automático distribuido implementan el aprendizaje automático al tiempo que optimizan la memoria y el uso de Recursos. También pueden ayudar a escalar las implementaciones de machine learning (ML), acortar los tiempos de entrenamiento y controlar los costos.

Los marcos de ML distribuidos más destacados incluyen:

  • PyTorch Distributed
     

  • Apache Spark
     

  • TensorFlow Distributed
     

  • Ray Train
     

  • InstructLab

PyTorch Distributed

Disponible en la infraestructura PyTorch ML, PyTorch Distributed es un conjunto de herramientas para crear y escalar modelos de aprendizaje profundo en múltiples dispositivos. El paquete torch.distributed cubre la comunicación dentro del nodo, como con AllReduce. El soporte integrado para el paralelismo de datos y el paralelismo de modelos permite una variedad de enfoques de entrenamiento distribuidos.

Supervisión de Apache Spark

Apache Spark es un marco de ML de larga data con soporte para entrenamiento distribuido. Los usuarios pueden crear pipelines de machine learning (ML) de extremo a extremo que se integren con el ecosistema Spark más amplio, incluido Spark SQL para la manipulación de bases de datos. Spark ofrece dos bibliotecas: la MLlib original y la SparkML más nueva.

TensorFlow Distributed

La API tf.distribute.Estrategia dentro de TensorFlow abre la puerta al aprendizaje automático distribuido y contiene soporte para una variedad de esquemas: múltiples GPU en una máquina, múltiples GPU en múltiples máquinas y más. Por ejemplo, ParameterServerStrategy almacena parámetros en servidores dedicados, desde los cuales los nodos de trabajo acceden a ellos.

Ray Train

Ray Train es la biblioteca Escalable de entrenamiento y ajuste distribuido dentro de la infraestructura Ray machine learning (ML) para computación distribuida. Ray Train es compatible tanto con PyTorch como con TensorFlow. La biblioteca Ray Tune admite el ajuste de hiperparámetros distribuidos en varios dispositivos.

InstructLab

El enfoque novedoso de InstructLab para el aprendizaje automático distribuido evita el clúster tradicional en favor de un enfoque basado en la comunidad, casi como la recaudación de fondos de colaboración colectiva. Los miembros de la comunidad aportan actualizaciones de parámetros a un repositorio centralizado y pueden ajustar los modelos en sus dispositivos personales.

Soluciones relacionadas
IBM watsonx.ai

Entrene, valide, ajuste y despliegue IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de próxima generación para creadores de IA. Diseñe aplicaciones de IA en menos tiempo y con menos datos.

Descubra watsonx.ai
Soluciones de inteligencia artificial

Ponga la IA a trabajar en su negocio con la experiencia en IA líder en la industria y la cartera de soluciones de IBM a su lado.

Explore las soluciones de IA
Consultoría y servicios de IA

Reinvente los flujos de trabajo y las operaciones críticas añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.

Conozca los servicios de IA
Dé el siguiente paso

Obtenga acceso único a capacidades que abarcan el ciclo de vida del desarrollo de IA. Produzca potentes soluciones de IA con interfaces fáciles de usar, flujos de trabajo y acceso a API y SDK estándar de la industria.

Explore watsonx.ai Reserve una demostración en vivo