2023, año de los LLMs abiertos

2023, el año de los LLMs abiertos

2023 ha visto un aumento del interés público en los Modelos de Lenguaje Amplio (LLMs, por sus siglas en inglés), y ahora que la mayoría de las personas tienen una idea de qué son y qué pueden hacer, los debates públicos sobre código abierto versus código cerrado también han llegado a una amplia audiencia. En Hugging Face, seguimos con gran interés los modelos abiertos, ya que permiten que la investigación sea reproducible, empoderan a la comunidad para participar en el desarrollo de modelos de IA, permiten un escrutinio más fácil de los sesgos y limitaciones de los modelos, y reducen el impacto general en el medio ambiente de nuestro campo al favorecer la reutilización de puntos de control (entre otros muchos beneficios).

¡Así que hagamos una retrospectiva del año en LLMs abiertos!

Para mantener este documento manejable en cuanto a longitud, no analizaremos modelos de código.

Receta para un Modelo de Lenguaje Amplio preentrenado

En primer lugar, ¿cómo se obtiene un Modelo de Lenguaje Amplio? (¡Si ya lo sabes, puedes pasar rápidamente esta sección!)

La arquitectura del modelo (su código) describe su implementación específica y su forma matemática: es una lista de todos sus parámetros, así como de cómo interactúan con las entradas. En este momento, la mayoría de los LLM de alto rendimiento son variaciones de la arquitectura de transformador “solo decodificador” (más detalles en el artículo original sobre transformadores). El conjunto de datos de entrenamiento contiene todos los ejemplos y documentos en los que se entrena el modelo (es decir, se aprenden los parámetros), por lo tanto, los patrones específicos que se aprenden. La mayoría de las veces, estos documentos contienen texto, ya sea en lenguaje natural (por ejemplo, francés, inglés, chino), un lenguaje de programación (por ejemplo, Python, C) o cualquier tipo de datos estructurados expresables como texto (por ejemplo, tablas en formato markdown o LaTeX, ecuaciones, …). Un tokenizador define cómo se convierte el texto del conjunto de datos de entrenamiento en números (ya que un modelo es una función matemática y, por lo tanto, necesita números como entradas). La tokenización se realiza mediante la transformación del texto en subunidades llamadas tokens (que pueden ser palabras, subpalabras o caracteres, dependiendo de los métodos de tokenización). El tamaño del vocabulario del tokenizador indica cuántos tokens diferentes conoce, normalmente entre 32.000 y 200.000. El tamaño de un conjunto de datos se mide a menudo como el número de tokens que contiene una vez dividido en una secuencia de estas unidades individuales y “atómicas”, y en la actualidad oscila entre varios cientos de miles de millones y varios billones de tokens. Los hiperparámetros de entrenamiento determinan cómo se entrena el modelo. ¿Cuánto deben cambiar los parámetros para adaptarse a cada nuevo ejemplo? ¿Con qué rapidez debe actualizarse el modelo?

Una vez seleccionados estos parámetros, solo necesitas 1) una gran cantidad de potencia informática para entrenar el modelo y 2) personas competentes y amables para ejecutar y supervisar el entrenamiento. El propio entrenamiento consistirá en instanciar la arquitectura (crear las matrices en el hardware utilizado para el entrenamiento) y ejecutar el algoritmo de entrenamiento en el conjunto de datos de entrenamiento con los hiperparámetros mencionados anteriormente. El resultado es un conjunto de pesos del modelo. Estos son los parámetros del modelo después del aprendizaje y a los que se refiere la mayoría de las personas al discutir el acceso a un modelo preentrenado abierto. Estos pesos luego se pueden usar para inferencia, es decir, para predecir nuevas entradas, por ejemplo, para generar texto.

Los LLM preentrenados también se pueden especializar o adaptar para una tarea específica después del preentrenamiento, especialmente cuando los pesos se publican de forma abierta. Luego se utilizan como punto de partida para casos de uso y aplicaciones a través de un proceso llamado “ajuste fino”. El ajuste fino implica aplicar pasos de entrenamiento adicionales al modelo en un conjunto de datos diferente, a menudo más especializado y más pequeño, para optimizarlo para una aplicación específica. Aunque este paso tiene un costo en términos de potencia informática necesaria, generalmente es mucho menos costoso que entrenar un modelo desde cero, tanto financieramente como en términos ambientales. Esta es una de las razones por las que los modelos preentrenados de código abierto de alta calidad son muy interesantes, ya que pueden ser utilizados libremente y ampliados por la comunidad incluso cuando los profesionales solo tienen acceso a un presupuesto informático limitado.

2022 – De una carrera por el tamaño a una carrera por los datos

