Intelligenza Artificiale
Modelli linguistici di grandi dimensioni basati su decodificatore: una guida completa
Grandi modelli linguistici (LLM) hanno rivoluzionato il campo dell'elaborazione del linguaggio naturale (PNL) dimostrando notevoli capacità nel generare testi simili a quelli umani, rispondere a domande e assistere in un'ampia gamma di compiti legati al linguaggio. Al centro di questi potenti modelli c'è il architettura del trasformatore solo decodificatore, una variante dell’architettura originale del trasformatore proposta nel documento fondamentale “L'attenzione è tutto ciò di cui hai bisogno" di Vaswani et al.
In questa guida completa, esploreremo il funzionamento interno degli LLM basati su decoder, approfondendo gli elementi costitutivi fondamentali, le innovazioni architettoniche e i dettagli di implementazione che hanno portato questi modelli in prima linea nella ricerca e nelle applicazioni della PNL.
L'architettura del trasformatore: un aggiornamento
Prima di approfondire le specifiche degli LLM basati su decoder, è essenziale rivisitare l'architettura del trasformatore, la base su cui sono costruiti questi modelli. Il trasformatore ha introdotto un nuovo approccio alla modellazione delle sequenze, basandosi esclusivamente su meccanismi di attenzione per catturare le dipendenze a lungo raggio nei dati, senza la necessità di strati ricorrenti o convoluzionali.
L'architettura originale del trasformatore è costituita da due componenti principali: un codificatore e un decodificatore. Il codificatore elabora la sequenza di input e genera una rappresentazione contestualizzata, che viene poi utilizzata dal decodificatore per produrre la sequenza di output. Questa architettura è stata inizialmente progettata per compiti di traduzione automatica, in cui il codificatore elabora la frase di input nella lingua di origine e il decodificatore genera la frase corrispondente nella lingua di destinazione.
Autoattenzione: la chiave del successo di Transformer
Al centro del trasformatore si trova il meccanismo di auto-attenzione, una potente tecnica che consente al modello di pesare e aggregare informazioni provenienti da diverse posizioni nella sequenza di input. A differenza dei modelli di sequenza tradizionali, che elaborano i token di input in sequenza, l'autoattenzione consente al modello di catturare le dipendenze tra qualsiasi coppia di token, indipendentemente dalla loro posizione nella sequenza.
L’operazione di auto-attenzione può essere suddivisa in tre fasi principali:
- Proiezioni di query, chiavi e valori: La sequenza di input viene proiettata in tre rappresentazioni separate: query (Q), Tasti (K), e valori (V). Queste proiezioni si ottengono moltiplicando l'input con matrici di pesi appresi.
- Calcolo del punteggio di attenzione: Per ogni posizione nella sequenza di input, i punteggi di attenzione vengono calcolati prendendo il prodotto scalare tra il vettore di query corrispondente e tutti i vettori chiave. Questi punteggi rappresentano la pertinenza di ciascuna posizione rispetto alla posizione corrente in fase di elaborazione.
- 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 corrente.
L’attenzione multi-testa, una variante del meccanismo di auto-attenzione, consente al modello di catturare diversi tipi di relazioni calcolando i punteggi di attenzione su più “teste" in parallelo, ciascuno con il proprio set di proiezioni di query, chiavi e valori.
Varianti e configurazioni architettoniche
Sebbene i principi fondamentali dei LLM basati su decoder rimangano coerenti, i ricercatori hanno esplorato varie varianti e configurazioni dell'architettura per migliorare le prestazioni, l'efficienza e le capacità di generalizzazione. In questa sezione approfondiremo le diverse scelte architetturali e le loro implicazioni.
Tipi di architettura
Gli LLM basati su decodificatore possono essere ampiamente classificati in tre tipi principali: codificatore-decodificatore, decodificatore causale e decodificatore di prefisso. Ogni tipo di architettura mostra modelli di attenzione distinti.
Architettura codificatore-decodificatore
Basata sul modello Vanilla Transformer, l'architettura codificatore-decodificatore è costituita da due stack: un codificatore e un decodificatore. Il codificatore utilizza livelli di autoattenzione multi-testa impilati per codificare la sequenza di input e generare rappresentazioni latenti. Il decodificatore esegue quindi l'attenzione incrociata su queste rappresentazioni per generare la sequenza target. Sebbene efficaci in varie attività di PNL, pochi LLM, come Flan-T5, adottare questa architettura.
Architettura del decodificatore causale
L'architettura del decodificatore causale incorpora una maschera di attenzione unidirezionale, consentendo a ciascun token di input di occuparsi solo dei token passati e di se stesso. Sia i token di input che quelli di output vengono elaborati all'interno dello stesso decodificatore. Modelli notevoli come GPT-1, GPT-2 e GPT-3 sono basati su questa architettura, con GPT-3 che mostra notevoli capacità di apprendimento in contesto. Molti LLM, tra cui OPT, BLOOM e Gopher, hanno ampiamente adottato decodificatori causali.
Architettura del decodificatore del prefisso
Conosciuta anche come decodificatore non causale, l'architettura del decodificatore del prefisso modifica il meccanismo di mascheramento dei decodificatori causali per abilitare l'attenzione bidirezionale sui token del prefisso e l'attenzione unidirezionale sui token generati. Come l'architettura codificatore-decodificatore, i decodificatori di prefisso possono codificare la sequenza del prefisso in modo bidirezionale e prevedere i token di output in modo autoregressivo utilizzando parametri condivisi. Gli LLM basati su decodificatori con prefisso includono GLM130B e U-PaLM.
Tutti e tre i tipi di architettura possono essere estesi utilizzando il file miscela di esperti (MoE) tecnica di ridimensionamento, che attiva scarsamente un sottoinsieme di pesi della rete neurale per ciascun input. Questo approccio è stato utilizzato in modelli come Switch Transformer e GLaM, in cui l'aumento del numero di esperti o della dimensione totale dei parametri mostra miglioramenti significativi delle prestazioni.
Trasformatore solo decodificatore: abbraccia la natura autoregressiva
Mentre l'architettura originale del trasformatore era progettata per attività sequenza-sequenza come la traduzione automatica, molte attività di PNL, come la modellazione del linguaggio e la generazione di testo, possono essere inquadrate come problemi autoregressivi, in cui il modello genera un token alla volta, condizionato dalla token precedentemente generati.
Inserisci il trasformatore solo decodificatore, una variante semplificata dell'architettura del trasformatore che conserva solo il componente decodificatore. Questa architettura è particolarmente adatta per attività autoregressive, poiché genera token di output uno per uno, sfruttando i token precedentemente generati come contesto di input.
La differenza fondamentale tra il trasformatore solo decodificatore e il decodificatore trasformatore originale risiede nel meccanismo di auto-attenzione. Nell'impostazione solo decodificatore, l'operazione di auto-attenzione viene modificata per impedire al modello di occuparsi di token futuri, una proprietà nota come causalità. Ciò si ottiene attraverso una tecnica chiamata “autoattenzione mascherata”, in cui i punteggi di attenzione corrispondenti alle posizioni future sono impostati su infinito negativo, mascherandoli efficacemente durante la fase di normalizzazione softmax.
Componenti architettonici di LLM basati su decodificatore
Sebbene i principi fondamentali dell'autoattenzione e dell'autoattenzione mascherata rimangano gli stessi, i moderni LLM basati su decodificatore hanno introdotto diverse innovazioni architetturali per migliorare le prestazioni, l'efficienza e le capacità di generalizzazione. Esploriamo alcuni dei componenti chiave e delle tecniche impiegate nei LLM all'avanguardia.
Rappresentazione dell'input
Prima di elaborare la sequenza di input, gli LLM basati su decoder utilizzano tecniche di tokenizzazione e 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. Le tecniche di tokenizzazione più diffuse 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 in modo efficace parole rare o fuori dal vocabolario.
Incorporamenti di token: dopo la tokenizzazione, ogni token viene mappato su una rappresentazione vettoriale densa chiamata incorporamento di token. Questi incorporamenti vengono appresi durante il processo di training e catturano le relazioni semantiche e sintattiche tra i token.
Incorporamenti posizionali: I modelli Transformer elaborano simultaneamente l'intera sequenza di input, mancando la nozione intrinseca di posizioni dei token presente nei modelli ricorrenti. Per incorporare informazioni sulla posizione, agli incorporamenti dei token vengono aggiunti incorporamenti posizionali, consentendo al modello di distinguere tra i token in base alla loro posizione nella sequenza. I primi LLM utilizzavano incorporamenti posizionali fissi basati su funzioni sinusoidali, mentre i modelli più recenti hanno esplorato incorporamenti posizionali apprendibili o tecniche di codifica posizionale alternative come incorporamenti posizionali rotanti.
Blocchi di attenzione multi-testa
Gli elementi fondamentali degli LLM basati su decodificatore sono livelli di attenzione multi-testa, che eseguono l'operazione di autoattenzione mascherata descritta in precedenza. Questi livelli vengono impilati più volte, ciascuno dei quali si occupa dell'output del livello precedente, consentendo al modello di catturare dipendenze e rappresentazioni sempre più complesse.
Capi di attenzione: ogni livello di attenzione multi-testa è costituito da più "teste di attenzione", ciascuna con il proprio set di proiezioni di query, chiavi e valori. Ciò consente al modello di occuparsi simultaneamente di diversi aspetti dell'input, catturando relazioni e modelli diversi.
Connessioni residue e normalizzazione degli strati: Per facilitare l'addestramento delle reti profonde e mitigare il problema del gradiente evanescente, gli LLM basati su decodificatore utilizzano connessioni residue e tecniche di normalizzazione dei livelli. Le connessioni residue aggiungono l'input di uno strato al suo output, consentendo ai gradienti di fluire più facilmente durante la backpropagation. La normalizzazione degli strati aiuta a stabilizzare le attivazioni e i gradienti, migliorando ulteriormente la stabilità e le prestazioni dell'allenamento.
Livelli feed-forward
Oltre ai livelli di attenzione multi-testa, gli LLM basati su decodificatore incorporano livelli feed-forward, che applicano una semplice rete neurale feed-forward a ciascuna 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 precedenti LLM si basavano sull'attivazione ReLU ampiamente utilizzata, i 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.
Poca attenzione e trasformatori efficienti
Sebbene il meccanismo di autoattenzione 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'autoattenzione, consentendo l'elaborazione efficiente di sequenze più lunghe.
scarsa attenzione: Le tecniche di attenzione sparsa, come quella impiegata nel modello GPT-3, si occupano selettivamente di un sottoinsieme di posizioni nella sequenza di input, piuttosto che calcolare i punteggi di attenzione per tutte le posizioni. Ciò può ridurre significativamente la complessità computazionale mantenendo prestazioni ragionevoli.
Attenzione alla finestra scorrevole: Introdotta nel modello Mistral 7B, la finestra scorrevole di attenzione (SWA) è una tecnica semplice ma efficace che limita la capacità di attenzione di ciascun token a una dimensione di finestra fissa. Questo approccio sfrutta la capacità degli strati trasformatori di trasmettere informazioni su più strati, aumentando efficacemente la capacità di attenzione senza la complessità quadratica della piena auto-attenzione.
Cache del buffer mobile: Per ridurre ulteriormente i requisiti di memoria, soprattutto per sequenze lunghe, il modello Mistral 7B utilizza una cache rolling buffer. Questa tecnica memorizza e riutilizza i vettori di chiave e valore calcolati per una dimensione di finestra fissa, evitando calcoli ridondanti e riducendo al minimo l'utilizzo della memoria.
Attenzione alle query raggruppate: Introdotto nel modello LLaMA 2, l'attenzione delle query raggruppate (GQA) è una variante del meccanismo di attenzione multi-query che divide i capi dell'attenzione in gruppi, ciascun gruppo condivide una chiave comune e una matrice di valori. Questo approccio raggiunge un equilibrio tra l'efficienza dell'attenzione multi-query e le prestazioni dell'autoattenzione standard, fornendo tempi di inferenza migliorati pur mantenendo risultati di alta qualità.