Diseño de patrones de arquitectura de tuberías de ML (con 10 ejemplos del mundo real)
Patrones de arquitectura de tuberías de ML (10 ejemplos del mundo real)
Hay un momento en el que todo practicante de ML se da cuenta de que entrenar un modelo en Jupyter Notebook es solo una pequeña parte de todo el proyecto. Preparar un flujo de trabajo que lleve tus datos desde su forma original hasta las predicciones, manteniendo capacidad de respuesta y flexibilidad, es lo realmente importante.
En ese momento, los científicos de datos o ingenieros de ML se vuelven curiosos y comienzan a buscar implementaciones de este tipo. Muchas preguntas sobre la construcción de pipelines de aprendizaje automático y sistemas ya han sido respondidas y provienen de las mejores prácticas y patrones de la industria. Pero algunas de estas consultas aún son recurrentes y no han sido explicadas adecuadamente.
¿Cómo debería operar el pipeline de aprendizaje automático? ¿Cómo deberían implementarse para adaptarse a la escalabilidad y adaptabilidad al tiempo que mantienen una infraestructura fácil de solucionar problemas?
Los pipelines de ML suelen consistir en una infraestructura interconectada que permite a una organización o equipo de aprendizaje automático seguir un enfoque consistente, modular y estructurado para construir, entrenar e implementar sistemas de ML. Sin embargo, este sistema eficiente no opera de forma independiente, requiere un enfoque arquitectónico integral y una consideración de diseño reflexiva.
Pero, ¿qué significan estos términos: diseño y arquitectura de aprendizaje automático, y cómo puede funcionar eficientemente un sistema de software complejo como un mecanismo de pipeline de ML? Este blog responderá a estas preguntas explorando lo siguiente:
- Transformers y la incrustación posicional un tutorial paso a paso d...
- Microsoft AI Research abre el código fuente de la biblioteca de scr...
- Google AI presenta AdaTape un nuevo enfoque de IA con una arquitect...
-
1
¿Qué es la arquitectura del pipeline y la consideración de diseño, y cuáles son las ventajas de entenderla? -
2
Exploración de las prácticas de diseño y arquitectura del pipeline de ML estándar en empresas tecnológicas prominentes -
3
Explicación de los patrones de diseño de arquitectura comunes del pipeline de ML -
4
Introducción a los componentes comunes de los pipelines de ML -
5
Introducción a las herramientas, técnicas y software utilizados para implementar y mantener los pipelines de ML -
6
Ejemplos de arquitectura de pipelines de ML -
7
Mejores prácticas comunes a considerar al diseñar y desarrollar pipelines de ML
¡Así que vamos a sumergirnos!
¿Qué son los patrones de diseño de arquitectura de pipelines de ML?
Estos dos términos se usan a menudo indistintamente, pero tienen significados distintos.
La arquitectura del pipeline de ML es como la partitura de una sinfonía a nivel alto. Esboza los componentes, etapas y flujos de trabajo dentro del pipeline de ML. Las consideraciones arquitectónicas se centran principalmente en la disposición de los componentes en relación entre sí y los procesos y etapas involucrados. Responde a la pregunta: “¿Qué procesos y componentes de ML se incluirán en el pipeline y cómo se estructurarán?”
En contraste, el diseño del pipeline de ML es un análisis profundo de la composición del pipeline de ML, tratando las herramientas, paradigmas, técnicas y lenguajes de programación utilizados para implementar el pipeline y sus componentes. Es el toque del compositor que responde a la pregunta: “¿Cómo se implementarán, probarán y mantendrán los componentes y procesos en el pipeline?”
Aunque hay una serie de información técnica sobre el diseño del pipeline de aprendizaje automático y los patrones arquitectónicos, esta publicación cubre principalmente lo siguiente:
Ventajas de entender la arquitectura del pipeline de ML