¿Qué modelos abiertos estaban disponibles para la comunidad antes de 2023?

Hasta principios de 2022, la tendencia en el aprendizaje automático era que cuanto más grande era un modelo (es decir, cuantos más parámetros tenía), mejor era su rendimiento. En particular, parecía que los modelos que superaban umbrales de tamaño específicos adquirían habilidades emergentes y se regían por leyes de escalamiento. Las familias de modelos preentrenados de código abierto publicados en 2022 seguían en su mayoría este paradigma.

  1. BLOOM (BigScience Large Open-science Open-access Multilingual Language Model) BLOOM es una familia de modelos lanzados por BigScience, un esfuerzo colaborativo que incluye a 1000 investigadores de 60 países y 250 instituciones, coordinado por Hugging Face, en colaboración con las organizaciones francesas GENCI y IDRIS. Estos modelos utilizan transformers solo decodificadores, con modificaciones menores (normalización posterior a la incrustación,[^1] y el uso de incrustaciones posicionales ALiBi [^2]). El modelo más grande de esta familia es un modelo de 176B de parámetros, entrenado en 350B de tokens de datos multilingües en 46 idiomas humanos y 13 idiomas de programación. La mayoría de los datos de entrenamiento se publicaron, y se publicaron detalles de sus fuentes, curación y procesamiento. Es el modelo masivo multilingüe de código abierto más grande hasta la fecha.

  2. OPT (Open Pre-trained Transformer) La familia de modelos OPT fue lanzada por Meta. Estos modelos utilizan una arquitectura de transformers solo decodificadores, siguiendo los trucos del artículo GPT-3 (inicialización específica de pesos, pre-normalización), con algunos cambios en el mecanismo de atención (capas de atención densas y locales alternadas). El modelo más grande de esta familia es un modelo de 175B de parámetros entrenado en 180B de tokens de datos principalmente de fuentes públicas (libros, datos sociales a través de Reddit, noticias, Wikipedia y otras diversas fuentes de Internet). Esta familia de modelos tuvo un rendimiento comparable a los modelos GPT-3, utilizando una optimización de codificación para hacerlo menos intensivo en cómputo.

  3. GLM-130B (General Language Model) GLM-130B fue lanzado por la Universidad de Tsinghua y Zhipu.AI. Utiliza una arquitectura completa de transformer con algunos cambios (normalización posterior a la capa con DeepNorm, incrustaciones rotatorias). El modelo de 130B de parámetros fue entrenado en 400B de tokens de datos de Internet en inglés y chino (The Pile, Wudao Corpora y otros corpus chinos). También tuvo un rendimiento comparable a los modelos GPT-3.

  4. Modelos LLMS más pequeños o más especializados Algunos modelos de código abierto más pequeños también se lanzaron, principalmente con fines de investigación: Meta lanzó la serie Galactica, LLM de hasta 120B parámetros, pre-entrenado en 106B de tokens de literatura científica, y EleutherAI lanzó el modelo GPT-NeoX-20B, un modelo de transformer solo decodificador completamente de código abierto (arquitectura, pesos, datos incluidos) entrenado en 500B de tokens (utilizando RoPE y algunos cambios en atención e inicialización), para proporcionar un artefacto completo para investigaciones científicas.

¡Estos modelos enormes eran emocionantes pero también muy costosos de ejecutar! Al realizar inferencias (calcular predicciones a partir de un modelo), el modelo debe cargarse en memoria, pero un modelo de 100B parámetros típicamente requerirá 220GB de memoria para cargarse (explicamos este proceso a continuación), lo cual es muy grande y no accesible para la mayoría de las organizaciones y profesionales.

Sin embargo, en marzo de 2022, se publicó un nuevo artículo de DeepMind que investigaba cuál es la proporción óptima de tokens por parámetros del modelo para un presupuesto informático dado. En otras palabras, si solo tienes una cantidad X de dinero para gastar en el entrenamiento del modelo, ¿cuáles deberían ser los tamaños respectivos del modelo y los datos? Los autores descubrieron que, en general, para el presupuesto informático promedio gastado en LLMs, los modelos deberían ser más pequeños pero entrenados con considerablemente más datos. Su propio modelo, Chinchilla (no de código abierto), era un modelo de 70B de parámetros (un tercio del tamaño de los modelos anteriores) pero entrenado en 1.4T de tokens de datos (entre 3 y 4 veces más datos). Tuvo un rendimiento similar o mejor que sus contrapartes más grandes, tanto de código abierto como cerrado.

Este cambio de paradigma, aunque probablemente ya conocido en los laboratorios cerrados, tomó por sorpresa a la comunidad científica abierta.

2023, un año de lanzamientos abiertos

