Guida per principianti per creare i tuoi grandi modelli di lingua da zero

'Guida per principianti per creare modelli di lingua da zero'

Introduzione

Sia su Twitter che su Linkedin, incontro numerosi post su Large Language Models (LLM) ogni giorno. Forse mi sono chiesto perché ci sia una quantità così incredibile di ricerca e sviluppo dedicata a questi modelli affascinanti. Da ChatGPT a BARD, Falcon e molti altri, i loro nomi si susseguono, lasciandomi desideroso di scoprirne la vera natura. Come vengono creati questi modelli? Come costruire grandi modelli di linguaggio? Come hanno la capacità di rispondere praticamente a qualsiasi domanda gli venga posta? Queste domande brucianti sono rimaste nella mia mente, alimentando la mia curiosità. Questa curiosità insaziabile ha acceso un fuoco dentro di me, spingendomi ad immergermi a capofitto nel mondo dei LLM.

Unisciti a me in un entusiasmante viaggio mentre discuteremo dello stato dell’arte dei LLM. Insieme, sveleremo i segreti della loro evoluzione, comprenderemo le loro straordinarie capacità e faremo luce su come abbiano rivoluzionato il mondo dell’elaborazione del linguaggio.

Obiettivi di Apprendimento

  1. Conoscere i LLM e il loro stato dell’arte attuale.
  2. Comprendere i diversi LLM disponibili e gli approcci per addestrare questi LLM da zero.
  3. Esplorare le migliori pratiche per addestrare ed valutare i LLM.

Allacciate le cinture e iniziamo il nostro viaggio per padroneggiare i LLM.

Una Breve Storia dei Large Language Models

La storia dei Large Language Models risale agli anni ’60. Nel 1967, un professore al MIT costruì il primo programma di NLP mai realizzato, chiamato Eliza, per comprendere il linguaggio naturale. Utilizza tecniche di corrispondenza di modelli e sostituzione per comprendere e interagire con gli esseri umani. Successivamente, nel 1970, fu creato un altro programma di NLP dal team del MIT per comprendere e interagire con gli esseri umani, chiamato SHRDLU.

Nel 1988, è stata introdotta l’architettura RNN per catturare le informazioni di sequenza presenti nei dati testuali. Durante gli anni 2000, sono state condotte ricerche approfondite in NLP utilizzando le RNN. I modelli di linguaggio basati sulle RNN erano architetture all’avanguardia fino ad oggi. Tuttavia, le RNN potevano funzionare bene solo con frasi più brevi e non con frasi lunghe. Per questo motivo, nel 2013 è stata introdotta l’architettura LSTM. Durante questo periodo, sono emerse grandi evoluzioni nelle applicazioni basate su LSTM. Allo stesso tempo, è iniziata la ricerca anche sui meccanismi di attenzione.

C’erano due preoccupazioni principali riguardo alle LSTM. Le LSTM risolvevano il problema delle frasi lunghe solo in parte e non erano in grado di eccellere nel lavoro con frasi veramente lunghe. L’addestramento dei modelli LSTM non poteva essere parallelizzato. A causa di ciò, l’addestramento di questi modelli richiedeva più tempo.

Nel 2017, c’è stata una svolta nella ricerca di NLP attraverso l’articolo Attention Is All You Need. Questo articolo ha rivoluzionato l’intero panorama del NLP. I ricercatori hanno introdotto la nuova architettura nota come Transformers per superare le sfide delle LSTM. I Transformers sono essenzialmente i primi LLM sviluppati contenenti un enorme numero di parametri. I Transformers sono emersi come modelli all’avanguardia per i LLM. Ancora oggi, lo sviluppo dei LLM rimane influenzato dai transformers.

Negli ultimi cinque anni, sono state condotte ricerche significative per costruire LLM migliori rispetto ai transformers. La dimensione dei LLM è aumentata in modo esponenziale nel tempo. Gli esperimenti hanno dimostrato che aumentare la dimensione dei LLM e dei set di dati di addestramento ha migliorato la conoscenza dei LLM. Pertanto, sono stati introdotti LLM come BERT, GPT e le loro varianti come GPT-2, GPT-3, GPT 3.5 e XLNet con un aumento della dimensione dei parametri e dei set di dati di addestramento.

