¿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 de las tareas de ML a gran escala en el que las cargas de trabajo se distribuyen en varios dispositivos o procesadores en lugar de ejecutarse en un único ordenador. El ML distribuido se utiliza con mayor frecuencia para entrenar modelos grandes y complejos, como redes neuronales profundas, donde las demandas computacionales son especialmente altas. 

A medida que los modelos de inteligencia artificial (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 varios dispositivos o nodos para mejorar el rendimiento, la precisión y la eficiencia. 

El 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 en IA, presentadas por expertos

Obtenga conocimientos organizados 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! Está suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. 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 del 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: combinar aspectos del paralelismo de datos y de modelos

El marco del servidor de parámetros para el ML distribuido utiliza uno o más nodos servidores para mantener las actualizaciones de los parámetros del modelo, mientras que los nodos trabajadores 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 síncrona o asíncrona. El entrenamiento síncrono es más común con los modelos de deep learning porque garantiza la coherencia, pero a costa de la velocidad. 

Dado 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. 

Dado que cada conjunto de datos está localizado, los científicos de datos suelen utilizar el aprendizaje federado para aplicaciones de deep learning distribuidas que implican una alta seguridad de datos o normativas 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 los conocimientos necesarios para priorizar las inversiones en IA que impulsan el crecimiento empresarial. Dé sus primeros pasos 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ánea 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 ML es demasiado grande para que lo gestione una sola máquina, el paralelismo de modelos permite que el modelo se ejecute en varios nodos. Cada nodo gestiona una parte del modelo, por lo que sus requisitos de computación 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 a la escalabilidad del método, y algunos se prestan más a la técnica que otros. El sistema debe crearse 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 una optimización de nivel experto. 

El paralelismo de modelos suele combinarse con el paralelismo de datos, de modo que cada segmento del modelo procesa una parte diferente de los datos de entrada. Los resultados se agregan en toda la red.

Paralelismo de pipelines 

El paralelismo de pipelines es un tipo de paralelismo de modelos que particiona 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 forma similar a como una brigada de cuberos a la antigua usanza pasaría un cubo de agua de una persona a otra, desde la fuente de agua hasta el incendio. 

El paralelismo de canalizaciones puede mejorar el rendimiento, es decir, el volumen de datos que un modelo puede procesar a la vez. Sin embargo, este impulso conlleva el coste 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 del pipeline 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 u ocupa demasiado espacio para un solo dispositivo. La autoatención y las capas de embedding (dos piedras angulares de la arquitectura del transformador) pueden crecer mucho, lo que significa que prácticamente todo el desarrollo de modelos de lenguaje de gran tamaño (LLM) implica paralelismo tensorial. Sin el paralelismo tensorial, sería prácticamente imposible entrenar modelos de 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 gráfico) o TPU (unidades de procesamiento tensorial). Cada dispositivo calcula parte de las operaciones de una sola capa, y los resultados parciales se agregan para producir el resultado 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 en las comunicaciones.

Paralelismo híbrido

Las técnicas de paralelismo de datos y de modelos no suelen utilizarse de forma aislada. A menudo se combinan en varias configuraciones de paralelismo híbrido. Los marcos de deep learning de código abierto PyTorch y TensorFlow, ambos compatibles con Python, se suelen utilizar para crear sistemas de machine learning distribuido. 

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 ML distribuido puede aumentar cada etapa del pipeline de ML: el proceso de creación, entrenamiento e implementación de modelos de machine learning. Preprocesamiento, entrenamiento, ajuste fino, validación, inferencia e implementación 

  • Preprocesamiento distribuido de datos 

  • Entrenamiento distribuido

  • Ajuste fino distribuido 

  • Validación distribuida 

  • Inferencia distribuida 

  • Implementación distribuida 

Preprocesamiento distribuido de datos