El surgimiento de los pequeños modelos de lenguaje grandes

🌊 En 2023, surgió una ola de transformadores estilo decodificador, con nuevos modelos preentrenados lanzados cada mes, y pronto cada semana o incluso cada día: LLaMA (de Meta) en febrero, Pythia (de Eleuther AI) en abril, MPT (de MosaicML) en mayo, X-GEN (de Salesforce) y Falcon (de TIIUAE) en junio, Llama 2 (de Meta) en julio. Qwen (de Alibaba) y Mistral (de Mistral.AI) en septiembre, Yi (de 01-ai) en noviembre, DeciLM (de Deci), Phi-2 y SOLAR (de Upstage) en diciembre. Todos estos lanzamientos a) incluyeron pesos del modelo (bajo diferentes licencias abiertas) y b) tuvieron un buen rendimiento para modelos de tamaño pequeño (entre 3B y 70B de parámetros), por lo que fueron adoptados instantáneamente por la comunidad. Casi todos estos modelos utilizan la arquitectura del transformador decodificador, con varias modificaciones (ALiBi o RoPE, pre-normalización RMS, SwiGLU), así como algunos cambios en las funciones de atención (Flash-Attention, GQA, ventanas deslizantes) y diferentes implementaciones de código base para optimizar la velocidad de entrenamiento o inferencia. Es probable que estas modificaciones afecten el rendimiento y la velocidad de entrenamiento en cierta medida; sin embargo, dado que todas las arquitecturas se han lanzado públicamente con los pesos, las diferencias principales que quedan son los datos de entrenamiento y la licencia de los modelos.

🦙,🔮 La primera familia de modelos en esta serie fue la familia LLaMA, lanzada por Meta AI. El objetivo explícito de los investigadores fue entrenar un conjunto de modelos de varios tamaños con los mejores rendimientos posibles para un presupuesto informático dado. Por primera vez, el equipo de investigación decidió considerar no solo el presupuesto de entrenamiento, sino también el costo de inferencia (para un objetivo de rendimiento dado, ¿cuánto cuesta ejecutar la inferencia con el modelo?). En esta perspectiva, decidieron entrenar modelos más pequeños en aún más datos y durante más pasos de lo que se solía hacer, lo que resultó en un rendimiento más alto con un tamaño de modelo más pequeño (el compromiso es la eficiencia del cálculo de entrenamiento). El modelo más grande en la familia Llama 1 es un modelo de 65B de parámetros entrenado con 1,4T de tokens, mientras que los modelos más pequeños (resp. 6 y 13B de parámetros) se entrenaron con 1T de tokens. El pequeño modelo de 13B LLaMA superó a GPT-3 en la mayoría de los puntos de referencia, y el modelo LLaMA más grande fue el estado del arte cuando se lanzó. Los pesos se lanzaron con una licencia no comercial, lo que limitó su adopción por parte de la comunidad. Los modelos Pythia fueron lanzados por el laboratorio sin fines de lucro de código abierto Eleuther AI, y eran un conjunto de LLMs de diferentes tamaños, entrenados con datos completamente públicos, provistos para ayudar a los investigadores a comprender los diferentes pasos de entrenamiento de LLM.

📂,🦅 Los modelos MPT, que salieron unos meses después, lanzados por MosaicML, tuvieron un rendimiento similar pero con una licencia que permitía su uso comercial, y los detalles de su combinación de entrenamiento. El primer modelo MPT fue un modelo de 7B, seguido de versiones de 30B en junio, ambos entrenados con 1T de tokens en inglés y código (utilizando datos de C4, CommonCrawl, The Stack, S2ORC). Los modelos MPT fueron rápidamente seguidos por los modelos de 7 y 30B de la serie Falcon, lanzados por TIIUAE y entrenados con 1 a 1,5T de tokens en inglés y código (RefinedWeb, Project Gutenberg, Reddit, StackOverflow, Github, arXiv, Wikipedia, entre otras fuentes): más adelante en el año, también se lanzó un modelo gigantesco de 180B. Los modelos Falcon, datos y proceso de entrenamiento se detallaron en un informe técnico y un artículo de investigación posterior.

Donde los modelos anteriores compartían públicamente sus datos, a partir de entonces, las versiones siguientes dieron muy poca información sobre lo que se utilizó para entrenar los modelos y sus esfuerzos no pueden ser reproducidos; sin embargo, proporcionan puntos de partida para la comunidad a través de los pesos liberados.

