Modelli e piattaforme di IA
Modelli Linguistici a Grande Scala Basati su Decoder: Una Guida Completa
I Modelli Linguistici a Grande Scala (LLM) hanno rivoluzionato il campo dell’elaborazione del linguaggio naturale (NLP) dimostrando capacità notevoli nella generazione di testi simili a quelli umani, nel rispondere a domande e nell’assistenza in una vasta gamma di attività legate al linguaggio. Al cuore di questi potenti modelli si trova l’architettura del trasformatore basata solo sul decoder, una variante dell’architettura del trasformatore originale proposta nel seminale articolo “Attention is All You Need” di Vaswani et al.
In questa guida completa, esploreremo il funzionamento interno dei LLM basati su decoder, analizzando i blocchi fondamentali, le innovazioni architettoniche e i dettagli di implementazione che hanno portato questi modelli ai vertici della ricerca e delle applicazioni NLP.
L’Architettura del Trasformatore: Un Ripasso
Prima di addentrarci nei dettagli dei LLM basati su decoder, è essenziale ripassare l’architettura del trasformatore, la base su cui sono costruiti questi modelli. Il trasformatore ha introdotto un approccio innovativo alla modellazione delle sequenze, basato esclusivamente su meccanismi di attenzione per catturare le dipendenze a lungo raggio nei dati, senza la necessità di layer ricorrenti o convoluzionali.
L’architettura del trasformatore originale consiste in due componenti principali: un encoder e un decoder. L’encoder elabora la sequenza di input e genera una rappresentazione contestualizzata, che viene poi consumata dal decoder per produrre la sequenza di output. Questa architettura è stata inizialmente progettata per attività di traduzione automatica, dove l’encoder elabora la frase di input nella lingua sorgente e il decoder genera la frase corrispondente nella lingua di destinazione.
Attenzione Autoreferenziale: La Chiave del Successo del Trasformatore
Al cuore del trasformatore si trova il meccanismo di attenzione autoreferenziale, una tecnica potente che consente al modello di pesare e aggregare informazioni da diverse posizioni nella sequenza di input. A differenza dei modelli di sequenza tradizionali, che elaborano i token di input in sequenza, l’attenzione autoreferenziale consente al modello di catturare dipendenze tra qualsiasi coppia di token, indipendentemente dalla loro posizione nella sequenza.
L’operazione di attenzione autoreferenziale può essere suddivisa in tre passaggi principali:
- Proiezioni di Query, Chiave e Valore: la sequenza di input viene proiettata in tre rappresentazioni separate: query (Q), chiave (K) e valore (V). Queste proiezioni vengono ottenute moltiplicando l’input con matrici di peso apprese.
- Calcolo dei Punteggi di Attenzione: per ogni posizione nella sequenza di input, vengono calcolati punteggi di attenzione prendendo il prodotto scalare tra il vettore di query corrispondente e tutti i vettori di chiave. Questi punteggi rappresentano la rilevanza di ogni posizione rispetto alla posizione attualmente elaborata.
- Somma Ponderata dei Valori: i punteggi di attenzione vengono normalizzati utilizzando una funzione softmax, e i pesi di attenzione risultanti vengono utilizzati per calcolare una somma ponderata dei vettori di valore, producendo la rappresentazione di output per la posizione attuale.
L’attenzione multi-testa, una variante del meccanismo di attenzione autoreferenziale, consente al modello di catturare diversi tipi di relazioni calcolando punteggi di attenzione su più “teste” in parallelo, ognuna con le proprie proiezioni di query, chiave e valore.
Varianti e Configurazioni Architettoniche
Mentre i principi fondamentali dei LLM basati su decoder rimangono coerenti, i ricercatori hanno esplorato diverse varianti architettoniche e configurazioni per migliorare le prestazioni, l’efficienza e le capacità di generalizzazione. In questa sezione, esploreremo le diverse scelte architettoniche e le loro implicazioni.
Tipi di Architettura
I LLM basati su decoder possono essere suddivisi in tre tipi principali: encoder-decoder, decoder causale e decoder prefisso. Ognuno di questi tipi di architettura presenta modelli di attenzione distinti.
Architettura Encoder-Decoder
Basata sul modello del trasformatore vanilla, l’architettura encoder-decoder consiste in due pile: un encoder e un decoder. L’encoder utilizza strati di attenzione autoreferenziale multi-testa per codificare la sequenza di input e generare rappresentazioni latenti. Il decoder esegue quindi un’attenzione incrociata su queste rappresentazioni per generare la sequenza di output. Sebbene efficace in vari compiti NLP, pochi LLM, come Flan-T5, adottano questa architettura.
Architettura Decoder Causale
L’architettura del decoder causale incorpora una maschera di attenzione unidirezionale, consentendo a ogni token di input di attendere solo ai token precedenti e a se stesso. Sia i token di input che quelli di output vengono elaborati all’interno dello stesso decoder. Modelli noti come GPT-1, GPT-2 e GPT-3 sono costruiti su questa architettura, con GPT-3 che mostra capacità di apprendimento in contesto notevoli. Molti LLM, tra cui OPT, BLOOM e Gopher, hanno ampiamente adottato decoder causali.
Architettura Decoder Prefisso
Nota anche come decoder non causale, l’architettura del decoder prefisso modifica il meccanismo di mascheramento dei decoder causali per abilitare un’attenzione bidirezionale sui token prefissi e un’attenzione unidirezionale sui token generati. Come l’architettura encoder-decoder, i decoder prefissi possono codificare la sequenza prefissa in modo bidirezionale e prevedere i token di output in modo autoregressivo utilizzando parametri condivisi. I LLM basati su decoder prefissi includono GLM130B e U-PaLM.
Tutti e tre i tipi di architettura possono essere estesi utilizzando la tecnica di mixture-of-experts (MoE), che attiva in modo sparso un subset dei pesi del network neurale per ogni input. Questo approccio è stato impiegato in modelli come Switch Transformer e GLaM, con un aumento del numero di esperti o della dimensione totale dei parametri che mostra miglioramenti significativi delle prestazioni.
Trasformatore Basato su Decoder: Abbracciare la Natura Autoregressiva
Mentre l’architettura del trasformatore originale è stata progettata per compiti di sequenza-a-sequenza come la traduzione automatica, molti compiti NLP, come la modellazione del linguaggio e la generazione di testi, possono essere inquadrati come problemi autoregressivi, dove il modello genera un token alla volta, condizionato dai token precedentemente generati.
Entra in scena il trasformatore basato su decoder, una variante semplificata dell’architettura del trasformatore che mantiene solo il componente del decoder. Questa architettura è particolarmente adatta per compiti autoregressivi, poiché genera i token di output uno per uno, sfruttando i token precedentemente generati come contesto di input.
La differenza chiave tra il trasformatore basato su decoder e il decoder del trasformatore originale risiede nel meccanismo di attenzione autoreferenziale. Nell’ambito del decoder, l’operazione di attenzione autoreferenziale viene modificata per impedire al modello di attendere ai token futuri, una proprietà nota come causalità. Ciò viene ottenuto attraverso una tecnica chiamata “attenzione autoreferenziale mascherata”, dove i punteggi di attenzione corrispondenti a posizioni future vengono impostati su meno infinito, di fatto mascherandoli durante la normalizzazione softmax.
Componenti Architettonici dei LLM Basati su Decoder
Mentre i principi fondamentali dell’attenzione autoreferenziale e dell’attenzione autoreferenziale mascherata rimangono gli stessi, i LLM moderni basati su decoder hanno introdotto diverse innovazioni architettoniche per migliorare le prestazioni, l’efficienza e le capacità di generalizzazione. Esploreremo alcuni dei componenti chiave e delle tecniche impiegate nei LLM di stato dell’arte.
Rappresentazione dell’Input
Prima di elaborare la sequenza di input, i LLM basati su decoder impiegano tecniche di tokenizzazione e di incorporamento per convertire il testo grezzo in una rappresentazione numerica adatta al modello.
Tokenizzazione: il processo di tokenizzazione converte il testo di input in una sequenza di token, che possono essere parole, sottoparole o anche singoli caratteri, a seconda della strategia di tokenizzazione impiegata. Tecniche di tokenizzazione popolari per i LLM includono Byte-Pair Encoding (BPE), SentencePiece e WordPiece. Questi metodi mirano a trovare un equilibrio tra la dimensione del vocabolario e la granularità della rappresentazione, consentendo al modello di gestire parole rare o fuori dal vocabolario in modo efficace.
Incorporamento dei Token: dopo la tokenizzazione, ogni token viene mappato in una rappresentazione vettoriale densa chiamata incorporamento del token. Questi incorporamenti vengono appresi durante il processo di addestramento e catturano relazioni semantiche e sintattiche tra i token.
Incorporamento Posizionale: i modelli del trasformatore elaborano l’intera sequenza di input simultaneamente, mancando della nozione intrinseca di posizione dei token presente nei modelli ricorrenti. Per incorporare informazioni posizionali, vengono aggiunti incorporamenti posizionali agli incorporamenti dei token, consentendo al modello di distinguere tra token in base alle loro posizioni nella sequenza. I primi LLM hanno utilizzato incorporamenti posizionali fissi basati su funzioni sinusoidali, mentre modelli più recenti hanno esplorato incorporamenti posizionali appresi o tecniche di codifica posizionale alternative come gli incorporamenti posizionali rotativi.
Blocchi di Attenzione Multi-Testa
I blocchi fondamentali dei LLM basati su decoder sono i layer di attenzione multi-testa, che eseguono l’operazione di attenzione autoreferenziale mascherata descritta in precedenza. Questi layer vengono impilati più volte, con ogni layer che attende all’output del layer precedente, consentendo al modello di catturare dipendenze e rappresentazioni sempre più complesse.
Teste di Attenzione: ogni layer di attenzione multi-testa consiste in più “teste di attenzione“, ognuna con le proprie proiezioni di query, chiave e valore. Ciò consente al modello di attendere a diversi aspetti dell’input simultaneamente, catturando relazioni e pattern diversi.
Collegamenti Residui e Normalizzazione del Layer: per facilitare l’addestramento di reti profonde e mitigare il problema del gradiente che scompare, i LLM basati su decoder impiegano collegamenti residui e tecniche di normalizzazione del layer. I collegamenti residui aggiungono l’input di un layer al suo output, consentendo ai gradienti di fluire più facilmente durante la propagazione all’indietro. La normalizzazione del layer aiuta a stabilizzare le attivazioni e i gradienti, migliorando ulteriormente la stabilità e le prestazioni dell’addestramento.
Strati Feed-Forward
Oltre ai layer di attenzione multi-testa, i LLM basati su decoder incorporano strati feed-forward, che applicano una semplice rete neurale feed-forward a ogni posizione nella sequenza. Questi strati introducono non linearità e consentono al modello di apprendere rappresentazioni più complesse.
Funzioni di Attivazione: la scelta della funzione di attivazione negli strati feed-forward può avere un impatto significativo sulle prestazioni del modello. Mentre i primi LLM si basavano ampiamente sull’attivazione ReLU, modelli più recenti hanno adottato funzioni di attivazione più sofisticate come l’unità lineare dell’errore gaussiano (GELU) o l’attivazione SwiGLU, che hanno mostrato prestazioni migliorate.
Attenzione Sparso e Trasformatori Efficienti
Sebbene il meccanismo di attenzione autoreferenziale sia potente, presenta una complessità computazionale quadratica rispetto alla lunghezza della sequenza, rendendolo computazionalmente costoso per sequenze lunghe. Per affrontare questa sfida, sono state proposte diverse tecniche per ridurre i requisiti computazionali e di memoria dell’attenzione autoreferenziale, consentendo un’elaborazione efficiente di sequenze più lunghe.
Attenzione Sparso: le tecniche di attenzione sparso, come quella impiegata nel modello GPT-3, attendono selettivamente a un subset di posizioni nella sequenza di input, anziché calcolare punteggi di attenzione per tutte le posizioni. Ciò può ridurre significativamente la complessità computazionale mantenendo prestazioni ragionevoli.
Attenzione a Finestra Scorrevole: introdotta nel modello Mistral 7B, l’attenzione a finestra scorrevole (SWA) è una tecnica semplice ma efficace che limita la portata dell’attenzione di ogni token a una dimensione di finestra fissa. Questo approccio sfrutta la capacità dei layer del trasformatore di trasmettere informazioni attraverso più layer, aumentando efficacemente la portata dell’attenzione senza la complessità quadratica dell’attenzione autoreferenziale completa.
Cache del Buffer Scorrevole: per ridurre ulteriormente i requisiti di memoria, in particolare per sequenze lunghe, il modello Mistral 7B impiega una cache del buffer scorrevole. Questa tecnica memorizza e riutilizza i vettori di chiave e valore calcolati per una dimensione di finestra fissa, evitando calcoli ridondanti e minimizzando l’utilizzo della memoria.
Attenzione a Query Raggruppata: introdotta nel modello LLaMA 2, l’attenzione a query raggruppata (GQA) è una variante del meccanismo di attenzione multi-query che divide le teste di attenzione in gruppi, ognuno con una matrice di chiave e valore comune. Questo approccio trova un equilibrio tra l’efficienza dell’attenzione multi-query e le prestazioni dell’attenzione autoreferenziale standard, offrendo tempi di inferenza migliorati mantenendo risultati di alta qualità.
