Hay varias razones por las que los ingenieros de ML, científicos de datos y practicantes de ML deberían conocer los patrones que existen en la arquitectura y el diseño del pipeline de ML, algunas de las cuales son:
- Efficiencia: entender los patrones en la arquitectura y el diseño del pipeline de ML permite a los profesionales identificar los recursos técnicos necesarios para una entrega rápida del proyecto.
- Escalabilidad: los patrones de arquitectura y diseño del pipeline de ML te permiten priorizar la escalabilidad, permitiendo a los profesionales construir sistemas de ML con un enfoque de escalabilidad primero. Estos patrones introducen soluciones que manejan el entrenamiento de modelos en grandes volúmenes de datos, inferencia de modelos de baja latencia y más.
- Plantillas y reproducibilidad: las etapas y componentes típicos del pipeline se vuelven reproducibles en equipos que utilizan patrones familiares, lo que permite a los miembros replicar proyectos de ML de manera eficiente.
- Estandarización: una organización que utiliza los mismos patrones para la arquitectura y el diseño del pipeline de ML puede actualizar y mantener los pipelines con mayor facilidad en toda la organización.
Pasos comunes en la arquitectura del pipeline de ML
Habiendo hablado sobre la importancia de comprender los patrones de arquitectura y diseño del pipeline de ML, las siguientes secciones presentan varios enfoques comunes de arquitectura y diseño que se encuentran en pipelines de ML en varias etapas o componentes.
Los pipelines de ML se dividen en secciones llamadas etapas, que consisten en uno o varios componentes o procesos que operan en conjunto para producir la salida del pipeline de ML. A lo largo de los años, las etapas involucradas dentro de un pipeline de ML han aumentado.
Hace menos de una década, cuando la industria de aprendizaje automático estaba principalmente enfocada en la investigación, etapas como el monitoreo, implementación y mantenimiento del modelo no existían o se consideraban de baja prioridad. Avancemos hasta los tiempos actuales, las etapas de monitoreo, mantenimiento e implementación dentro de un pipeline de ML han tomado prioridad, ya que los modelos en sistemas de producción requieren mantenimiento y actualización. Estas etapas se consideran principalmente en el ámbito de MLOps (operaciones de aprendizaje automático).
Hoy en día existen diferentes etapas dentro de los pipelines de ML construidos para cumplir con los requisitos técnicos, industriales y empresariales. Esta sección analiza las etapas comunes en la mayoría de los pipelines de ML, independientemente de la industria o función empresarial.
-
1
Ingestión de datos (por ejemplo, Apache Kafka, Amazon Kinesis) -
2
Preprocesamiento de datos (por ejemplo, pandas, NumPy) -
3
Ingeniería y selección de características (por ejemplo, Scikit-learn, Feature Tools) -
4
Entrenamiento del modelo (por ejemplo, TensorFlow, PyTorch) -
5
Evaluación del modelo (por ejemplo, Scikit-learn, MLflow) -
6
Implementación del modelo (por ejemplo, TensorFlow Serving, TFX) -
7
Monitoreo y mantenimiento (por ejemplo, Prometheus, Grafana)
Ahora que entendemos los componentes dentro de un pipeline de ML estándar, a continuación se muestran sub-pipelines o sistemas que encontrará dentro de todo el pipeline de ML.
- Pipeline de Ingeniería de Datos
- Pipeline de Ingeniería de Características
- Pipeline de Entrenamiento y Desarrollo del Modelo
- Pipeline de Implementación del Modelo
- Pipeline de Producción
Construyendo un Pipeline de ML: 6 Problemas y Soluciones
10 Ejemplos de arquitectura de pipeline de ML
Profundicemos en algunos de los patrones de arquitectura y diseño más comunes y exploremos sus ejemplos, ventajas e inconvenientes con más detalle.
Arquitectura de líder único
¿Qué es la arquitectura de líder único?
La exploración de la arquitectura y los patrones de pipeline de aprendizaje automático comunes comienza con un patrón que se encuentra no solo en sistemas de aprendizaje automático, sino también en sistemas de bases de datos, plataformas de transmisión, aplicaciones web e infraestructura informática moderna. La arquitectura de líder único es un patrón utilizado en el desarrollo de pipelines de aprendizaje automático diseñados para funcionar a gran escala mientras proporcionan una infraestructura manejable de componentes individuales.
La arquitectura de líder único utiliza el paradigma maestro-esclavo; en esta arquitectura, el nodo líder o maestro tiene conocimiento del estado general del sistema, gestiona la ejecución y distribución de tareas según la disponibilidad de recursos y maneja las operaciones de escritura.
Los nodos seguidores o esclavos principalmente ejecutan operaciones de lectura. En el contexto de los pipelines de ML, el nodo líder sería responsable de orquestar la ejecución de varias tareas, distribuir la carga de trabajo entre los nodos seguidores según la disponibilidad de recursos y gestionar el estado general del sistema.
Mientras tanto, los nodos seguidores llevan a cabo las tareas asignadas por el nodo líder, como el preprocesamiento de datos, la extracción de características, el entrenamiento y la validación del modelo.

Un ejemplo del mundo real de arquitectura de líder único
Para ver la arquitectura de líder único utilizada a gran escala dentro de un pipeline de aprendizaje automático, tenemos que mirar una de las plataformas de transmisión más grandes que proporciona recomendaciones de video personalizadas a millones de usuarios en todo el mundo, Netflix.
Internamente, dentro del equipo de ingeniería de Netflix, se construyó Meson para gestionar, orquestar, programar y ejecutar flujos de trabajo dentro de pipelines de ML/Datos. Meson gestionaba el ciclo de vida de los pipelines de ML, proporcionando funcionalidades como recomendaciones y análisis de contenido, y utilizaba la arquitectura de líder único.
Meson tenía 70,000 flujos de trabajo programados, con más de 500,000 tareas ejecutadas diariamente. Dentro de Meson, el nodo líder seguía y gestionaba el estado de cada ejecución de tarea asignada a un nodo seguidor, proporcionaba tolerancia a fallos al identificar y rectificar tareas fallidas y se encargaba de la ejecución y programación de tareas.

Ventajas y desventajas de la arquitectura de un solo líder
Para entender cuándo utilizar la Arquitectura de un Solo Líder en los componentes de un pipeline de aprendizaje automático, es útil explorar sus principales ventajas y desventajas.
- Las ventajas destacadas de la Arquitectura de un Solo Líder son la tolerancia a fallos, la escalabilidad, la consistencia y la descentralización.
- Con un nodo o parte del sistema responsable de las operaciones y la gestión del flujo de trabajo, identificar los puntos de fallo dentro de los pipelines que adoptan la arquitectura de un solo líder es sencillo.
- Maneja eficazmente las fallas de procesamiento inesperadas redirigiendo/redistribuyendo la ejecución de trabajos, proporcionando consistencia de datos y estado en todo el pipeline de aprendizaje automático y actuando como una única fuente de verdad para todos los procesos.
- Los pipelines de aprendizaje automático que adoptan la Arquitectura de un Solo Líder pueden escalar horizontalmente para operaciones de lectura adicionales mediante el aumento del número de nodos seguidores.