✖️,🦙🦙 A principios del verano llegaron los modelos X-Gen de Salesforce, modelos de 7 mil millones de parámetros entrenados en 1.5 billones de tokens de “lenguaje natural y código”, en varios pasos, siguiendo un sistema de programación de datos (no todos los datos se introducen al mismo tiempo en el modelo). X-Gen quedó un poco oscurecido por la nueva y muy visible familia LLaMA-2 de Meta, una gama de modelos de 7 a 70 mil millones de parámetros entrenados en 2 billones de tokens “de fuentes públicamente disponibles”, con una licencia comunitaria permisiva y un proceso extenso de ajuste fino basado en preferencias humanas (RLHF), llamado procedimiento de alineación.

🍃,🔟,☀️ Un par de meses después, fue lanzado el primer modelo de la startup recién creada Mistral, llamado Mistral-7B, entrenado en un número no revelado de tokens extraídos de datos de la Web abierta. El final de 2023 estuvo ocupado con lanzamientos de modelos, con un segundo modelo más grande de Mistral (Mixtral 8x7B), un primer y impresionante modelo de Deci.AI llamado DeciLM, así como una fusión más grande de modelos de upstage, SOLAR, también entrenados en una cantidad de datos y fuentes no reveladas. Todos estos modelos tuvieron un aumento constante en las clasificaciones y en las referencias abiertas.

🇨🇳 Al mismo tiempo, un evento notable a finales de 2023 fue el aumento de rendimiento y el número de modelos entrenados en China y lanzados abiertamente. Se lanzaron dos series de modelos bilingües inglés-chino: Qwen, de Alibaba, modelos de 7 a 70 mil millones de parámetros entrenados en 2.4 billones de tokens, y Yi, de 01-AI, modelos de 6 a 34 mil millones de parámetros entrenados en 3 billones de tokens. El rendimiento de estos modelos fue un paso adelante con respecto a los modelos anteriores tanto en tablas de clasificación abiertas como el Open LLM leaderboard, como en algunos de los benchmarks más difíciles como Skill-Mix. Otro fuerte competidor a finales de 2023 fue el modelo de codificación DeepSeek de DeepSeek AI, entrenado desde cero en 2 billones de tokens, con una composición del 87% de código y 13% de lenguaje natural en inglés y chino (principalmente un modelo de código).

Modelos de diálogo en todas partes

En comparación con 2022, casi todos los modelos preentrenados lanzados en 2023 vinieron con una versión preentrenada y una versión ajustada para diálogos, utilizando uno de varios enfoques existentes. Si bien los enfoques para adaptar modelos a la configuración de chat se desarrollaron en 2022 y antes, la adopción generalizada de estas técnicas realmente despegó en 2023, enfatizando el creciente uso de estos modelos de chat por parte del público en general, así como la creciente evaluación manual de los modelos al chatear con ellos (“evaluación de vibra”). Detallamos los enfoques más conocidos para adaptar modelos preentrenados para chat aquí, ¡pero existen muchas variaciones!

💬 Ajuste fino basado en chat es una variante del ajuste fino supervisado, donde los datos anotados son datos de chat (datos de diálogo de múltiples turnos, similar a lo que encontrarías en las redes sociales) en los que ajustas tu modelo. Usas la misma técnica que al entrenar tu modelo: para los transformadores de decodificador, enseñas a tu modelo a predecir las siguientes palabras una por una (llamado enfoque autoregresivo). 🗣️ Ajuste fino de instrucciones (IFT) sigue el mismo enfoque pero con conjuntos de datos de instrucciones, que contienen una colección de promociones similares a consultas más respuestas (con entrada adicional opcional si es necesario). Estos conjuntos de datos enseñan a los modelos cómo seguir una instrucción y pueden ser generados por humanos o por LLM. El uso de conjuntos de datos sintéticos de salida de modelos a gran escala (conjuntos de datos que se componen de generaciones de modelos, por ejemplo, generaciones de GPT-4 ya sea a partir de instrucciones o de interacciones entre usuarios y dicho modelo) es una de las formas de lograr el ajuste fino de instrucciones y chat. A menudo se le llama destilación ya que implica tomar el conocimiento de un modelo de alto rendimiento para entrenar o ajustar fino un modelo más pequeño.

Ambos métodos son relativamente fáciles de implementar: solo necesitas encontrar o generar conjuntos de datos relacionados y luego ajustar fino tu modelo utilizando la misma técnica que al entrenar. El año pasado se publicaron una gran cantidad de conjuntos de datos instructivos, lo que mejoró el rendimiento del modelo en configuraciones similares a diálogos. Para obtener más información sobre este tema, puedes leer una introducción en un blog aquí. Sin embargo, los modelos, aunque mejores, todavía no pueden igualar lo que los humanos esperan.