Nel 2022, c’è stata un’altra svolta nel NLP, ChatGPT. ChatGPT è un LLM ottimizzato per il dialogo in grado di rispondere a qualsiasi domanda tu voglia. In un paio di mesi, Google ha introdotto BARD come concorrente di ChatGPT.

Nell’ultimo anno, sono stati sviluppati centinaia di Large Language Models. Puoi trovare l’elenco dei LLM open source insieme al loro ranking di performance qui. Ad oggi, il LLM all’avanguardia è Falcon 40B Instruct.

Cosa sono i Large Language Models?

In parole semplici, i Large Language Models sono modelli di deep learning addestrati su enormi set di dati per comprendere le lingue umane. Il loro obiettivo principale è imparare e comprendere le lingue umane in modo preciso. I Large Language Models consentono alle macchine di interpretare le lingue proprio come noi, esseri umani, le interpretiamo.

I Grandi Modelli Linguistici apprendono i modelli e le relazioni tra le parole del linguaggio. Ad esempio, comprendono la struttura sintattica e semantica del linguaggio come grammatica, ordine delle parole e significato delle parole e delle frasi. Acquisiscono la capacità di comprendere l’intera lingua stessa.

Ma in che modo i modelli linguistici differiscono dai Grandi Modelli Linguistici?

I modelli linguistici e i Grandi Modelli Linguistici imparano e comprendono il linguaggio umano, ma la differenza principale è lo sviluppo di questi modelli.

I modelli linguistici sono generalmente modelli statistici sviluppati utilizzando HMM o modelli basati sulla probabilità, mentre i Grandi Modelli Linguistici sono modelli di deep learning con miliardi di parametri allenati su un dataset molto ampio.

Ma perché abbiamo bisogno di Grandi Modelli Linguistici in primo luogo?

Perché Grandi Modelli Linguistici?

La risposta a questa domanda è semplice. I GML sono modelli agnostici al compito. Letteralmente, questi modelli hanno la capacità di risolvere qualsiasi compito. Ad esempio, ChatGPT ne è un classico esempio. Ogni volta che chiedi qualcosa a ChatGPT, ti sorprende.

E un’altra caratteristica sorprendente di questi GML è che non è necessario sintonizzare effettivamente i modelli come qualsiasi altro modello preaddestrato per il tuo compito. Tutto ciò che devi fare è fornire un input al modello. Lui fa il lavoro per te. Pertanto, i GML forniscono soluzioni istantanee a qualsiasi problema su cui stai lavorando. Inoltre, è solo un modello per tutti i tuoi problemi e compiti. Pertanto, questi modelli sono noti come modelli fondamentali nell’NLP.

Diversi Tipi di GML

I GML possono essere ampiamente classificati in 2 tipi a seconda del loro compito:

  1. Continuazione del testo
  2. Dialogo ottimizzato

Continuazione del Testo

Questi GML sono addestrati per prevedere la sequenza successiva di parole nel testo di input. Il loro compito è continuare il testo.

Ad esempio, dato il testo “Come stai”, questi GML potrebbero completare la frase con “Come stai facendo?” o “Come stai? Sto bene.”

L’elenco dei GML che rientrano in questa categoria sono Transformers, BERT, XLNet, GPT e le sue varianti come GPT-2, GPT-3, GPT-4, ecc.

Ora, il problema con questi GML è che sono molto bravi a completare il testo piuttosto che a rispondere. A volte, ci aspettiamo una risposta invece di un completamento.

Come discusso in precedenza, dato “Come stai?” come input, il GML cerca di completare il testo con “facendo?” o “Sto bene.”. La risposta può essere una delle due: completamento o una risposta. Ecco perché sono stati introdotti i GML ottimizzati per il dialogo.

2. Dialogo Ottimizzato

Questi GML rispondono con una risposta anziché completarla. Dato l’input “Come stai?”, questi GML potrebbero rispondere con “Sto bene.” anziché completare la frase.

L’elenco dei GML ottimizzati per il dialogo include InstructGPT, ChatGPT, BARD, Falcon-40B-instruct, ecc.

Ora vedremo le sfide legate all’addestramento dei GML da zero.

Quali Sono le Sfide dell’Addestramento dei GML?

L’addestramento dei GML da zero è davvero impegnativo a causa di 2 fattori principali: infrastruttura e costo.

