Cada día, se publican cientos de nuevos LLMs (Large Language models), mcuhos en HuggingFace el mayor repositorio abierto (consulta HFCommunity para algunas estadísticas). La mayoría de ellos (probablemente alrededor del 99%) no se crean desde cero, sino a partir de LLMs preexistentes que se modifican, mejoran o refinan para dominios o tareas específicas. Como ejemplo, este LLM (hfl/llama-3-chinese-8b) es una versión ajustada del conocido modelo Llama (meta-llama/Meta-Llama-3-8B), donde tomaron Llama y lo entrenaron con 120 GB adicionales de corpus de texto chino para mejorar su calidad en la comprensión y generación de texto en chino.
A finales de 2023, empezamos a ver combinaciones de LLMs encabezando las tablas de clasificación. Existen múltiples enfoques para combinar LLMs con el fin de capturar y combinar sus conocimientos o habilidades, o simplemente crear LLMs “más inteligentes”, según varios puntos de vista.
Para facilitar la creación de estas combinaciones de LLMs, hemos creado una herramienta no-code basada en el concepto de Línea de Productos de Software (SPL) para definir (¡y entrenar!) combinaciones de LLMs sin necesidad de conocimientos de programación. Nuestra herramienta viene con un Modelo de Características (Feature model) configurable, donde puedes definir las características que deseas para tu nuevo modelo de ML y a partir de qué otros modelos quieres crear más un generador capaz de tomar esa configuración y producir el modelo combinado para ti, por ejemplo, utilizando un enfoque de Mezcla de Expertos (Mixture of Experts).
Este herramienta se presentará en la conferencia ACM SPLC 2024 (enlace DOI). Antes de que se celebre la conferencia, puedes leer la versión preprint aquí o el resumen de sus características más principales a continuación. O juega con ella directamente. Creemos que este trabajo puede ser también un buen ejemplo de como técnicas existentes en ingeniería de software pueden ser útiles en aspectos más fundamentales de Inteligencia Artificial.
Combinación de Modelos de Machine Learning: Estado del Arte
Existen múltiples técnicas para la combinación de modelos de Machine Learning. Aquí mencionaremos algunas de las alternativas más populares para la fusión de LLMs (ya que nuestra herramienta actualmente se centra en combinar LLMs). La principal ventaja de la fusión de modelos, en comparación con el entrenamiento desde cero, son los escasos requisitos de hardware necesarios para realizarla.
Fusión de Modelos
La fusión o combinación de modelos consiste en combinar 2 o más LLMs pre-entrenados en uno solo unificado. Esto se puede hacer de diferentes maneras, como:
- Promedio ponderado lineal: Simplemente tomar el valor de los pesos de los LLMs y agregarlos.
- Vectores Aritméticos de Tareas (ver ilustración más abajo)
- TIES
- DARE
- Model Stock
- Enfoques de Optimización Evolutiva
Una búsqueda rápida en HuggingFace revela la gran cantidad de LLMs populares que son en realidad combinaciones de otros. El Open LLM Leaderboard se puede explorar para descubrir los mejores LLMs del momento.
Mezcla de Expertos (Mixture of Experts)
Esta metodología se presentó en 1991 como un novedoso procedimiento de aprendizaje supervisado para sistemas compuestos por muchas redes neuronales independientes (ver el artículo original aquí). Estas redes se entrenarían para resolver tareas específicas y luego se combinarían con una red de control especial encargada de decidir, para una entrada dada, qué redes (es decir, expertos) generarían la salida. Esta Mezcla de Expertos (MoE) ha recibido recientemente mucha nueva atención gracias a su aplicación a modelos de Transformers (la arquitectura fundamental de la mayoría de los LLMs de vanguardia actuales).
Algunos de los LLMs MoE más populares son los producidos por MistralAI (por ejemplo, Mixtral-8x7B). Ten en cuenta que los MoEs como Mixtral se entrenan desde cero (y eventualmente, cada componente se convierte en un experto en un dominio o tarea específica), lo que difiere de los MoEs creados combinando un conjunto de LLMs pre-entrenados (¡y estos son los que nuestra herramienta nos permite definir, que se pueden crear con requisitos de hardware mínimos!)
Uso de Líneas de producto : Un Enfoque Dirigido por Modelos
Proponemos un enfoque de Línea de Productos de Software (Software Product Lines, o SPL, en inglés) para el campo emergente de combinaciones de LLMs. Más específicamente, introducimos un modelo de características para caracterizar las dimensiones y aspectos de variabilidad de este dominio, junto con un enfoque de generación de código capaz de transformar una configuración de características en un modelo fusionado real. Nos basamos en Mergekit para la fase de generación y proporcionamos nuestro propio soporte de herramientas para todo el proceso.
Creemos que este tipo de aproximación low-code / no-code aceleraría la creación de modelos de Machine Learning que pudieran integrarse en las nuevas generaciones de sistemas inteligentes. Sin embargo, aún carecemos de enfoques de modelado, herramientas low-code y lenguajes específicos de dominio (DSLs) para desarrollar este tipo de sistemas de una manera reutilizable y mantenible. De hecho, la complejidad del desarrollo software está aumentando con tantos nuevos tipos de componentes inteligentes que podrían enriquecer sus funcionalides. Los modelos de características, que capturan todos los productos posibles en una SPL, pueden utilizarse para definir familias de software de sistemas inteligentes, pero el uso de SPLs para caracterizar sistemas de ML, como las composiciones de LLM, sigue siendo poco explorado.
Una propuesta de Modelo de Características para combinaciones de modelos de machine learning
Un Feature Model (FM) tiene como objetivo capturar todas las posibles combinaciones de LLMs. Como no existe una única notación de modelado de características, para expresar nuestro complejo FM, combinamos varias sintaxis para expresar modularidad y composicionalidad en FMs, atributos de características que consisten en nombre, dominio y valor, y características basadas en cardinalidad.
Distinguimos 2 tipos de composiciones: Fusiones y MoEs, ya que cada uno tiene propiedades de configuración específicas. Y, de hecho, el Modelo de Características está fuertemente influenciado por Mergekit, ya que actualmente es la única herramienta distinguida para la fusión de modelos. Sin embargo, eso no es un factor determinante, y esta primera definición podría evolucionar con el tiempo.
Nuestra herramienta (disponible en GitHub) permite al usuario crear sus propias configuraciones de características a partir del modelo de características.
De una Configuración de un FM a un LLM Compuesto: El Paso de Generación
Después de ser evaluada, la configuración se pasa como entrada al generador de Mergekit. El proceso consiste en leer la configuración de las características seleccionadas y utilizar su contenido de manera apropiada para generar y ejecutar los scripts de Mergekit . Para generar el nuevo LLM, los LLMs base definidos en la configuración de características se descargan localmente desde HuggingFace.
La duración del proceso de generación variará dependiendo de los recursos disponibles, la técnica de fusión utilizada y los tamaños de los LLM. Una vez que el proceso finaliza, el LLM generado se almacenará en un directorio local, conteniendo todos los pesos del modelo y otros archivos de configuración. En este punto, el LLM está listo para ser utilizado y, opcionalmente, desplegado en un entorno en la nube. Nuestra herramienta viene con una implementación para subir automáticamente los LLMs generados a HuggingFace y ponerlos a disposición de todo el mundo.
Conclusiones y Trabajo Futuro
Hemos presentado una herramienta no-code para la definición de combinaciones de LLMs basada en Líneas de Productos de Software, con el objetivo de capturar similitudes y variabilidad entre las posibles combinaciones y generar todas las configuraciones válidas basadas en un Modelo de Características bien definido. Cubrimos las metodologías de Fusión de Modelos y Mezcla de Expertos para generar las configuraciones de LLMs compuestos.
Como trabajo futuro, planeamos mejorar el proceso de evaluación de las configuraciones de características (identificamos que algunas restricciones que no están integradas en el modelo de características conducen a configuraciones no válidas, debido a la “libertad” que nuestra sintaxis da con la cardinalidad de características y atributos). También se implementarán extensiones al generador de código para reutilizar a nuevas librerías de fusión de modelso cuando sea necesario. Finalmente, también planeamos cubrir otros dominios como modelos de visión compuestos o la composición de conjuntos de datos para un entrenamiento óptimo del modelo, teniendo en cuenta aspectos de Responsible IA (ej. mirando la procedencia y el proceso de recopilación de los datos)
Últimos comentarios