🏅 Aprendizaje por refuerzo a partir de retroalimentación humana (ARHR) es un enfoque específico que tiene como objetivo alinear lo que el modelo predice con lo que a los humanos les gusta más (dependiendo de criterios específicos). Era (a principios del año) una nueva técnica para el ajuste fino. A partir de un estímulo dado, el modelo genera varias respuestas posibles; los humanos clasifican estas respuestas; las clasificaciones se utilizan para entrenar lo que se llama un modelo de preferencia (que aprende a dar una puntuación que refleja la preferencia humana por las respuestas); el modelo de preferencia luego se utiliza para ajustar fino el modelo de lenguaje utilizando aprendizaje por refuerzo. Para obtener información más detallada, consulta esta publicación de blog, el artículo original sobre ARHR o el artículo de Anthropic sobre ARHR. Es un método costoso (anotar/clasificar + entrenar un nuevo modelo + ajuste fino es bastante caro) que se ha utilizado principalmente para alinear modelos con objetivos de seguridad. Se ha desarrollado una variación menos costosa de este método que utiliza un LLM de alta calidad para clasificar las salidas del modelo en lugar de los humanos: aprendizaje por refuerzo a partir de retroalimentación de IA (ARPDR).

👍 Optimización directa de preferencias (ODP) es otra variación de ARHR, pero no requiere el entrenamiento y uso de un modelo de preferencia separado: el método requiere el mismo conjunto de datos de clasificación humano o de IA, pero utiliza estos datos para actualizar el modelo directamente al observar la diferencia entre su política original (forma de predecir) y la óptima (que predeciría las respuestas mejor clasificadas). En otras palabras, el modelo alineado también es el modelo de preferencia, lo que hace que el procedimiento de optimización sea mucho más sencillo al tiempo que brinda lo que parece ser un rendimiento final equivalente.

Entonces, volviendo a nuestra ola de modelos pequeños de pesos abiertos de (en su mayoría) empresas privadas, muchos de ellos fueron lanzados con contrapartes ajustadas: MPT-7B también vino con una versión de instrucciones y una versión de chat, se lanzaron versiones ajustadas de Falcon y los modelos XGen a finales de año, Llama-2, Qwen y Yi se lanzaron con versiones de chat y DeciLM con una versión de instrucciones. El lanzamiento de Llama-2 fue particularmente notable debido al fuerte enfoque en la seguridad, tanto en los modelos de preentrenamiento como en los de ajuste fino.

¿Qué hay de la comunidad?

Mientras los modelos de chat y los modelos ajustados a las instrucciones solían ser proporcionados directamente con los lanzamientos de modelos nuevos, la comunidad y los investigadores no los daban por sentados, y una comunidad amplia y saludable de afinadores de modelos floreció en los terrenos fructíferos proporcionados por estos modelos base. Por lo general, creaban nuevos conjuntos de datos y ajustaban los modelos en ellos para mostrar un buen rendimiento y calidad de los datos recién lanzados.

Al comienzo de 2023, ya se habían lanzado algunos conjuntos de datos para el ajuste fino de instrucciones/chats. Por ejemplo, para las preferencias humanas, el conjunto de datos WebGPT de OpenAI, el conjunto de datos HH-RLHF de Anthropic y Summarize de OpenAI fueron pioneros en esta dirección. Ejemplos de conjuntos de datos de instrucciones son el conjunto de datos Public Pool of Prompts de BigScience, FLAN 1 y 2 de Google, Natural Instructions de AllenAI, Self Instruct, un marco para generar instrucciones automáticas por parte de investigadores de diferentes afiliaciones, SuperNatural instructions, un referente de instrucciones creado por expertos a veces utilizado como datos de ajuste fino, Unnatural instructions, un conjunto de datos de instrucciones generado automáticamente por la Universidad de Tel Aviv y Meta, entre otros.

❄️ Invierno 2022/2023: En enero de este año, se lanzó el corpus de instrucciones de chat de GPT humano (HC3) por parte de investigadores chinos de varias instituciones, y contenía respuestas de humanos versus respuestas del modelo a varias preguntas. Marzo estuvo lleno de lanzamientos: Stanford abrió el modelo Alpaca, que fue el primer modelo de seguimiento de instrucciones LLaMA (7B), y el conjunto de datos asociado, 52K instrucciones generadas con un LLM. LAION (un laboratorio de código abierto sin fines de lucro) lanzó el conjunto de datos Open Instruction Generalist (OIG), 43M de instrucciones creadas tanto con técnica de aumento de datos como recopiladas de otras fuentes de datos preexistentes. El mismo mes, LMSYS org (en UC Berkeley) lanzó Vicuna, también un ajuste fino de LLaMA (13B), esta vez en datos de chat: conversaciones entre usuarios y ChatGPT, compartidas públicamente por los propios usuarios en ShareGPT. También se lanzó el conjunto de datos Guanaco, una extensión del conjunto de datos Alpaca (que contiene 500K entradas adicionales en más idiomas), así como el ajuste fino asociado de LLaMA-7B.