Sin embargo, a pesar de todas sus ventajas, la arquitectura de un solo líder para los pipelines de aprendizaje automático puede presentar problemas como la escalabilidad, la pérdida de datos y la disponibilidad.
- La escalabilidad de escritura dentro de la arquitectura de un solo líder es limitada, y esta limitación puede actuar como un cuello de botella para la velocidad de la orquestación y gestión general de trabajos/flujo de trabajo.
- Todas las operaciones de escritura son manejadas por el nodo líder en la arquitectura, lo que significa que aunque las operaciones de lectura pueden escalar horizontalmente, la operación de escritura manejada por el nodo líder no escala proporcionalmente o en absoluto.
- La arquitectura de un solo líder puede tener un tiempo de inactividad significativo si el nodo líder falla; esto presenta problemas de disponibilidad del pipeline y causa la falla del sistema completo debido a la dependencia de la arquitectura en el nodo líder.
A medida que el número de flujos de trabajo gestionados por Meson creció, la arquitectura de un solo líder comenzó a mostrar signos de problemas de escala. Por ejemplo, experimentó lentitud durante los momentos de mayor tráfico y requirió una supervisión cercana durante las horas no laborables. A medida que aumentaba el uso, el sistema tuvo que escalar verticalmente, acercándose a los límites del tipo de instancia de AWS.
Esto llevó al desarrollo de Maestro, que utiliza una arquitectura sin compartición para escalar horizontalmente y gestionar los estados de millones de instancias de flujos de trabajo y pasos simultáneamente.
Maestro incorpora varios patrones arquitectónicos en aplicaciones modernas impulsadas por funcionalidades de aprendizaje automático. Estos incluyen arquitectura sin compartición, arquitectura basada en eventos y gráficos acíclicos dirigidos (DAGs). Cada uno de estos patrones arquitectónicos desempeña un papel crucial en mejorar la eficiencia de los pipelines de aprendizaje automático.
La siguiente sección profundiza en estos patrones arquitectónicos, explorando cómo se utilizan en los pipelines de aprendizaje automático para agilizar la ingestión de datos, el procesamiento, el entrenamiento de modelos y la implementación.
Gráficos acíclicos dirigidos (DAG)
¿Qué es la arquitectura de gráficos acíclicos dirigidos?
Los gráficos dirigidos están compuestos por nodos, aristas y direcciones. Los nodos representan procesos; las aristas en el grafo representan las relaciones entre los procesos y la dirección de las aristas indica el flujo de ejecución de los procesos o la transferencia de datos/señales dentro del grafo.
La aplicación de restricciones a los grafos permite expresar e implementar sistemas con un flujo de ejecución secuencial. Por ejemplo, una condición en los grafos donde los bucles entre vértices o nodos están prohibidos. Este tipo de grafo se llama grafo acíclico, lo que significa que no hay relaciones circulares (ciclos dirigidos) entre uno o más nodos.
Los grafos acíclicos eliminan la repetición entre nodos, puntos o procesos evitando los bucles entre dos nodos. Obtenemos el grafo acíclico dirigido combinando las características de las aristas dirigidas y las relaciones no circulares entre nodos.
Un grafo acíclico dirigido (DAG) representa actividades de manera que muestra las actividades como nodos y las dependencias entre nodos como aristas dirigidas a otro nodo. En particular, dentro de un DAG, se evitan los ciclos o bucles en la dirección de las aristas entre los nodos.
Los DAGs tienen una propiedad topológica, lo que implica que los nodos en un DAG están ordenados linealmente, con los nodos dispuestos de manera secuencial.
En esta ordenación, un nodo que se conecta a otros nodos se posiciona antes que los nodos a los que apunta. Este ordenamiento lineal asegura que las aristas dirigidas solo avancen en la secuencia, evitando que se produzcan ciclos o bucles.

Un ejemplo real de arquitectura de grafos acíclicos dirigidos

Un ejemplo real adecuado que ilustra el uso de DAGs es el proceso dentro de aplicaciones de transporte como Uber o Lyft. En este contexto, un DAG representa la secuencia de actividades, tareas o trabajos como nodos, y las aristas dirigidas que conectan cada nodo indican el orden de ejecución o flujo. Por ejemplo, un usuario debe solicitar un conductor a través de la aplicación antes de que el conductor pueda dirigirse a la ubicación del usuario.
Además, la plataforma Maestro de Netflix utiliza DAGs para orquestar y gestionar flujos de trabajo dentro de tuberías de aprendizaje automático y datos. Aquí, los DAGs representan flujos de trabajo que comprenden unidades que contienen definiciones de trabajo para las operaciones que se llevarán a cabo, conocidas como pasos.
Los profesionales que deseen aprovechar la arquitectura DAG dentro de las tuberías de aprendizaje automático y proyectos pueden hacerlo utilizando las características arquitectónicas de los DAG para garantizar y gestionar una descripción de una secuencia de operaciones que se va a ejecutar de manera predecible y eficiente.
Esta característica principal de los DAGs permite que la ejecución de flujos de trabajo en tuberías de aprendizaje automático complejas sea más manejable, especialmente cuando hay altos niveles de dependencias entre procesos, trabajos u operaciones dentro de las tuberías de aprendizaje automático.
Por ejemplo, la siguiente imagen muestra una tubería de aprendizaje automático estándar que incluye ingestión de datos, preprocesamiento, extracción de características, entrenamiento de modelos, validación de modelos y predicción. Las etapas en la tubería se ejecutan consecutivamente, una después de la otra, cuando la etapa anterior se marca como completa y proporciona una salida. Cada una de las etapas dentro de la tubería también se puede definir como nodos dentro de los DAGs, con las aristas dirigidas indicando las dependencias entre las etapas/componentes de la tubería.