Infrastruttura

I GML vengono addestrati su un enorme corpus di testo che va almeno delle dimensioni di 1000 GB. I modelli utilizzati per l’addestramento su questi dataset sono molto grandi e contengono miliardi di parametri. Per addestrare modelli così grandi sul corpus di testo massiccio, è necessario configurare un’infrastruttura/hardware che supporti più GPU. Sai indovinare quanto tempo impiegherebbe ad addestrare GPT-3 – un modello con 175 miliardi di parametri – su una singola GPU NVIDIA Tesla V100?

Ci vorrebbero 355 anni per addestrare GPT-3 su una singola GPU NVIDIA Tesla V100.

Questo mostra chiaramente che l’addestramento di GML su una singola GPU non è affatto possibile. Richiede calcolo distribuito e parallelo con migliaia di GPU.

Solo per darti un’idea, ecco l’hardware utilizzato per addestrare i popolari GML-

  1. Falcon-40B è stato addestrato su 384 GPU A100 40GB, utilizzando una strategia di parallelismo 3D (TP=8, PP=4, DP=12) combinata con ZeRO.
  2. I ricercatori hanno calcolato che OpenAI avrebbe potuto addestrare GPT-3 in soli 34 giorni su 1.024 GPU A100.
  3. PaLM (540B, Google): sono stati utilizzati in totale 6144 chip TPU v4.

Costo

È molto evidente da quanto sopra che l’infrastruttura GPU è molto necessaria per addestrare LLM da zero. La creazione di un’infrastruttura di questa dimensione è molto costosa. Aziende e istituti di ricerca investono milioni di dollari per crearla e addestrare LLM da zero.

Si stima che GPT-3 abbia costato circa 4,6 milioni di dollari per essere addestrato da zero

In media, il modello a 7 miliardi di parametri costerebbe circa 25.000 dollari per essere addestrato da zero.

Ora vedremo come addestrare LLM da zero

Come si addestrano LLM da zero?

Il processo di addestramento delle LLM è diverso a seconda del tipo di LLM che si desidera creare, che sia un testo continuo o ottimizzato per il dialogo. Le prestazioni delle LLM dipendono principalmente da due fattori: il dataset e l’architettura del modello. Questi due sono i principali fattori trainanti delle prestazioni delle LLM.

Discuteremo ora i diversi passaggi coinvolti nell’addestramento delle LLM.

1. Continuazione del Testo

Il processo di addestramento delle LLM che continuano il testo è noto come pretraining delle LLM. Queste LLM vengono addestrate nell’apprendimento auto-supervisionato per prevedere la parola successiva nel testo. Vedremo esattamente i diversi passaggi coinvolti nell’addestramento delle LLM da zero.

a. Raccolta del Dataset

Il primo passo nell’addestramento delle LLM è raccogliere un corpus massivo di dati testuali. Il dataset gioca un ruolo molto significativo nelle prestazioni delle LLM. Recentemente, OpenChat è l’ultimo modello linguistico di grandi dimensioni ottimizzato per il dialogo, ispirato a LLaMA-13B. Raggiunge il 105,7% del punteggio di ChatGPT nella valutazione di Vicuna GPT-4. Sai qual è il motivo del suo successo? È un dataset di alta qualità. È stato raffinato solo su ~6K dati.

I dati di addestramento vengono creati raschiando internet, siti web, piattaforme di social media, fonti accademiche, ecc. Assicurati che i dati di addestramento siano il più diversi possibile.

Lavori recenti hanno dimostrato che un aumento della diversità del dataset di addestramento migliora la conoscenza generale cross-domain e la capacità di generalizzazione downstream per i modelli linguistici su larga scala

Cosa significa? Lascia che ti spieghi.

Potresti essere venuto/a a conoscenza dei titoli che dicono “ChatGPT ha fallito a JEE” o “ChatGPT non supera l’UPSC” e così via. Quali possono essere le possibili ragioni? La ragione sta nel fatto che mancava il necessario livello di intelligenza. Questo dipende molto dal dataset utilizzato per l’addestramento. Pertanto, la richiesta di dataset diversi continua ad aumentare poiché un dataset di alta qualità e cross-domain ha un impatto diretto sulla generalizzazione del modello su diverse attività.

Sblocca il potenziale delle LLM con dati di alta qualità!