🌱 Primavera: En abril, BAIR (laboratorio de investigación de IA de Berkeley) lanzó Koala, un modelo de LLaMA ajustado a conversaciones, utilizando varios de los conjuntos de datos anteriores (Alpaca, HH-RLHF, WebGPT, ShareGPT), y DataBricks lanzó el conjunto de datos Dolly, un gran esfuerzo humano de 15K instrucciones generadas manualmente, así como el modelo asociado, un ajuste fino de Pythia. En mayo, la Universidad de Tsinghua lanzó UltraChat, un conjunto de datos de 1.5M de conversaciones que contienen instrucciones, y UltraLLaMA, un ajuste fino en dicho conjunto de datos. Luego, Microsoft lanzó el conjunto de datos/framework GPT4-LLM para generar instrucciones con GPT4, y en junio, Microsoft Research compartió un nuevo método, Orca, para construir conjuntos de datos de instrucciones utilizando el razonamiento paso a paso de modelos más grandes (que explican su razonamiento paso a paso): pronto fue reproducido por la comunidad (notablemente Alignementlab.ai), quienes crearon conjuntos de datos de Open Orca, varios millones de entradas, luego utilizados para ajustar fino un número de modelos (Llama, Mistral, …). En mayo y junio, Camel-AI lanzó varios conjuntos de datos de instrucciones o de chat sobre diferentes temas (más de 20K ejemplos en cada dominio, física, biología, química, …) obtenidos con GPT4. En junio, también se lanzó el marco Airoboros para ajustar fino modelos utilizando datos generados por el modelo (siguiendo el enfoque de autoinstrucción), junto con varios conjuntos de datos de instrucciones.

🌻Verano: En agosto, se lanzó UltraLM (un ajuste fino de chat de alto rendimiento de LLaMA) por parte de OpenBMB, una organización china sin fines de lucro, y en septiembre lanzaron el conjunto de datos de preferencia asociado UltraFeedback, un conjunto de datos de retroalimentación de entradas comparadas por GPT4 (con anotaciones). A lo largo del verano, NousResearch, un colectivo, lanzó varios ajustes finos (notablemente las colecciones Hermes y Capybara) basados en varios conjuntos de datos de instrucción privados y públicos. En septiembre, un equipo de estudiantes de la Universidad de Tsinghua lanzó OpenChat, un ajuste fino de LLaMA utilizando una nueva estrategia de ajuste fino de RL.

🍂 Otoño: En octubre, Hugging Face lanzó Zephyr, un ajuste fino de Mistral utilizando DPO y AIF en UltraChat y UltraFeedback, y los miembros de la comunidad lanzaron OpenHermes 2, un ajuste fino de Mistral-7B en 900K entradas, ya sea de la web o generadas con Axolotl. Lmsys lanzó LMSYS-Chat-1M, conversaciones de usuarios reales con 25 LLMs. En noviembre, OpenBuddy lanzó OpenBuddy-Zephyr, un diálogo de múltiples pasos ajustado fino de Zephyr. En noviembre, NVIDIA lanzó HelpSteer, un conjunto de datos de ajuste fino de alineación que proporciona indicaciones, respuestas de modelos asociados y calificaciones de dichas respuestas en varios criterios, mientras que Microsoft Research lanzó el modelo Orca-2, un ajuste fino de Llama 2 en un nuevo conjunto de datos de razonamiento sintético. En diciembre, Berkeley lanzó Starling, un ajuste fino de RLAIF de Open-Chat, y el conjunto de datos asociado, Nectar, 200K entradas de datos de comparación.

Como podemos ver, el desarrollo de todo este año se basa tanto en la creación de nuevos conjuntos de datos a través del uso de LLMs preentrenados de alta calidad, como en todos los modelos abiertos lanzados por la comunidad, ¡haciendo que el campo avance a pasos agigantados! Y si ves uno de estos nombres en un nombre de modelo, podrás tener una idea de dónde proviene 🤗

También se lanzaron algunos conjuntos de datos más especializados (como MetaMath o los conjuntos de datos de ajuste fino de problemas matemáticos MathInstruct, Evol-Instruct, instrucciones de matemáticas y código, CodeAlpaca y CodeCapybara) pero no los cubriremos en detalle aquí. Aunque también se han utilizado para mejorar el rendimiento del modelo en tareas específicas. También puedes ver el conjunto de datos de instrucciones impresionante para una recopilación de otros conjuntos de datos relevantes.

Democratizando el acceso