Ventajas y desventajas de la arquitectura de grafos acíclicos dirigidos
- El uso de DAGs proporciona una forma eficiente de ejecutar procesos y tareas en diversas aplicaciones, incluyendo análisis de big data, aprendizaje automático e inteligencia artificial, donde las dependencias de tareas y el orden de ejecución son cruciales.
- En el caso de las aplicaciones de transporte, cada resultado de actividad contribuye a completar el proceso de transporte. El orden topológico de los DAGs garantiza la secuencia correcta de actividades, facilitando así un flujo de proceso más fluido.
- Para tuberías de aprendizaje automático como las de Maestro de Netflix, los DAGs ofrecen una forma lógica de ilustrar y organizar la secuencia de operaciones del proceso. Los nodos en una representación DAG corresponden a componentes o etapas estándar como la ingestión de datos, el preprocesamiento de datos, la extracción de características, etc.
- Las aristas dirigidas indican las dependencias entre procesos y la secuencia de ejecución de procesos. Esta característica garantiza que todas las operaciones se ejecuten en el orden correcto y también puede identificar oportunidades para la ejecución paralela, reduciendo el tiempo de ejecución total.
Aunque los DAGs proporcionan la ventaja de visualizar las interdependencias entre tareas, esta ventaja puede volverse desventajosa en una tubería de aprendizaje automático compleja y grande que consta de numerosos nodos y dependencias entre tareas.
- Los sistemas de aprendizaje automático que eventualmente alcanzan un alto nivel de complejidad y se modelan mediante DAGs se vuelven difíciles de gestionar, entender y visualizar.
- En las tuberías de aprendizaje automático modernas que se espera que sean adaptables y operen dentro de entornos o flujos de trabajo dinámicos, los DAGs no son adecuados para modelar y gestionar estos sistemas o tuberías, principalmente porque los DAGs son ideales para flujos de trabajo estáticos con dependencias predefinidas.
Sin embargo, puede haber mejores opciones para las tuberías de aprendizaje automático dinámicas de hoy en día. Por ejemplo, imagina una tubería que detecta anomalías en tiempo real en el tráfico de red. Esta tubería tiene que adaptarse a cambios constantes en la estructura y el tráfico de la red. Un DAG estático podría tener dificultades para modelar tales dependencias dinámicas.
Aprendizajes de la construcción de la plataforma de ML en Stitch Fix y más con Stefan Krawczyk (DAGWorks)
Patrón foreach
¿Qué es el patrón foreach?
Los patrones arquitectónicos y de diseño en los flujos de trabajo de aprendizaje automático se pueden encontrar en la implementación de operaciones dentro de las fases de los flujos de trabajo. Los patrones implementados se utilizan en el flujo de trabajo de aprendizaje automático para permitir la ejecución secuencial y eficiente de operaciones que actúan sobre conjuntos de datos. Uno de estos patrones es el patrón foreach.
El patrón foreach es un paradigma de ejecución de código que ejecuta de forma iterativa un fragmento de código tantas veces como aparezca un elemento en una colección o conjunto de datos. Este patrón es particularmente útil en procesos, componentes o etapas dentro de los flujos de trabajo de aprendizaje automático que se ejecutan de forma secuencial y recursiva. Esto significa que el mismo proceso puede ejecutarse un número determinado de veces antes de proporcionar una salida y avanzar al siguiente proceso o etapa.
Por ejemplo, un conjunto de datos estándar consta de varios puntos de datos que deben pasar por el mismo script de preprocesamiento de datos para transformarse en un formato de datos deseado. En este ejemplo, el patrón foreach se utiliza como un método para llamar repetidamente a la función de procesamiento ‘n’ veces. Normalmente, ‘n’ corresponde al número de puntos de datos.
Otra aplicación del patrón foreach se puede observar en la etapa de entrenamiento del modelo, donde un modelo se expone repetidamente a diferentes particiones del conjunto de datos para entrenamiento y otras para pruebas durante un tiempo especificado.

Un ejemplo real del patrón foreach
Una aplicación del mundo real del patrón foreach se encuentra en el orquestador y programador de flujos de trabajo de ML/Datos de Netflix, Maestro. Los flujos de trabajo de Maestro consisten en definiciones de trabajos que contienen pasos/trabajos que se ejecutan en un orden definido por la arquitectura de Grafo Acíclico Dirigido (DAG). Dentro de Maestro, el patrón foreach se utiliza internamente como un subflujo de trabajo que consta de pasos/trabajos definidos, donde los pasos se ejecutan repetidamente.
Como se mencionó anteriormente, el patrón foreach se puede utilizar en la etapa de entrenamiento del modelo en los flujos de trabajo de aprendizaje automático, donde un modelo se expone repetidamente a diferentes particiones del conjunto de datos para entrenamiento y otras para pruebas durante un tiempo especificado.

Ventajas y desventajas del patrón foreach
- El uso de la arquitectura de DAG y el patrón foreach en un flujo de trabajo de aprendizaje automático permite una solución de flujo de trabajo de aprendizaje automático robusta, escalable y manejable.
- El patrón foreach se puede utilizar dentro de cada etapa del flujo de trabajo para aplicar una operación de manera repetida, como llamar repetidamente a una función de procesamiento un número de veces en un escenario de preprocesamiento de datos.
- Esta configuración ofrece una gestión eficiente de flujos de trabajo complejos en flujos de trabajo de aprendizaje automático.
A continuación se muestra una ilustración de un flujo de trabajo de aprendizaje automático que utiliza DAG y el patrón foreach. El diagrama de flujo representa un flujo de trabajo de aprendizaje automático donde cada etapa (Recopilación de datos, Preprocesamiento de datos, Extracción de características, Entrenamiento del modelo, Validación del modelo y Generación de predicciones) se representa como un nodo de Grafo Acíclico Dirigido (DAG). Dentro de cada etapa, se utiliza el patrón “foreach” para aplicar una operación específica a cada elemento de una colección.
Por ejemplo, cada punto de datos se limpia y transforma durante el preprocesamiento de datos. Las aristas dirigidas entre las etapas representan las dependencias, lo que indica que una etapa no puede comenzar hasta que se haya completado la etapa anterior. Este diagrama de flujo ilustra la gestión eficiente de flujos de trabajo complejos en flujos de trabajo de aprendizaje automático utilizando la arquitectura de DAG y el patrón foreach.