In passato, Common Crawl era il dataset di riferimento per l’addestramento delle LLM. Common Crawl contiene dati grezzi delle pagine web, metadati estratti ed estrazioni di testo dal 2008. La dimensione del dataset è nell’ordine dei petabyte (1 petabyte = 1e6 GB). È stato dimostrato che i modelli linguistici di grandi dimensioni addestrati su questo dataset hanno mostrato risultati efficaci ma hanno avuto difficoltà a generalizzare su altre attività. Pertanto, è stato creato un nuovo dataset chiamato Pile, composto da 22 diversi dataset di alta qualità. È una combinazione di fonti di dati esistenti e nuovi dataset per un totale di 825 GB. Recentemente è stata rilasciata una versione raffinata del Common Crawl chiamata RefinedWeb Dataset. I dataset utilizzati per GPT-3 e GPT-4 non sono stati resi open-source al fine di mantenere un vantaggio competitivo sugli altri.

b. Preelaborazione del Dataset

Il passo successivo è preprocessare e pulire il dataset. Poiché il dataset viene estratto da diverse pagine web e fonti diverse, è abbastanza comune che il dataset possa contenere varie sfumature. Dobbiamo eliminare queste sfumature e preparare un dataset di alta qualità per l’addestramento del modello.

Le specifiche operazioni di preprocessing dipendono dal dataset con cui si sta lavorando. Alcune delle comuni operazioni di preprocessing includono la rimozione del codice HTML, la correzione degli errori di ortografia, l’eliminazione di dati tossici/sessisti, la conversione delle emoji nel loro equivalente testuale e la deduplicazione dei dati. La deduplicazione dei dati è una delle operazioni di preprocessing più significative durante l’addestramento delle LLM. La deduplicazione dei dati si riferisce al processo di rimozione dei contenuti duplicati dal corpus di addestramento.

È evidente che i dati di addestramento potrebbero contenere frasi duplicate o quasi identiche poiché sono raccolti da varie fonti di dati. Abbiamo bisogno della deduplicazione dei dati per 2 ragioni principali: Aiuta il modello a non memorizzare gli stessi dati più volte. Ci aiuta a valutare meglio i LLM perché i dati di addestramento e di test contengono informazioni non duplicate. Se contiene informazioni duplicate, c’è una possibilità molto alta che le informazioni che ha visto nel set di addestramento vengano fornite come output durante il set di test. Di conseguenza, i numeri riportati potrebbero non essere veri. Puoi leggere di più sulle tecniche di deduplicazione dei dati qui .

c. Preparazione del dataset

Il passo successivo è creare le coppie di input e output per addestrare il modello. Durante la fase di preaddestramento, i LLM vengono addestrati a prevedere il token successivo nel testo. Pertanto, le coppie di input e output vengono create di conseguenza.

Ad esempio, prendiamo un semplice corpus-

  • Esempio 1: Sono un Chatbot DHS.
  • Esempio 2: DHS sta per DataHack Summit.
  • Esempio 3: Posso fornirti informazioni su DHS

Nel caso dell’esempio 1, possiamo creare le coppie di input-output come segue-

In modo simile, nel caso dell’esempio 2, di seguito è riportato un elenco di coppie di input e output-

Ogni coppia di input e output viene passata al modello per l’addestramento. Ora, cosa succede dopo? Definiamo l’architettura del modello.

d. Architettura del modello

Il passo successivo è definire l’architettura del modello e addestrare il LLM.

Ad oggi, ci sono molti LLM in fase di sviluppo. Puoi avere una panoramica dei diversi LLM qui . I ricercatori seguono un processo standard durante la costruzione dei LLM. La maggior parte dei ricercatori parte da un’architettura esistente di un Large Language Model come GPT-3 insieme agli iperparametri effettivi del modello. E quindi modificano l’architettura del modello e gli iperparametri per creare un’architettura del modello all’avanguardia.

Ad esempio,

  • Falcon è un LLM all’avanguardia. È al primo posto nella classifica dei LLM open-source. Falcon si ispira all’architettura di GPT-3 con un paio di modifiche.