Fusionando: Personalización extrema

En un estilo típico de código abierto, uno de los hitos de la comunidad es la fusión de modelos/datos. Con cada fusión/compromiso, puede ser más difícil rastrear tanto los datos utilizados (ya que varios conjuntos de datos lanzados son compilaciones de otros conjuntos de datos) como la historia de los modelos, ya que los modelos altamente eficientes son versiones ajustadas finas de versiones ajustadas finas de modelos similares (ver el “árbol de modelos secundarios” de Mistral aquí). En este resumen, todavía no hemos tenido tiempo para hablar de esta increíble técnica, así que dediquemos un par de palabras finales a ella.

Pero, ¿qué significa fusionar un modelo?

La fusión de modelos es una forma de combinar los pesos de diferentes modelos en un solo modelo para (idealmente) combinar las fortalezas respectivas de cada modelo en un modelo único unificado. Existen algunas técnicas para hacer esto que se han extendido y publicado principalmente en foros de la comunidad, un caso impresionante de investigación completamente descentralizada que está ocurriendo en todo el mundo entre una comunidad de profesionales, investigadores y aficionados. Uno de los métodos más simples publicados consiste en promediar los parámetros de un conjunto de modelos que comparten una arquitectura común (ejemplo 1, ejemplo 2), pero existen combinaciones de parámetros más complejas, como determinar qué parámetros son los más influyentes en cada modelo para una tarea específica (promedio ponderado), o considerar la interferencia de parámetros entre modelos antes de seleccionar qué parámetros conservar al fusionarlos (fusión por lazos).

Estas técnicas permiten a cualquier persona generar fácilmente combinaciones de modelos y se facilitan especialmente por el hecho de que la mayoría de los modelos son variaciones de la misma arquitectura en la actualidad. Esa es la razón por la que algunos modelos presentados en el tablero de líderes LLM abierto tienen nombres como llama2-zephyr-orca-ultra. Este ejemplo en particular probablemente es una fusión de los modelos llama2 y zephyr, afinados en los conjuntos de datos orca y ultra. Por lo general, se pueden encontrar más detalles en la correspondiente tarjeta del modelo en el centro de aplicaciones Hugging Face.

PEFT: Personalización al alcance de tus dedos

A veces, es posible que desees una personalización más controlada, sin suficiente memoria para cargar un modelo completo en memoria para ajustarlo. ¿Sabías que no necesitas usar un modelo completo al ajustar?

Es posible que desees utilizar lo que se llama ajuste fino eficiente de parámetros (PEFT). Esta técnica primero congela los parámetros de tu modelo preentrenado de interés, luego agrega una serie de nuevos parámetros en la parte superior, llamados adaptadores. Lo que luego ajustas a tu tarea son solo los pesos del adaptador (livianos), considerablemente más pequeños que el modelo original. ¡Luego solo necesitas compartir tus pequeños pesos del adaptador (y el modelo base)! Aquí encontrarás una lista de enfoques interesantes para PEFT.

Cuantización: Modelos que se ejecutan en todas partes

Hemos visto que los modelos de rendimiento óptimo ahora vienen en todas las formas y tamaños… ¡pero incluso así, eso no significa que sean accesibles para todos! Un modelo con 30 mil millones de parámetros puede requerir más de 66 GB de RAM solo para cargarlo en memoria (ni siquiera usarlo) y no todos en la comunidad tienen el hardware necesario para hacerlo.

¡Ahí es donde entra en juego la cuantización! La cuantización es una técnica especial que reduce el tamaño de un modelo cambiando la precisión de sus parámetros.

¿Qué significa esto?

En una computadora, los números se almacenan con una precisión dada (como float32, float16, int8, y así sucesivamente). Una precisión indica tanto el tipo de número (si es un número de punto flotante o un entero) como la cantidad de memoria en la que se almacena el número: float32 almacena números de punto flotante en 32 bits. Para una explicación más detallada, consulta este enlace. Entonces, cuanto mayor sea la precisión, más memoria física ocupa un número, ya que se almacenará en más bits.

Por lo tanto, si reduces la precisión, reduces la memoria que cada parámetro del modelo ocupa en el almacenamiento, ¡lo que reduce el tamaño del modelo! Esto también significa que se reduce… la precisión real de los cálculos, lo que puede reducir el rendimiento del modelo. Sin embargo, descubrimos que en modelos más grandes, esta degradación del rendimiento es realmente muy limitada.

Para volver a nuestro ejemplo anterior, nuestro modelo de 30B parámetros en float16 requiere un poco menos de 66G de RAM, en 8bits solo requiere la mitad, es decir, 33G de RAM, y en 4bits llegamos incluso a la mitad de esto, alrededor de 16G de RAM, lo que lo hace considerablemente más accesible.