Pero también hay algunas desventajas.
Cuando se utiliza el patrón foreach en etapas de procesamiento de datos o características, todos los datos deben cargarse en memoria antes de que se puedan ejecutar las operaciones. Esto puede provocar un rendimiento computacional deficiente, especialmente cuando se procesan grandes volúmenes de datos que pueden superar los recursos de memoria disponibles. Por ejemplo, en un caso de uso donde el conjunto de datos tiene varios terabytes de tamaño, el sistema puede quedarse sin memoria, ralentizarse o incluso bloquearse si intenta cargar todos los datos simultáneamente.
Otra limitación del patrón foreach radica en el orden de ejecución de los elementos dentro de una colección de datos. El patrón foreach no garantiza un orden de ejecución consistente o en la misma forma en que se cargaron los datos.
El orden de ejecución inconsistente dentro de los patrones foreach puede ser problemático en escenarios donde la secuencia en la que se procesan los datos o características es significativa. Por ejemplo, si se procesa un conjunto de datos de series temporales donde el orden de los puntos de datos es fundamental para comprender tendencias o patrones, una ejecución sin orden podría llevar a un entrenamiento y predicciones inexactos del modelo.
Embeddings
¿Qué es el patrón de diseño de embeddings?
Los embeddings son un patrón de diseño presente en las tuberías de aprendizaje automático tradicionales y modernas, y se definen como representaciones de baja dimensión de datos de alta dimensión, capturando las características clave, relaciones y características de las estructuras inherentes de los datos.
Normalmente, los embeddings se presentan como vectores de números de punto flotante, y las relaciones o similitudes entre dos vectores de embeddings se pueden deducir utilizando diversas técnicas de medición de distancia.
En el aprendizaje automático, los embeddings desempeñan un papel importante en diversas áreas, como el entrenamiento de modelos, la eficiencia computacional, la interpretabilidad del modelo y la reducción de la dimensionalidad.
Un ejemplo real de patrón de diseño de embeddings
Empresas destacadas como Google y OpenAI utilizan embeddings para varias tareas presentes en los procesos dentro de las tuberías de aprendizaje automático. El producto estrella de Google, Google Search, aprovecha los embeddings en su motor de búsqueda y motor de recomendación, transformando vectores de alta dimensión en vectores de nivel inferior que capturan el significado semántico de las palabras dentro del texto. Esto conduce a un mejor rendimiento de los resultados de búsqueda en cuanto a la relevancia de los resultados de búsqueda para las consultas de búsqueda.
OpenAI, por otro lado, ha estado a la vanguardia de los avances en modelos generativos de IA, como GPT-3, que dependen en gran medida de los embeddings. En estos modelos, los embeddings representan palabras o tokens en el texto de entrada, capturando las relaciones semánticas y sintácticas entre las palabras, lo que permite al modelo generar texto coherente y contextualmente relevante. OpenAI también utiliza embeddings en tareas de aprendizaje por refuerzo, donde representan el estado del entorno o las acciones de un agente.
Ventajas y desventajas del patrón de diseño de embeddings
Las ventajas del método de representación de datos mediante embeddings en las tuberías de aprendizaje automático radican en su aplicabilidad a varias tareas de aprendizaje automático y componentes de tuberías de aprendizaje automático. Los embeddings se utilizan en tareas de visión por computadora, tareas de procesamiento del lenguaje natural (NLP) y estadísticas. Específicamente, los embeddings permiten que las redes neuronales consuman datos de entrenamiento en formatos que permiten extraer características de los datos, lo cual es particularmente importante en tareas como el procesamiento del lenguaje natural o el reconocimiento de imágenes. Además, los embeddings desempeñan un papel significativo en la interpretabilidad del modelo, un aspecto fundamental de la IA explicada, y sirven como una estrategia empleada para desmitificar los procesos internos de un modelo, fomentando así una comprensión más profunda del proceso de toma de decisiones del modelo. También actúan como una forma de representación de datos que retiene la información clave, los patrones y las características, proporcionando una representación de baja dimensión de datos de alta dimensión que conserva patrones e información clave.
Dentro del contexto del aprendizaje automático, los embeddings desempeñan un papel importante en varias áreas.
- Entrenamiento del modelo: Los embeddings permiten que las redes neuronales consuman datos de entrenamiento en formatos que extraen características de los datos. En tareas de aprendizaje automático como el procesamiento del lenguaje natural o el reconocimiento de imágenes, el formato inicial de los datos, ya sean palabras o frases en texto o píxeles en imágenes y videos, no es directamente propicio para entrenar redes neuronales. Aquí es donde entran en juego los embeddings. Al transformar estos datos de alta dimensión en vectores densos de números reales, los embeddings proporcionan un formato que permite que los parámetros de la red, como los pesos y los sesgos, se adapten adecuadamente al conjunto de datos.
- Interpretabilidad del modelo: La capacidad de los modelos para generar resultados de predicción y proporcionar ideas acompañantes que detallen cómo se derivaron estas predicciones en función de los parámetros internos del modelo, el conjunto de datos de entrenamiento y las heurísticas puede mejorar significativamente la adopción de los sistemas de inteligencia artificial. El concepto de IA explicada gira en torno al desarrollo de modelos que ofrecen resultados de inferencia y una forma de explicación que detalla el proceso detrás de la predicción. La interpretabilidad del modelo es un aspecto fundamental de la IA explicada, que sirve como una estrategia empleada para desmitificar los procesos internos de un modelo, fomentando así una comprensión más profunda del proceso de toma de decisiones del modelo. Esta transparencia es crucial para generar confianza entre los usuarios y las partes interesadas, facilitar la depuración y mejora del modelo y garantizar el cumplimiento de los requisitos normativos. Los embeddings proporcionan un enfoque para la interpretabilidad del modelo, especialmente en tareas de procesamiento del lenguaje natural donde visualizar la relación semántica entre oraciones o palabras en una oración proporciona una comprensión de cómo un modelo entiende el contenido de texto que se le ha proporcionado.
- Reducción de la dimensionalidad: Los embeddings forman una representación de datos que retiene información clave, patrones y características. En las tuberías de aprendizaje automático, los datos contienen una gran cantidad de información capturada en niveles variables de dimensionalidad. Esto significa que la gran cantidad de datos aumenta el costo computacional, los requisitos de almacenamiento, el entrenamiento del modelo y el procesamiento de datos, todos los cuales apuntan a elementos encontrados en el escenario de la maldición de la dimensionalidad. Los embeddings proporcionan una representación de baja dimensión de datos de alta dimensión que retiene patrones e información clave.
- Otras áreas en las tuberías de aprendizaje automático: transferencia de aprendizaje, detección de anomalías, búsqueda de similitud de vectores, agrupamiento, etc.
Aunque las incrustaciones son enfoques útiles para la representación de datos en muchas tareas de aprendizaje automático, hay algunos escenarios en los que el poder representacional de las incrustaciones está limitado debido a datos dispersos y la falta de patrones inherentes en el conjunto de datos. Esto se conoce como el problema de “inicio en frío”, donde una incrustación es un enfoque de representación de datos que se genera identificando los patrones y correlaciones dentro de los elementos de los conjuntos de datos, pero en situaciones donde hay pocos patrones o cantidades insuficientes de datos, los beneficios representacionales de las incrustaciones pueden perderse, lo que resulta en un rendimiento deficiente en sistemas de aprendizaje automático como los sistemas de recomendación y clasificación.
Una desventaja esperada de la representación de datos de menor dimensionalidad es la pérdida de información; las incrustaciones generadas a partir de datos de alta dimensionalidad a veces pueden sucumbir a la pérdida de información en el proceso de reducción de dimensionalidad, lo que contribuye al rendimiento deficiente de los sistemas de aprendizaje automático y las tuberías de procesamiento.
Paralelismo de datos
¿Qué es el paralelismo de datos?
El paralelismo de datos es una estrategia utilizada en un flujo de trabajo de aprendizaje automático con acceso a múltiples recursos informáticos, como CPUs y GPUs, y un gran conjunto de datos. Esta estrategia implica dividir el gran conjunto de datos en lotes más pequeños, cada uno procesado en un recurso informático diferente.
Al comienzo del entrenamiento, los mismos parámetros y pesos iniciales del modelo se copian en cada recurso informático. A medida que cada recurso procesa su lote de datos, actualiza de forma independiente estos parámetros y pesos. Después de procesar cada lote, se calculan y comparten los gradientes (o cambios) de estos parámetros en todos los recursos. Esto asegura que todas las copias del modelo se mantengan sincronizadas durante el entrenamiento.

