Skip to main content

Command Palette

Search for a command to run...

StableVicuna: Explicación y Potencial

Published
6 min read
StableVicuna: Explicación y Potencial

Esta semana, la famosa y querida empresa Stability.ai, anunció el lanzamiento de un nuevo LLM con RLHF y que además es "open source". La empresa detrás de Stable Difussion quiere entrar al mundo de los LLM y en este post veremos cual es su ficha de entrada y cual es el potencial de esta, que han llamado StableVicuna.

¿Por qué StableVicuna?

Desde el lanzamiento de LLaMA, el LLM "open source" de Meta, han aparecido una serie de modelos que se basan en la arquitectura de este último, adoptando nombres derivados de la llama (sí, el animal 🦙), con nombres como Alpaca o Vicuna.

Este útlimo (Vicuna) fue un modelo que, en su paper, indicaba que su rendimiento era 90% el de ChatGPT. Esto es sumamente importante porque recordemos que ChatGPT, y su modelos GPT-X que son el motor intelectual del chat, son de propiedad privada (nadie tiene acceso al código ni a los datos). Vicuna es un modelo "open source", y que un modelo opensource afirme que tiene rendimiento de un 90% de un modelo de una empresa privada es realmente grande.

"Open Source" con comillas

Desde la publicación del paper de LlaMA, se ha generado una controversia muy grande respecto al nivel de foco que le dieron en que su modelo era "open source", cuando en realidad solamente es Open Access.

El modelo base de todos los modelos chicos que estamos viendo ultimamente, que intentan competir con OpenAI, tiene una limitante tremenda: Su uso comercial. Verán, ya que Meta publicó su modelo LlaMA con una licencia de uso académico solamente, no se pueden tener proyectos interesantes de uso comercial para nuevas alternativas de IA.

Dejo planteada la inquietud para el que me esté leyendo: Imagínense un mundo donde Linus Torvalds haya decidido publicar el kernel de Linux con exclusivo uso académico. Literalmente no podríamos hacer operaciones CUDA para entrenar estos modelos.

Datasets y RLHF

StableVicuna es un Vicuna fine tuned en diferentes datasets. En definitiva, utilizaron LLaMA y la entrenaron en los siguientes datasets:

  • OpenAssistant Conversations Dataset (OASST1): El dataset de OpenAssitant, el proyecto opensource liderado por el genio Yannic Kilcher.

  • GPT4All Prompt Generations: El dataset que contiene los resultados de muchos prompts hechos por gpt-3.5-turbo.

  • Alpaca: El dataset que contiene los resultados de muchos prompts hechos por text-davinci-003.

Es claro ver que parte de los datos utilizados para entrenar a este modelo fueron generados a partir de GPT de OpenAI, e incluso utilizan los weights del modelo de Meta, por lo mismo no pueden tener uso comercial 😔

Además, para el RLHF utilizaron los siguientes datasets:

  • OpenAssistant Conversations Dataset (OASST1)

  • Anthropic HH-RLHF (un dataset con preferencias sobre la utilidad y posibles daños de los modelos de IA)

  • Stanford Human Preferences (SHP): Este es demasiado variado, recomiendo que lo investiguen.

Recuerden que el RLHF (Reinforcement Learning from Human Feedback) es lo que hace característicos a estos modelos, porque es un tipo de entrenamiento en el que la participación humana se utiliza indirectamente para fine tunear un modelo.

Resultados

Source: Stability.ai

En los resultados publicados, vemos muchos modelos ya conocidos por la comunidad, como GPT4All, Koala, Vicuna de 13B, Alpaca de 13B.

StableVicuna parece tener un buen desempeño en prácticamente todas las métricas. Hay par de metricas en las cuales no rinde muy bien, como TruthfulQA (https://aclanthology.org/2022.acl-long.229.pdf) que mide como imitan las mentiras humanas, no tiene tan buen desempeño como Alpaca, o la misma Vicuna.

Para probar este modelo, dejo el link del Colab público (Disclaimer ⚠️: Yo no hice el Colab). Es importante considerar que se necesita una GPU potente, incluso para el modelo de 8bits.

https://colab.research.google.com/drive/1Kvf3qF1TXE-jR-N5G9z1XxVf5z-ljFt2?usp=sharing

Probando el modelo

Recuerden que es un modelo basado en LlaMA de Meta, por lo que se pueden utilizar los ya disponibles LlamaTokenizer y LlamaForCausalLM. Lo bonito de la comunidad es que ya hay gente que pasó por las partes tediosas, y el usuario TheBloke de HF ya hizo la conversión de los weights del modelo, asique solo queda importar.

Luego de que tengas todo importado, puedes hacer un pipeline para text-generation. Puedes cambiar el max_length o la temperature para tener un modelo más creativo

Hay un par de funciones para limpiar los prompts, y aqui viene un punto muy importante respecto a los prompts (me pasó intentando hacer tareas MRKL y React pero luego me dí cuenta). ESTOS MODELOS NO ACEPTAN CUALQUIER PROMPT.

En el caso de StableVicuna, al igual que Vicuna, al igual que Alpaca, al igual que LlaMA, el prompt tiene que tener este formato:

### Human: <Question>
### Assitant:

Al momento de probar el modelo para tareas que son de conocimiento general, tenemos unas respuestas que son buenas dentro de todo, pero el tiempo de ejecución es casi el minuto y medio, y en otras sobre los 2 minutos.

Para tareas de creación, ideación, redacción, etc. El modelo parece rendir bien. Esto depende demasiado en los datos con los cuales fue entrenado el modelo (Koala rinde mucho mejor en redacción de escritos porque fue entrenado en datasets más enfocados en eso).

Además, en el Colab se agregan ejemplos de resolución de problemas con pensamiento paso a paso, que vienen de la epoca de FLAN de Google. Lo increible es que el modelo tiene la capacidad de razonar y hacer calculos matemáticos simples, aveces con resultados correctos y aveces con incorrectos.

Otra cosa interesante es el manejo temporal del modelo, por ejemplo al preguntarle por la posibilidad de que diferentes políticos y personajes históricos se pudieran juntar, entrega respuestas coherentes.

Independiente de esta capacidad, los resultados de StableVicuna dependen mucho de la calidad del prompt y el orden en que se plantea la pregunta, lo podemos ver por ejemplo al preguntarle por el hijo de Marco Aurelio, el emperador romano. Al plantear la pregunta de dos maneras diferentes, el modelo entrega resultados categóricamente distintos, uno correcto y otro incorrecto:

Opinión

Creo que StableVicuna es un intento por demostrar que tan capaces son en Stability.ai de tener un modelo sin uso comercial, para que al momento de que tengan su propio modelo para uso comercial, replicando LlaMA (esto pasará sí o sí), pueda ser igual o mejor que el que está limitado comercialmente y competir con OpenAI de una manera open source (o no? 🤔).

Es un modelo que vale la pena seguir, puede tener mejoras considerables en el tiempo sobre todo tomando en consideracion lo que Stability ha logrado antes.

Agradecimientos

Gracias especiales a Sam Witteveen por su excelente calidad de contenido y por disponibilizar el Colab donde se pueden probar estos modelos.

Gracias a Stability.ai por publicar un blog sobre su nuevo modelo.