Une version instruite de GPT-J utilisant l'ensemble de données de Stanford Alpaca

Chez NLP Cloud, nous avons voulu voir si GPT-J pouvait être affiné en tant que modèle d'instruction afin de comprendre correctement les instructions humaines en langage naturel, sans utiliser l'apprentissage à quelques coups. D'autres tentatives ont donné des résultats intéressants dans la communauté open-source, comme Flan-T5, BloomZ, ou Stanford Alpaca, nous avons donc voulu faire la même chose avec GPT-J en utilisant le jeu de données d'Alpaca. Les résultats sont très bons !

Stanford Alpaca

Apprentissage en quelques clics et instructions en langage naturel

Les modèles d'IA générative ne sont pas capables de comprendre les demandes humaines, par défaut.

Pour que ces modèles de génération de texte comprennent ce que vous voulez, la meilleure solution est d'utiliser l'apprentissage à court terme. Nous avons créé un guide spécial sur l'apprentissage à court terme. Vous pouvez le trouver ici. GPT-J est un bon exemple de modèle très performant qui ne fonctionne correctement qu'avec un apprentissage à quelques coups.

Même si la construction de ces exemples ne prend généralement pas trop de temps, elle reste très déroutante pour les nouveaux venus qui souhaitent utiliser correctement ces modèles d'IA. Il est beaucoup plus facile de poser des questions de manière naturelle, comme vous le feriez avec un être humain.

Supposons par exemple que vous souhaitiez corriger des fautes d'orthographe avec GPT-J. Voici un exemple d'invite à utiliser :

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:

Comme vous pouvez le constater, ce n'est pas complexe, mais pas simple non plus. Si vous affinez correctement GPT-J, il peut être transformé en modèle d'"instruction", ce qui signifie que vous pouvez maintenant poser les questions suivantes :

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

Et il renverrait le résultat suivant :

I do not want to go.

C'est beaucoup mieux, non ? Comment y parvenir ?

Stanford Alpaca

Stanford Alpaca a été lancé il y a quelques jours. Il s'agit d'une version affinée du modèle Llama, développé par Facebook. Pour en savoir plus sur ce projet, cliquez ici.

En fait, l'équipe de Stanford Alpaca est parvenue à créer un modèle d'instruction de pointe en affinant Llama sur un ensemble de données relativement restreint (52 000 exemples) composé d'instructions humaines. Ce qui est intéressant, c'est qu'ils ont généré cet ensemble de données de manière programmatique en utilisant un modèle de langage plus important (GPT-3). Vous pouvez télécharger l'ensemble des données ici.

À NLP Cloud, nous avons essayé d'affiner GPT-J en utilisant ce jeu de données, et nous avons obtenu des résultats étonnamment bons !

Instruire GPT-J

Le nouveau modèle Instruct GPT-J que nous avons créé est maintenant sur le Hugging Face Hub pour que vous puissiez l'utiliser facilement : cliquez ici pour voir le modèle.

Voici comment vous pouvez utiliser le modèle, en utilisant les Hugging Face Transformers :

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))

Voici quelques suggestions que vous pouvez essayer :

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

Notez qu'en raison de la mise au point de ce modèle, vous devez toujours utiliser de nouvelles lignes à la fin de vos instructions.

Exigences en matière de matériel

Ce modèle est une version fp16 de notre modèle ajusté, qui fonctionne très bien sur un GPU avec 16GB de VRAM comme un NVIDIA Tesla T4.

Nous n'avons pas remarqué de différence entre les versions fp32 et fp16 en termes de qualité.

Conclusion

Le GPT-J était déjà un très bon modèle, et il est maintenant encore meilleur lorsqu'il est utilisé comme modèle d'instruction.

Grâce à cette technique, n'importe qui peut désormais transformer son modèle génératif d'IA en un modèle d'instruction !

Si vous avez des questions ou des commentaires sur ce qui précède, n'hésitez pas à nous contacter !.

François
Data Scientist chez NLP Cloud