Un ejemplo del mundo real de paralelismo de datos
Un escenario del mundo real en el que se aplican los principios del paralelismo de datos es el trabajo innovador de Facebook AI Research (FAIR) Engineering con su sistema novedoso: el sistema Fully Sharded Data Parallel (FSDP).
Esta creación innovadora tiene el único propósito de mejorar el proceso de entrenamiento de modelos de IA masivos. Lo logra distribuyendo las variables de un modelo de IA en operadores de paralelismo de datos y, opcionalmente, transfiriendo una fracción del cálculo de entrenamiento a CPUs.
FSDP se destaca por su enfoque único para el particionamiento de parámetros. Adopta un enfoque más equilibrado que resulta en un rendimiento superior. Esto se logra permitiendo que la comunicación y el cálculo relacionados con el entrenamiento se superpongan. Lo emocionante de FSDP es cómo optimiza el entrenamiento de modelos mucho más grandes pero utiliza menos GPUs en el proceso.
Esta optimización es especialmente relevante y valiosa en áreas especializadas como el procesamiento del lenguaje natural (NLP) y la visión por computadora. Ambas áreas a menudo requieren entrenamiento de modelos a gran escala.
Una aplicación práctica de FSDP es evidente en las operaciones de Facebook. Han incorporado FSDP en el proceso de entrenamiento de algunos de sus modelos de NLP y Visión, lo que es un testimonio de su efectividad. Además, forma parte de la biblioteca FairScale, que proporciona una API sencilla para permitir a los desarrolladores y ingenieros mejorar y escalar su entrenamiento de modelos.
La influencia de FSDP se extiende a numerosos marcos de aprendizaje automático, como fairseq para modelos de lenguaje, VISSL para modelos de visión por computadora y PyTorch Lightning para una amplia gama de otras aplicaciones. Esta amplia integración muestra la aplicabilidad y usabilidad del paralelismo de datos en los flujos de trabajo de aprendizaje automático modernos.
Ventajas y desventajas del paralelismo de datos
- El concepto de paralelismo de datos presenta un enfoque convincente para reducir el tiempo de entrenamiento en modelos de aprendizaje automático.
- La idea fundamental es subdividir el conjunto de datos y procesar simultáneamente estas subdivisiones en diversas plataformas informáticas, ya sean múltiples CPUs o GPUs. Como resultado, se aprovechan al máximo los recursos informáticos disponibles.
- Integrar el paralelismo de datos en sus procesos y flujo de trabajo de aprendizaje automático es un desafío. Por ejemplo, la sincronización de los parámetros del modelo en diversos recursos informáticos agrega complejidad. Especialmente en sistemas distribuidos, esta sincronización puede tener costos adicionales debido a posibles problemas de latencia de comunicación.
- Además, es importante tener en cuenta que la utilidad del paralelismo de datos solo se extiende a algunos modelos o conjuntos de datos de aprendizaje automático. Hay modelos con dependencias secuenciales, como ciertos tipos de redes neuronales recurrentes, que podrían no funcionar bien con un enfoque de paralelismo de datos.
Paralelismo de modelos
¿Qué es el paralelismo de modelos?
El paralelismo de modelos se utiliza dentro de los flujos de trabajo de aprendizaje automático para utilizar eficientemente los recursos informáticos cuando el modelo de aprendizaje profundo es demasiado grande para ser almacenado en una sola instancia de GPU o CPU. Esta eficiencia informática se logra dividiendo el modelo inicial en subpartes y almacenando esas partes en diferentes GPUs, CPUs o máquinas.
La estrategia de paralelismo de modelos aloja diferentes partes del modelo en diferentes recursos informáticos. Además, los cálculos de los gradientes del modelo y el entrenamiento se ejecutan en cada máquina para su segmento respectivo del modelo inicial. Esta estrategia nació en la era del aprendizaje profundo, donde los modelos son lo suficientemente grandes como para contener miles de millones de parámetros, lo que significa que no se pueden almacenar en una sola GPU.

