Una versione avanzata di GPT-J che utilizza il dataset di Stanford Alpaca

In NLP Cloud volevamo vedere se GPT-J potesse essere perfezionato come modello di istruzioni per comprendere correttamente le istruzioni umane in linguaggio naturale, senza utilizzare l'apprendimento a pochi colpi. Altri tentativi hanno dato risultati interessanti nella comunità open-source, come Flan-T5, BloomZ o Stanford Alpaca, quindi abbiamo voluto fare lo stesso con GPT-J utilizzando il dataset di Alpaca. I risultati sono molto buoni!

Alpaca di Stanford

Apprendimento a pochi colpi VS istruzioni in linguaggio naturale

I modelli di intelligenza artificiale generativa non sono in grado di comprendere le richieste umane, per impostazione predefinita.

Per far sì che questi modelli di generazione del testo capiscano ciò che si vuole, la soluzione migliore è utilizzare l'apprendimento a pochi colpi. Abbiamo realizzato una guida speciale sull'apprendimento a pochi scatti è possibile trovarlo qui. GPT-J è un buon esempio di un modello molto capace che funziona correttamente solo con un apprendimento a pochi colpi.

Anche se la costruzione di questi esempi di solito non richiede molto tempo, è comunque molto confusa per i principianti che vogliono usare correttamente questi modelli di intelligenza artificiale. È molto più facile chiedere le cose in modo naturale, come si farebbe con un umano.

Ad esempio, supponiamo di voler correggere gli errori di ortografia con GPT-J. Ecco un esempio di prompt da utilizzare:

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:

Come si può vedere, non si tratta di un'operazione complessa, ma nemmeno semplice. Se si mette a punto correttamente GPT-J, è possibile trasformarlo in un modello "istruttivo", il che significa che ora è possibile chiedere quanto segue:

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

E restituisce quanto segue:

I do not want to go.

Molto meglio, non è vero? Come possiamo ottenere questo risultato?

Alpaca di Stanford

Stanford Alpaca è stato rilasciato un paio di giorni fa. Si tratta di una versione perfezionata del modello Llama, sviluppato da Facebook. Per saperne di più su questo progetto, visitate il sito.

In pratica, il team di Stanford Alpaca è riuscito a ottenere un modello di istruzioni allo stato dell'arte mettendo a punto Llama su un set di dati piuttosto piccolo (52k esempi) composto da istruzioni umane. La cosa interessante è che hanno generato questo set di dati in modo programmatico utilizzando un modello di linguaggio più grande (GPT-3). È possibile scaricare il set di dati qui.

In NLP Cloud abbiamo provato a mettere a punto GPT-J utilizzando questo set di dati e abbiamo ottenuto risultati sorprendentemente buoni!

Istruire GPT-J

Il nuovo modello Instruct GPT-J che abbiamo creato è ora sull'Hugging Face Hub, in modo che possiate utilizzarlo facilmente: clicca qui per vedere il modello.

Ecco come si può utilizzare il modello, utilizzando i trasformatori per il viso abbracciato:

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

Ecco alcuni suggerimenti che potete provare:

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

Si noti che, a causa del modo in cui questo modello è stato messo a punto, è necessario utilizzare sempre nuove righe alla fine delle istruzioni.

Requisiti hardware

Questo modello è una versione fp16 del nostro modello ottimizzato, che funziona molto bene su una GPU con 16 GB di VRAM come una NVIDIA Tesla T4.

Non abbiamo notato alcuna differenza tra le versioni fp32 e fp16 in termini di qualità.

Conclusione

Il GPT-J era già un ottimo modello e ora lo è ancora di più se usato come modello istruttivo.

Grazie a questa tecnica, chiunque può trasformare il suo modello generativo AI in un modello istruttivo!

Se avete domande o commenti su quanto sopra, non esitate a contattarci!.

François
Scienziato dei dati presso NLP Cloud