Hay muchas formas de pasar de una precisión a otra, existiendo muchos esquemas de “traducción” diferentes, cada uno con sus propios beneficios y desventajas. Enfoques populares incluyen bitsandbytes, GPTQ, y AWQ. Algunos usuarios, como TheBloke, incluso están convirtiendo modelos populares para hacerlos accesibles a la comunidad. Todos ellos son muy recientes y están en desarrollo, y esperamos ver aún más progreso en esto a medida que pase el tiempo.

¿Qué sigue?

¡El año aún no ha terminado! Y estos últimos meses días horas ya han traído su parte de sorpresas: ¿una nueva arquitectura finalmente superará al simple y eficiente Transformer?

Las nuevas versiones incluyen:

  • Una mezcla de expertos:
    • Mixtral, el modelo está compuesto por 8 submodelos (descodificadores transformadores) y, para cada entrada, un enrutador selecciona los 2 mejores submodelos y suma sus salidas.
  • Varios modelos de espacio de estado (modelos que mapean la entrada a la salida a través de un espacio latente y que pueden expresarse como una RNN o una CNN según las tareas):
    • Mamba, un modelo de espacio de estado con un mecanismo de selección agregado
    • Striped Hyena, un modelo de espacio de estado con convoluciones rápidas del núcleo

Aún es un poco pronto para decir si estos nuevos enfoques reemplazarán al Transformer, ¡pero los modelos de espacio de estado son muy prometedores!

Conclusiones

  • Este año ha visto un aumento de lanzamientos abiertos por parte de todo tipo de actores (grandes empresas, startups, laboratorios de investigación), lo que ha permitido a la comunidad experimentar y explorar a un ritmo nunca antes visto.
  • La apertura en el anuncio de modelos ha tenido altibajos, desde lanzamientos tempranos este año siendo muy abiertos (mezclas de conjuntos de datos, pesos, arquitecturas) hasta lanzamientos tardíos que no indican nada sobre sus datos de entrenamiento, por lo tanto, no reproducibles.
  • Los modelos abiertos han surgido de muchos lugares nuevos, incluyendo China, con varios nuevos actores posicionándose como fuertes contendientes en el juego de LLM.
  • Las posibilidades de personalización han alcanzado su punto máximo, con nuevas estrategias para el ajuste fino (RLHF, adaptadores, fusión), que apenas están comenzando.
  • ¡Tamaños de modelo más pequeños y mejoras en la cuantificación han hecho que los LLM sean realmente accesibles para muchas más personas!
  • También han aparecido nuevas arquitecturas, ¿reemplazarán finalmente al Transformer?

¡Eso es todo, amigos! ¡Espero que hayan disfrutado de la revisión de este año, hayan aprendido uno o dos cosas y sientan tanto entusiasmo como yo acerca de cuánto del progreso de la IA ahora depende del código abierto y el esfuerzo de la comunidad! 🤗

[^1]: La normalización posterior al incrustar es un truco para hacer que el aprendizaje sea más estable.[^2]: Las incrustaciones posicionales de ALiBi introducen una penalización cuando los tokens están demasiado separados en una secuencia y están conectados por el modelo (donde las incrustaciones posicionales normales solo almacenan información sobre el orden y la posición respectiva de los tokens en una secuencia).

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

OpenAI presenta Super Alignment Abriendo el camino para una IA segura y alineada

OpenAI Introducing Super Alignment development offers enormous promise for humanity. It has the ability to address so...

Inteligencia Artificial

Este boletín de inteligencia artificial es todo lo que necesitas #75

Esta semana fue testigo de la conclusión del drama en OpenAI con el regreso de Sam Altman y Greg Brockman a OpenAI y ...

Inteligencia Artificial

Investigadores de Microsoft y la Universidad Bautista de Hong Kong presentan WizardCoder Un Code Evol-Instruct Fine-Tuned Code LLM.

Los Modelos de Lenguaje Grandes (LLM, por sus siglas en inglés) han atraído recientemente mucho interés y han logrado...

Ciencia de Datos

LangChain Mejorando el rendimiento con la capacidad de memoria

Ya he publicado artículos sobre LangChain antes, presentando la biblioteca y todas sus capacidades. Ahora me gustaría...

Inteligencia Artificial

Los ingenieros están en una misión de encontrar fallas

Un algoritmo desarrollado por investigadores del Instituto de Tecnología de Massachusetts tiene como objetivo identif...

Inteligencia Artificial

Utilizando datos de física para enfocar la visión por computadora

Explorando formas de complementar los datos de visión por computadora convencionales con metadatos recopilados de sen...