Come possiamo implementare in modo efficiente grandi modelli di linguaggio nelle applicazioni di streaming? Questo articolo AI presenta il framework StreamingLLM per lunghezze di sequenza infinite

Come implementare efficacemente grandi modelli di linguaggio nelle app di streaming? Scopri il framework StreamingLLM per sequenze infinite con questo articolo sull'IA

Large Language Models (LLMs) sono sempre più utilizzati per alimentare applicazioni di elaborazione del linguaggio naturale, tra cui completamento del codice, risposta alle domande, riassunto dei documenti e sistemi di dialogo. I LLM preaddestrati devono essere in grado di creare sequenze estese in modo preciso e veloce per raggiungere tutto il loro potenziale. Ad esempio, un assistente ideale per un ChatBot può modificare in modo affidabile il contenuto delle chat recenti di una giornata intera. Generalizzare a lunghezze di sequenza superiori a quelle su cui sono stati preaddestrati, come ad esempio 4K per Llama-2, è molto difficile per i LLM. A causa della finestra di attenzione durante il preaddestramento, i LLM sono limitati.

Anche se sono stati fatti importanti tentativi per aumentare la dimensione di questa finestra e aumentare l’efficacia del training e dell’inferenza per input lunghi, la lunghezza della sequenza consentita deve ancora essere rivista, il che impedisce le distribuzioni permanenti. In questo studio, i ricercatori del MIT, Meta AI e della Carnegie Mellon University discutono inizialmente l’idea delle applicazioni di streaming LLM e pongono la seguente domanda: quando si utilizzano i LLM per flussi di input senza fine, emergono due principali problemi:

1. I LLM basati su Transformer memorizzano gli stati Key e Value (KV) di tutti i token precedenti durante la fase di decodifica, come mostrato nella Figura 1(a), il che può comportare un uso eccessivo della memoria e un aumento dei ritardi di decodifica.

2. Le prestazioni dei modelli esistenti subiscono quando la durata della sequenza supera la dimensione della finestra di attenzione determinata durante il preaddestramento.

Figura 1 confronta StreamingLLM con tecniche precedenti. Il token T (T >> L) è predetto dal modello linguistico, che è stato preaddestrato su testi di lunghezza L. (a) Dense Attention ha una capacità di cache crescente e una complessità temporale O(T^2). Quando la lunghezza del testo supera la lunghezza del testo utilizzato nel preaddestramento, le sue prestazioni ne risentono. (b) Window Attention memorizza gli stati KV degli L token più recenti nella sua cache. Nonostante le prestazioni siano buone per l’inferenza, si deteriorano rapidamente quando le chiavi e i valori dei token iniziali vengono rimossi. Per ogni nuovo token, (c) Sliding Window con Re-computation ricostruisce gli stati KV utilizzando gli L token più recenti. Anche se eccelle nel gestire testi lunghi, a causa della sua complessità O(T L^2) e dell’attenzione quadratica nella ricomputazione del contesto, è estremamente lento. (d) Per un calcolo dell’attenzione costante, StreamingLLM mantiene il pool dell’attenzione (alcuni token iniziali), insieme agli ultimi token. Funziona in modo efficace e coerente con testi lunghi. Il modello Llama-2-13B viene utilizzato per calcolare le perplessità per il primo libro (65K token) nel set di test PG-19.

L’attenzione della finestra è una strategia evidente che tiene una finestra scorrevole di dimensioni fisse sugli stati KV dei token più recenti (Figura 1b). Anche solo rimuovere gli KV del primo token provoca il collasso del modello dopo che la lunghezza della sequenza supera la capacità della cache, anche se garantisce un uso coerente della memoria e delle prestazioni di decodifica dopo che la cache è piena per la prima volta. Un’altra tactica è una finestra scorrevole con ricalcolo (Figura 1c), che ricostruisce gli stati KV dei token recenti per ogni token creato. Il calcolo dell’attenzione quadratica all’interno della finestra rende questa tecnica molto più lenta, anche se funziona bene, rendendola inadatta per applicazioni di streaming reali.

Scoprono fenomeni interessanti dei LLM autoregressivi per spiegare il fallimento dell’attenzione delle finestre: viene assegnato un punteggio di attenzione sorprendentemente alto ai token iniziali, indipendentemente dalla loro rilevanza per il compito di modellazione del linguaggio. Questi token sono chiamati “attention sinks” e ricevono punteggi di attenzione significativi pur avendo poco valore semantico. L’operazione Softmax, che richiede che i punteggi di attenzione si sommino a uno per tutti i token contestuali, viene citata come causa. Di conseguenza, il modello deve assegnare questi valori di attenzione extra in modo che si sommino a uno, anche quando la query corrente non ha una corrispondenza adeguata in molti token precedenti.

I token iniziali vengono utilizzati come attenzione assorbente per una semplice ragione: sono visibili praticamente a tutti i token successivi grazie alla natura del language modeling autoregressivo, rendendoli più facili da addestrare. Suggeriscono quindi StreamingLLM, un’architettura semplice ed efficace che consente a LLM preparati con una finestra di attenzione finita di lavorare su testi di durata indefinita senza bisogno di sintonizzazione, alla luce delle scoperte sopra menzionate. Poiché i token di attenzione assorbente hanno valori di attenzione elevati, StreamingLLM utilizza questa proprietà per mantenere ragionevolmente regolare la distribuzione dei punteggi di attenzione. StreamingLLM mantiene i KVs della finestra scorrevole e dei token di attenzione assorbente (con solo quattro token iniziali necessari) per ancorare il calcolo dell’attenzione e stabilizzare le prestazioni del modello.

Modelli come Llama-2-B, MPT-B, Falcon-B e PythiaB possono rappresentare accuratamente 4 milioni di token con l’aiuto di StreamingLLM, e magari anche di più. StreamingLLM raggiunge fino a 22,2 volte la velocità rispetto all’unico punto di riferimento pratico, finestra scorrevole con ricomputazione, realizzando l’utilizzo in streaming di LLM. Infine, dimostrano che i modelli linguistici possono essere pre-addestrati per richiedere solo un singolo token di attenzione assorbente per l’utilizzo in streaming, confermando la loro ipotesi sui token di attenzione assorbente. Propongono che un token di attenzione selezionato possa essere implementato come un token addestrabile aggiuntivo all’inizio di ogni campione di addestramento. L’introduzione di questo singolo token di attenzione assorbente mantiene le prestazioni del modello in istanze di streaming pre-addestrando modelli linguistici con 160 milioni di parametri da zero. Questo contrasta con i modelli “vanilla”, che richiedono la reintroduzione di diversi token iniziali come attenzione assorbenti per mantenere lo stesso livello di prestazioni.