Una versión instruida de GPT-J utilizando el conjunto de datos de Stanford Alpaca

En NLP Cloud queríamos ver si GPT-J podía afinarse como modelo de instrucciones para comprender correctamente las instrucciones humanas en lenguaje natural, sin utilizar aprendizaje de pocos disparos. Otros intentos han dado resultados interesantes en la comunidad de código abierto, como Flan-T5, BloomZ o Stanford Alpaca, así que quisimos hacer lo mismo con GPT-J utilizando el conjunto de datos de Alpaca. ¡Los resultados son muy buenos!

Stanford Alpaca

Aprendizaje en pocos pasos VS Instrucciones en lenguaje natural

Los modelos generativos de IA no son buenos para entender las peticiones humanas, por defecto.

Para que estos modelos de generación de texto entiendan lo que usted quiere, la mejor solución es utilizar el aprendizaje de pocos disparos. Hemos elaborado una guía especial sobre el aprendizaje de pocos disparos puede encontrarlo aquí. GPT-J es un buen ejemplo de un modelo muy capaz que sólo funciona correctamente con un aprendizaje de pocos disparos.

Aunque construir estos ejemplos no suele llevar demasiado tiempo, sigue siendo muy confuso para los recién llegados que quieren utilizar correctamente estos modelos de IA. Es mucho más fácil preguntar las cosas de forma natural, como se haría con un humano.

Por ejemplo, supongamos que desea corregir faltas de ortografía con GPT-J. Este es un ejemplo del prompt que tiene que utilizar:

I love goin to the beach.
Correction: I love going to the beach.
###
Let me hav it!
Correction: Let me have it!
###
It have too many drawbacks.
Correction: It has too many drawbacks.
###
I do not wan to go
Correction:

Como puede ver, no es complejo, pero tampoco sencillo. Si afina adecuadamente GPT-J, se puede convertir en un modelo de "instrucción", lo que significa que ahora puede preguntar lo siguiente:

Correct spelling and grammar from the following text.
I do not wan to go

Y devolvería lo siguiente:

I do not want to go.

Mucho mejor, ¿no? ¿Cómo podemos conseguirlo?

Stanford Alpaca

Stanford Alpaca ha sido lanzado hace un par de días. Se trata de una versión afinada del modelo Llama, desarrollado por Facebook. Más información sobre este proyecto aquí.

Básicamente, el equipo de Stanford Alpaca ha conseguido crear un modelo de instrucciones de última generación ajustando Llama a un conjunto de datos bastante pequeño (52.000 ejemplos) compuesto por instrucciones humanas. Lo interesante es que generaron este conjunto de datos mediante programación utilizando un modelo de lenguaje mayor (GPT-3). Puede descargar el conjunto de datos aquí.

En NLP Cloud intentamos ajustar GPT-J utilizando este conjunto de datos, ¡y obtuvimos resultados sorprendentemente buenos!

Instruir GPT-J

El nuevo modelo Instruct GPT-J que hemos creado está ahora en el Hugging Face Hub para que puedas utilizarlo fácilmente: haga clic aquí para ver el modelo.

A continuación te mostramos cómo puedes utilizar el modelo, utilizando los transformadores de caras abrazables:

from transformers import pipeline
import torch

generator = pipeline(model="nlpcloud/instruct-gpt-j-fp16", torch_dtype=torch.float16, device=0)

prompt = "Correct spelling and grammar from the following text.\nI do not wan to go\n"

print(generator(prompt))

Aquí tienes algunas sugerencias que puedes probar:

Write a short story about space.\n

Generate a C++ program that sorts a list of integers in ascending order.\n

Paraphrase the following text.\nAfter a war lasting 20 years, following the decision taken first by President Trump and then by President Biden to withdraw American troops, Kabul, the capital of Afghanistan, fell within a few hours to the Taliban, without resistance.\n

Summarize the following text.\nFor all its whizz-bang caper-gone-wrong energy, and for all its subsequent emotional troughs, this week’s Succession finale might have been the most important in its entire run. Because, unless I am very much wrong, Succession – a show about people trying to forcefully mount a succession – just had its succession. And now everything has to change. The episode ended with Logan Roy defying his children by selling Waystar Royco to idiosyncratic Swedish tech bro Lukas Matsson. It’s an unexpected twist, like if King Lear contained a weird new beat where Lear hands the British crown to Jack Dorsey for a laugh, but it sets up a bold new future for the show. What will happen in season four? Here are some theories. Season three of Succession picked up seconds after season two ended. It was a smart move, showing the immediate swirl of confusion that followed Kendall Roy’s decision to undo his father, and something similar could happen here. This week’s episode ended with three of the Roy siblings heartbroken and angry at their father’s grand betrayal. Perhaps season four could pick up at that precise moment, and show their efforts to reorganise their rebellion against him. This is something that Succession undoubtedly does very well – for the most part, its greatest moments have been those heart-thumping scenes where Kendall scraps for support to unseat his dad – and Jesse Armstrong has more than enough dramatic clout to centre the entire season around the battle to stop the Matsson deal dead in its tracks.\n

Tenga en cuenta que, debido a la forma en que se afinó este modelo, siempre debe utilizar nuevas líneas al final de sus instrucciones.

Requisitos de hardware

Este modelo es una versión fp16 de nuestro modelo ajustado, que funciona muy bien en una GPU con 16 GB de VRAM como una NVIDIA Tesla T4.

No notamos ninguna diferencia entre las versiones fp32 y fp16 en términos de calidad.

Conclusión

GPT-J ya era un modelo muy bueno, y ahora es aún mejor cuando se utiliza como modelo de instrucción.

Gracias a esta técnica, cualquiera puede convertir su modelo generativo de IA en un modelo de instrucción.

Si tiene alguna pregunta o comentario al respecto, no dude en ponerse en contacto con nosotros..

François
Científico de datos en NLP Cloud