Un ejemplo práctico de paralelismo de modelos
Los modelos de aprendizaje profundo de hoy en día son inherentemente grandes en términos del número de parámetros internos; esto requiere recursos informáticos escalables para almacenar y calcular los parámetros del modelo durante las fases de entrenamiento e inferencia en la tubería de ML. Por ejemplo, GPT-3 tiene 175 mil millones de parámetros y requiere 800GB de espacio de memoria, y otros modelos fundamentales, como LLaMA, creado por Meta, tienen parámetros que van desde 7 mil millones hasta 70 mil millones.
Estos modelos requieren recursos informáticos significativos durante la fase de entrenamiento. El paralelismo de modelos ofrece un método para entrenar partes del modelo en diferentes recursos informáticos, donde cada recurso entrena el modelo en un mini-lote de los datos de entrenamiento y calcula los gradientes para su parte asignada del modelo original.
Ventajas y desventajas del paralelismo de modelos
Implementar el paralelismo de modelos dentro de las tuberías de ML conlleva desafíos únicos.
- Existe un requisito de comunicación constante entre las máquinas que contienen partes del modelo inicial, ya que la salida de una parte del modelo se utiliza como entrada para otra.
- Además, comprender qué parte del modelo dividir en segmentos requiere una comprensión profunda y experiencia con modelos de aprendizaje profundo complejos y, en la mayoría de los casos, con el modelo en particular.
- Una ventaja clave es el uso eficiente de los recursos informáticos para manejar y entrenar modelos grandes.
Aprendizaje federado
¿Qué es la arquitectura de aprendizaje federado?
El aprendizaje federado es un enfoque de aprendizaje distribuido que intenta permitir avances innovadores posibles mediante el aprendizaje automático, al tiempo que se considera la perspectiva en evolución de la privacidad y los datos sensibles.
Un método relativamente nuevo, el aprendizaje federado descentraliza los procesos de entrenamiento del modelo en dispositivos o máquinas para que los datos no tengan que salir de la máquina. En su lugar, solo se transfieren a un servidor central las actualizaciones de los parámetros internos del modelo, que se entrenan en una copia del modelo utilizando datos específicos del usuario almacenados en el dispositivo. Este servidor central acumula todas las actualizaciones de otros dispositivos locales y aplica los cambios a un modelo que se encuentra en el servidor centralizado.
Un ejemplo práctico de arquitectura de aprendizaje federado
Dentro del enfoque de aprendizaje distribuido mediante el aprendizaje federado, la privacidad y los datos del usuario se preservan, ya que nunca abandonan el dispositivo o la máquina del usuario donde se almacenan los datos. Este enfoque es un método estratégico de entrenamiento de modelos en las tuberías de ML donde la sensibilidad y el acceso a los datos son altamente prioritarios. Permite la funcionalidad de aprendizaje automático sin transmitir datos de usuario entre dispositivos o a sistemas centralizados como soluciones de almacenamiento en la nube.

Ventajas y desventajas de la arquitectura de aprendizaje federado
El aprendizaje federado guía a una organización hacia un futuro más favorable para los datos al garantizar la privacidad del usuario y preservar los datos. Sin embargo, también tiene limitaciones.
- El aprendizaje federado aún está en sus primeras etapas, lo que significa que hay un número limitado de herramientas y tecnologías disponibles para facilitar la implementación de procedimientos de aprendizaje federado eficientes.
- Adoptar el aprendizaje federado en una organización completamente madura con una tubería de ML estandarizada requiere un esfuerzo y una inversión significativos, ya que introduce un nuevo enfoque para el entrenamiento, implementación y evaluación de modelos que requiere una reestructuración completa de la infraestructura de ML existente.
- Además, el rendimiento general del modelo central depende de varios factores centrados en el usuario, como la calidad de los datos y la velocidad de transmisión.
Entrenamiento síncrono
¿Qué es la arquitectura de entrenamiento síncrono?
El entrenamiento síncrono es una estrategia de canalización de aprendizaje automático que se utiliza cuando los modelos de aprendizaje profundo complejos se dividen o distribuyen en diferentes recursos informáticos, y se requiere una mayor consistencia durante el proceso de entrenamiento.
En este contexto, el entrenamiento síncrono implica un esfuerzo coordinado entre todas las unidades computacionales independientes, llamadas ‘workers’. Cada worker tiene una partición del modelo y actualiza sus parámetros utilizando su parte de los datos distribuidos de manera uniforme.
La característica clave del entrenamiento síncrono es que todos los workers operan en sincronía, lo que significa que cada worker debe completar la fase de entrenamiento antes de que cualquiera de ellos pueda pasar a la siguiente operación o paso de entrenamiento.

Un ejemplo real de arquitectura de entrenamiento síncrono
El entrenamiento síncrono es relevante para escenarios o casos de uso donde se necesita una distribución uniforme de los datos de entrenamiento en los recursos informáticos, una capacidad computacional uniforme en todos los recursos y una comunicación de baja latencia entre estos recursos independientes.
Ventajas y desventajas de la arquitectura de entrenamiento síncrono
- Las ventajas del entrenamiento síncrono son la consistencia, la uniformidad, la mejora de la precisión y la simplicidad.
- Todos los workers concluyen sus fases de entrenamiento antes de pasar al siguiente paso, lo que mantiene la consistencia en los parámetros del modelo de todas las unidades.
- En comparación con los métodos asíncronos, el entrenamiento síncrono a menudo logra resultados superiores, ya que la operación sincronizada y uniforme de los workers reduce la variación en las actualizaciones de los parámetros en cada paso.
- Una desventaja importante es la duración de la fase de entrenamiento en el entrenamiento síncrono.
- El entrenamiento síncrono puede presentar problemas de eficiencia temporal, ya que requiere la finalización de las tareas por parte de todos los workers antes de pasar al siguiente paso.
- Esto podría introducir ineficiencias, especialmente en sistemas con recursos informáticos heterogéneos.
Arquitectura del servidor de parámetros
¿Qué es la arquitectura del servidor de parámetros?
La arquitectura del servidor de parámetros está diseñada para abordar problemas de aprendizaje automático distribuido como las interdependencias de los workers, la complejidad en la implementación de estrategias, la consistencia y la sincronización.
Esta arquitectura se basa en las relaciones de servidor-cliente, donde los nodos cliente, llamados ‘workers’, se asignan tareas específicas como manejar datos, gestionar particiones del modelo y ejecutar operaciones definidas.
Por otro lado, el nodo servidor desempeña un papel central en la gestión y agregación de los parámetros del modelo actualizados, y también es responsable de comunicar estas actualizaciones a los nodos cliente.
Un ejemplo real de arquitectura de servidor de parámetros
En el contexto de los sistemas de aprendizaje automático distribuido, la arquitectura del servidor de parámetros se utiliza para facilitar el aprendizaje eficiente y coordinado. El nodo servidor en esta arquitectura garantiza la consistencia de los parámetros del modelo en todo el sistema distribuido, lo que la convierte en una opción viable para manejar tareas de aprendizaje automático a gran escala que requieren una gestión cuidadosa de los parámetros del modelo en múltiples nodos o workers.

