Introduzione a Streaming-LLM LLM per input di lunghezza infinita

Una panoramica su Streaming-LLM LLM per input dal lunghezza infinita

Il grande Modulo Linguistico (LLM) ha cambiato il modo in cui le persone lavorano. Con un modello come la famiglia GPT che viene ampiamente utilizzata, tutti si sono abituati a questi modelli. Sfruttando il potere di LLM, possiamo ottenere rapidamente risposte alle nostre domande, risolvere problemi nel codice e altro ancora. Ciò rende il modello utile in molte applicazioni.

Una delle sfide di LLM è che il modello non è adatto per le applicazioni di streaming a causa dell’incapacità del modello di gestire una chat di lunga conversazione che supera la lunghezza sequenza di addestramento predefinita. Inoltre, vi è un problema legato al consumo elevato di memoria.

Ecco perché questi problemi precedenti hanno dato inizio alla ricerca per risolverli. Di cosa si tratta questa ricerca? Scopriamolo.

StreamingLLM

StreamingLLM è un framework sviluppato da Xiao et al. (2023) per affrontare i problemi delle applicazioni di streaming. I metodi esistenti sono sfidati perché la finestra di attenzione limita gli LLM durante la pre-elaborazione.

La tecnica della finestra di attenzione potrebbe essere efficiente, ma soffre quando deve gestire testi più lunghi della sua dimensione di cache. Ecco perché il ricercatore ha cercato di utilizzare i token iniziali (attenzione “sink”) come chiavi e valori insieme ai token recenti. Il confronto tra StreamingLLM e le altre tecniche può essere visto nell’immagine seguente.

Possiamo vedere come StreamingLLM affronta la sfida utilizzando il metodo di attenzione “sink”. Questo attenzione “sink” (token iniziali) viene utilizzato per calcoli di attenzione stabili e viene combinato con i token recenti per efficienza e mantenimento di una prestazione stabile su testi più lunghi.

Inoltre, i metodi esistenti soffrono di un’ottimizzazione della memoria. Tuttavia, LLM evita questi problemi mantenendo una finestra di dimensione fissa sulle chiavi e gli stati dei valori dei token più recenti. L’autore menziona anche il vantaggio di StreamingLLM come finestra scorrevole per il calcolo dei dati da cui è stato possibile ottenere un miglioramento fino a 22,2 volte più veloce.

In termini di prestazioni, StreamingLLM fornisce un’eccellente accuratezza rispetto al metodo esistente, come si può vedere nella tabella seguente.

La tabella sopra mostra che l’accuratezza di StreamingLLM può superare gli altri metodi nei dataset di benchmark. Ecco perché StreamingLLM potrebbe avere un potenziale per molte applicazioni di streaming.

Per provare StreamingLLM, è possibile visitare la loro pagina GitHub. Clonare il repository nella directory desiderata e utilizzare il seguente codice nel terminale per impostare l’ambiente.

conda create -yn streaming python=3.8conda activate streamingpip install torch torchvision torchaudiopip install transformers==4.33.0 accelerate datasets evaluate wandb scikit-learn scipy sentencepiecepython setup.py develop

Quindi, è possibile utilizzare il seguente codice per eseguire la chatbot Llama con LLMstreaming.

CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py  --enable_streaming

Il confronto complessivo del campione con StreamingLLM può essere visto nell’immagine seguente.

Questo conclude l’introduzione di StreamingLLM. In generale, ritengo che StreamingLLM possa trovare una collocazione nelle applicazioni di streaming e contribuire a cambiare il modo in cui funzionano le applicazioni in futuro.

Conclusioni

Avere un LLM nelle applicazioni di streaming aiuterebbe l’azienda nel lungo periodo; tuttavia, ci sono sfide da affrontare per implementarlo. La maggior parte degli LLM non può superare la lunghezza sequenza di addestramento predefinita e ha un consumo di memoria più elevato. Xiao et al. (2023) hanno sviluppato un nuovo framework chiamato StreamingLLM per gestire questi problemi. Utilizzando lo StreamingLLM, è ora possibile avere un LLM funzionante nell’applicazione di streaming.

[Cornellius Yudha Wijaya](https://www.linkedin.com/in/cornellius-yudha-wijaya/) è un assistente manager di data science e scrittore di dati. Mentre lavora a tempo pieno presso Allianz Indonesia, ama condividere consigli su Python e Data tramite i social media e i mezzi di scrittura.