El preprocesamiento distribuido de datos utiliza redes vinculadas de nodos (los múltiples procesadores o dispositivos, no las neuronas individuales de la red neuronal, 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 único dispositivo.

Entrenamiento distribuido

El entrenamiento distribuido aprovecha las técnicas de ML distribuido para repartir el entrenamiento de modelos entre dispositivos. Por ejemplo, esta técnica se utiliza a menudo con grandes redes neuronales. Cuando la red, el conjunto de datos de entrenamiento o ambos son demasiado grandes para un procesador, el entrenamiento distribuido reparte la carga de trabajo entre varios servidores, GPU o máquinas. 

El descenso de gradiente estocástico (SGD) es un algoritmo de aprendizaje que divide el conjunto de datos en minilotes 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 del SGD es descender el gradiente para minimizar el valor de la función. Al igual que con el entrenamiento de modelos estándar, 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 que es posible porque cada lote se procesa independientemente de los demás dentro de cada iteración. Cada nodo calcula su gradiente y, a continuación, envía el valor de gradiente actualizado a los demás nodos de la red. Los demás nodos trabajadores 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 los parámetros del modelo y mantengan la coherencia. AllReduce, utilizado durante mucho tiempo en la informática de alto rendimiento, se popularizó en marcos de ML como Horovod. 

El SGD se puede ejecutar de forma síncrona o asíncrona. El SGD síncrono actualiza todos los nodos al mismo tiempo, lo que mantiene la coherencia a costa de posibles retrasos si algunos nodos se quedan rezagados. 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 requiere un uso intensivo de recursos computacionales, el entrenamiento es uno de los principales casos de uso del ML distribuido.

Ajuste fino distribuido 

Los mismos principios y beneficios del entrenamiento distribuido se aplican al ajuste fino distribuido. El ajuste fino entrena aún más un modelo preentrenado para especializarse en tareas más específicas. La aplicación de técnicas de 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

La inferencia 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.

Implementación distribuida 

La implementación distribuida gestiona las operaciones 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 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 cada uno de ellos. Los nodos pueden trabajar en paralelo para completar tareas a largo plazo con mayor rapidez y luego agregar sus resultados en el producto 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 ML distribuido, incluso una pequeña startup podría realizar esta tarea en unas horas.

Escalabilidad

Las empresas no necesitan invertir en ordenadores ultrapotentes para ejecutar  LLM y otros sistemas con un uso intensivo de recursos. La computación distribuida permite a los proveedores de servicios cloud coordinar una amplia 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 proceso de datos con big data se pueden completar sin una inversión significativa en infraestructura. El proceso de datos a gran escala permite incluso a las startups más pequeñas ofrecer a sus usuarios servicios como sistemas de recomendación o chatbots

Por su parte, los centros de datos a hiperescala se encuentran en el otro extremo del espectro de la escalabilidad. Cuando los recursos lo permiten, las organizaciones están creando clústeres de servidores masivos para ejecutar las redes neuronales profundas más avanzadas. No sería posible operar modelos tan grandes a través de miles de GPU sin el ML distribuido.

Redundancia

Muchos sistemas del mundo real dependen de la tolerancia a fallos, es decir, la capacidad de seguir funcionando incluso si fallan los nodos individuales. Los proveedores de modelos deben asegurarse de que los usuarios individuales, así como las aplicaciones conectadas con las API, puedan disfrutar de un acceso ininterrumpido. En el ML distribuido, la redundancia preserva el tiempo de actividad replicando los procesos entre los nodos para que los fallos no interrumpan el servicio.

Retos del ML distribuido

Entre los retos de una aplicación eficaz del ML distribuido se 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 de ML distribuido. 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 necesario, los proyectos de ML distribuido se enfrentarán a un aumento de los tiempos de entrenamiento y a una reducción de la 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 complete otra tarea. En un sistema síncrono, todos los nodos trabajadores 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 por los nodos, sino también por la comunicación entre ellos. El consumo de energía puede variar según la implementación y la arquitectura del sistema de ML distribuido. 

  • Requisitos computacionales: las GPU de alto rendimiento necesarias para muchas tareas de ML exigentes consumen mucha energía. 

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

  • Cloud o edge computing: los centros de datos centralizados a hiperescala que impulsan los principales modelos de IA consumen enormes cantidades de energía. El edge computing puede ayudar a reducir los costes de red. 

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

Marcos de machine learning distribuido

Los marcos de ML distribuido implementan el machine learning a la vez que optimizan la memoria y el uso de recursos. También pueden ayudar a escalar las implementaciones de ML, acortar los tiempos de entrenamiento y controlar los costes.

Entre los marcos de ML distribuido más destacados se incluyen:

  • PyTorch Distributed
     

  • Apache Spark
     

  • TensorFlow Distributed
     

  • Ray Train
     

  • InstructLab

PyTorch Distributed

Disponible en el popular marco de ML PyTorch, PyTorch Distributed es un conjunto de herramientas para crear y escalar modelos de deep learning en varios dispositivos. El paquete torch.distributed cubre la comunicación dentro de los nodos, como con AllReduce. La compatibilidad integrada con el paralelismo de datos y el paralelismo de modelos permite una amplia gama de enfoques de entrenamiento distribuido.

Apache Spark

Apache Spark es un marco de ML de larga data con soporte para el entrenamiento distribuido. Los usuarios pueden crear pipelines de ML de principio a fin que se integran con el gran ecosistema Spark, incluido Spark SQL para la manipulación de bases de datos. Spark ofrece dos bibliotecas: la MLlib original y la SparkML más reciente.

TensorFlow Distributed

La API tf.distribute.Estrategia dentro de TensorFlow abre la puerta al ML distribuido y contiene soporte para una serie 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 distribuido y ajuste fino dentro del marco Ray ML para computación distribuida. Ray Train es compatible tanto con PyTorch como con TensorFlow. La biblioteca Ray Tune soporta el ajuste distribuido de hiperparámetros a través de múltiples dispositivos.

InstructLab

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

Soluciones relacionadas
IBM watsonx.ai

Entrene, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de nueva generación para desarrolladores de IA. Cree 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 líder en IA del sector de IBM y junto a su cartera de soluciones.

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

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

Explore los servicios de IA
Dé el siguiente paso

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

Explore watsonx.ai Solicite una demostración en directo