Ventajas y desventajas de la arquitectura del servidor de parámetros
- La arquitectura del servidor de parámetros facilita un alto nivel de organización en las canalizaciones y flujos de trabajo de aprendizaje automático, principalmente debido a las responsabilidades distintas y definidas de los servidores y los nodos cliente.
- Esta distinción clara simplifica la operación, agiliza la resolución de problemas y optimiza la gestión de la canalización.
- Centralizar el mantenimiento y la consistencia de los parámetros del modelo en el nodo servidor garantiza la transmisión de las actualizaciones más recientes a todos los nodos cliente o workers, lo que refuerza el rendimiento y la confiabilidad de la salida del modelo.
Sin embargo, este enfoque arquitectónico también tiene sus desventajas.
- Una desventaja significativa es su vulnerabilidad a una falla total del sistema, debido a su dependencia del nodo servidor.
- En consecuencia, si el nodo servidor experimenta algún mal funcionamiento, podría potencialmente paralizar todo el sistema, resaltando el riesgo inherente de puntos únicos de falla en esta arquitectura.
Arquitectura Ring-AllReduce
¿Qué es la arquitectura Ring-AllReduce?
La arquitectura Ring-AllReduce es una arquitectura de entrenamiento de aprendizaje automático distribuido utilizada en las canalizaciones de aprendizaje automático modernas. Proporciona un método para administrar el cálculo del gradiente y las actualizaciones de los parámetros del modelo realizadas mediante retropropagación en modelos de aprendizaje automático complejos y grandes que se entrenan en conjuntos de datos extensos. En esta arquitectura, cada nodo worker recibe una copia de los parámetros completos del modelo y un subconjunto de los datos de entrenamiento.
Los trabajadores calculan de forma independiente sus gradientes durante la propagación hacia atrás en su propia partición de los datos de entrenamiento. Se aplica una estructura en forma de anillo para asegurar que cada trabajador en un dispositivo tenga un modelo con parámetros que incluyan las actualizaciones de gradientes realizadas por todos los demás trabajadores independientes.
Esto se logra pasando la suma de los gradientes de un trabajador al siguiente en el anillo, quien luego agrega su propio gradiente calculado a la suma y la pasa al siguiente trabajador. Este proceso se repite hasta que todos los trabajadores tengan la suma completa de los gradientes agregados de todos los trabajadores en el anillo.

Un ejemplo real de arquitectura de anillo-allreduce
La arquitectura de anillo-allreduce ha demostrado ser fundamental en varias aplicaciones del mundo real que involucran entrenamiento distribuido de aprendizaje automático, especialmente en escenarios que requieren el manejo de conjuntos de datos extensos. Por ejemplo, empresas tecnológicas líderes como Facebook y Google han integrado con éxito esta arquitectura en sus canalizaciones de aprendizaje automático.
El equipo de Investigación de IA de Facebook (FAIR) utiliza la arquitectura de anillo-allreduce para el aprendizaje profundo distribuido, lo que ayuda a mejorar la eficiencia de entrenamiento de sus modelos y manejar de manera efectiva conjuntos de datos extensos y complejos. Google también incorpora esta arquitectura en su marco de aprendizaje automático TensorFlow, lo que permite un entrenamiento multi-nodo eficiente de modelos de aprendizaje profundo.
Ventajas y desventajas de la arquitectura de anillo-allreduce
- La ventaja de la arquitectura de anillo-allreduce es que es una estrategia eficiente para gestionar tareas distribuidas de aprendizaje automático, especialmente cuando se trabaja con grandes conjuntos de datos.
- Permite el paralelismo de datos efectivo al garantizar la utilización óptima de los recursos computacionales. Cada nodo trabajador tiene una copia completa del modelo y es responsable de entrenar en su subconjunto de datos.
- Otra ventaja de Ring-AllReduce es que permite la agregación de actualizaciones de parámetros del modelo en varios dispositivos. Mientras que cada trabajador entrena con un subconjunto de los datos, también se beneficia de las actualizaciones de gradientes calculadas por otros trabajadores.
- Este enfoque acelera la fase de entrenamiento del modelo y mejora la escalabilidad de la canalización de aprendizaje automático, permitiendo aumentar el número de modelos a medida que aumenta la demanda.
Conclusión
Este artículo cubrió varios aspectos, incluida la arquitectura de la canalización, consideraciones de diseño, prácticas estándar en grandes corporaciones tecnológicas, patrones comunes y componentes típicos de las canalizaciones de aprendizaje automático.
También presentamos herramientas, metodologías y software esenciales para construir y mantener canalizaciones de aprendizaje automático, junto con las mejores prácticas. Proporcionamos descripciones generales ilustradas de arquitectura y patrones de diseño como la arquitectura de líder único, los grafos acíclicos dirigidos y el patrón Foreach.
Además, examinamos diversas estrategias de distribución que ofrecen soluciones únicas a problemas de aprendizaje automático distribuido, incluidos el paralelismo de datos, el paralelismo de modelos, el aprendizaje federado, el entrenamiento síncrono y la arquitectura de servidor de parámetros.
Para los profesionales de aprendizaje automático que se centran en la longevidad de su carrera, es crucial reconocer cómo debe funcionar una canalización de aprendizaje automático y cómo puede escalar y adaptarse al tiempo que mantiene una infraestructura fácil de solucionar problemas. Espero que este artículo le haya brindado la claridad necesaria sobre este tema.
Referencias
- Netflix Tech Blog: Meson Workflow Orchestration for Netflix Recommendations
- Netflix. (18 de enero de 2022). Meson workflow orchestration for Netflix recommendations. [En línea]. Recuperado de https://netflixtechblog.com/meson-workflow-orchestration-for-netflix-recommendations-fc932625c1d9
- Facebook Engineering: fSDP: A Fast and Scalable Distributed Parallel Programming Framework
- Facebook. (15 de julio de 2021). fSDP: A Fast and Scalable Distributed Parallel Programming Framework. [En línea]. Recuperado de https://engineering.fb.com/2021/07/15/open-source/fsdp/