L’ottimizzazione degli iperparametri è un processo molto costoso in termini di tempo e costi. Immagina solo di eseguire questo esperimento per un modello a miliardi di parametri. Non è fattibile, vero? Pertanto, il metodo ideale è utilizzare gli iperparametri del lavoro di ricerca attuale, ad esempio utilizzare gli iperparametri di GPT-3 mentre si lavora con l’architettura corrispondente e quindi trovare gli iperparametri ottimali su piccola scala e poi interpolarli per il modello finale.

Gli esperimenti possono coinvolgere uno o tutti i seguenti: inizializzazione dei pesi, embedding posizionali, ottimizzatore, attivazione, tasso di apprendimento, decadimento dei pesi, funzione di perdita, lunghezza della sequenza, numero di strati, numero di attention head, numero di parametri, strati densi vs. sparsi, dimensione del batch e dropout.

Discutiamo ora delle migliori pratiche per gli iperparametri popolari-

ChatGPT è un LLM ottimizzato per il dialogo. Il metodo di addestramento di ChatGPT è simile ai passaggi discussi in precedenza. Solo che include un passaggio aggiuntivo noto come RLHF oltre al preaddestramento e al fine-tuning supervisionato.

Ma di recente, è stato pubblicato un articolo noto come LIMA: Less Is for More Alignment . Rivela che non hai bisogno affatto di RLHF in primo luogo. Tutto ciò di cui hai bisogno è il preaddestramento su un enorme quantità di dati e il fine-tuning supervisionato su dati di alta qualità, anche meno di 1000 dati.

Ad oggi, OpenChat è l’ultimo large language model ottimizzato per il dialogo, ispirato da LLaMA-13B. Raggiunge il 105,7% del punteggio di ChatGPT nella valutazione di Vicuna GPT-4. È stato addestrato solo su 6.000 dati di alta qualità.

Come si valutano i LLM?

La valutazione dei LLM non può essere soggettiva. Deve essere un processo logico per valutare le prestazioni dei LLM.

Nel caso di problemi di classificazione o regressione, abbiamo le etichette vere e le etichette previste e quindi le confrontiamo per capire quanto bene si sta comportando il modello. Guardiamo la matrice di confusione per questo, giusto? Ma cosa succede con i grandi modelli di linguaggio? Essi generano solo il testo.

Ci sono 2 modi per valutare i LLM (Large Language Models): metodi intrinseci ed estrinseci.

Metodi Intrinseci

I modelli di linguaggio tradizionali venivano valutati utilizzando metodi intrinseci come la perplessità, i bit per carattere, ecc. Queste metriche misurano le prestazioni dal punto di vista del linguaggio, ovvero quanto bene il modello è in grado di prevedere la parola successiva.

Metodi Estrinseci

Con gli avanzamenti dei LLM di oggi, i metodi estrinseci sono preferiti per valutare le loro prestazioni. Il modo consigliato per valutare i LLM è guardare quanto bene si stanno comportando in diverse attività come la risoluzione di problemi, il ragionamento, la matematica, l’informatica e gli esami competitivi come MIT, JEE, ecc.

EleutherAI ha rilasciato un framework chiamato Language Model Evaluation Harness per confrontare e valutare le prestazioni dei LLM. Hugging Face ha integrato il framework di valutazione per valutare i LLM open source sviluppati dalla comunità.

Il framework proposto valuta i LLM su 4 diversi set di dati. Il punteggio finale è l’aggregazione del punteggio di ciascun set di dati.

  • AI2 Reasoning Challenge: Una raccolta di domande scientifiche progettate per gli studenti delle scuole elementari.
  • HellaSwag: Un test che mette alla prova i modelli all’avanguardia nel fare inferenze di buon senso, che sono relativamente facili per gli esseri umani (circa il 95% di accuratezza).
  • MMLU: Un test completo che valuta l’accuratezza multitask di un modello di testo. Include 57 diverse attività che coprono argomenti come la matematica di base, la storia degli Stati Uniti, l’informatica, il diritto e altro ancora.
  • TruthfulQA: Un test creato specificamente per valutare la tendenza di un modello a generare risposte accurate e a evitare di riprodurre informazioni false comunemente trovate online.

Leggi anche: 10 progetti entusiasmanti sui grandi modelli di linguaggio (LLM)

Note finali

Spero che ora tu sia pronto a costruire i tuoi grandi modelli di linguaggio!

Qualche pensiero? Commenta qui sotto.