Compressione del prompt

From Systems analysis Wiki
Jump to navigation Jump to search

Compressione del prompt (in inglese prompt compression) — è un insieme di metodi nel prompt engineering volti a ridurre la lunghezza del testo di input (prompt) per i grandi modelli linguistici (LLM) preservando le informazioni chiave[1]. Con l'aumento della finestra di contesto degli LLM fino a milioni di token (ad esempio, in Google Gemini) è diventato possibile elaborare testi molto lunghi, ma ciò ha creato nuovi problemi: l'elevato costo delle chiamate, l'aumento della latenza e il calo della qualità del ragionamento a causa dell'effetto «lost in the middle»[2].

La compressione del prompt risolve questi problemi concentrando nell'input ridotto i dati più rilevanti ed eliminando quelli ridondanti. Ciò riduce il rischio di superare il limite di contesto, accelera la generazione e abbassa i costi, mantenendo al contempo la precisione delle risposte[3].

Metodi di compressione del prompt

I metodi di compressione del prompt possono essere suddivisi in alcune classi principali.

Rimozione di token (filtraggio)

Questo approccio consiste nell'eliminare i token, le frasi o le proposizioni meno informativi dal testo originale senza modificare le parti rimanenti. L'importanza dei token viene determinata in modo euristico.

  • LLMLingua: Metodo sviluppato da Microsoft che calcola la perplexity di ciascun token ed elimina quelli che hanno scarsa influenza sulla prevedibilità del testo. Nella versione LongLLMLingua questo approccio è adattato per documenti lunghi, tenendo conto della rilevanza dei frammenti rispetto alla specifica richiesta dell'utente[4].
  • Selective-Context: Utilizza un modello linguistico di piccole dimensioni per valutare la self-information di ciascun token ed elimina i token con la minore informatività[5].
  • PCRL (Prompt Compression via Reinforcement Learning): Addestra un agente tramite Reinforcement Learning a prendere una decisione per ciascun token — «mantenere» o «eliminare» — con l'obiettivo di massimizzare la metrica di qualità (ad esempio, ROUGE) della risposta finale[6].

Compressione astrattiva (riassunto)

In questo approccio un modello compressore (solitamente di dimensioni minori) genera un breve riassunto astratto del testo originale, che viene poi fornito all'LLM principale.

  • RECOMP (Retrieval-Compression-Prompting): Per ciascun documento nella base di conoscenza viene generato in anticipo un breve riassunto (summary) che tiene conto delle possibili richieste dell'utente (query-aware summary). Ciò consente non solo di comprimere, ma anche di pre-elaborare le informazioni[7].
  • PRCA (Prompt Compression with Reinforced Context Aggregation): Combina l'addestramento del modello di riassunto con il Reinforcement Learning per generare riassunti che migliorano al massimo la qualità delle risposte dell'LLM principale[8].
  • Prompt-SAW (Semantic Aware Winnowing): Prima del riassunto estrae dal testo un grafo della conoscenza (entità e relazioni), seleziona i nodi rilevanti del grafo e su questa base genera il testo compresso[9].

Compressione estrattiva

Questo metodo estrae i frammenti chiave (frasi, paragrafi) dal testo originale senza riformularli.

  • Reranker-LLMs: Utilizza un modello di ranking (reranker) che valuta l'importanza di ciascun paragrafo o documento rispetto alla richiesta corrente e seleziona solo i più rilevanti[10].
  • CompAct: Dimostra un'estrazione-riassunto iterativa. Il modello prende sequenzialmente segmenti di un testo lungo, li comprime e verifica se le informazioni siano sufficienti per rispondere. In caso contrario, aggiunge il segmento successivo e comprime nuovamente, raggiungendo una compressione significativa mantenendo la qualità[11].

Distillazione e «token di memoria»

Una nuova classe di metodi in cui, al posto del testo, il modello riceve token sostitutivi appositamente addestrati o embedding contenenti informazioni compresse.

  • Gist Tokens: Il modello LLM viene fine-tuned per «condensare» istruzioni lunghe in un piccolo insieme di speciali gist token (ad esempio, 20-30 token al posto di alcune migliaia). Questi token vengono poi utilizzati al posto del prompt originale, garantendo fino a 26 volte la compressione con una perdita di qualità minima[12].
  • Soft Prompt Tuning: Al posto di un prompt testuale vengono utilizzati «token virtuali» addestrabili (embedding), configurati per risolvere un compito specifico.
  • SelfCP: Propone di utilizzare lo stesso LLM congelato come compressore. Fornendogli un segmento di testo con marcatori speciali, il modello genera una rappresentazione densa (memory tokens), che viene poi utilizzata dallo stesso modello per rispondere[13].

Efficienza e compromessi

  • Accelerazione e riduzione dei costi: Poiché la complessità del transformer cresce quadraticamente ($O(n^2)$) in funzione della lunghezza della sequenza, ridurre il prompt di più volte porta a un risparmio sostanziale. Ad esempio, i gist token con una compressione 26 volte superiore mostrano fino al 40% di risparmio in FLOPs[12].
  • Miglioramento della qualità: A volte la compressione del prompt può persino migliorare la qualità delle risposte, se il testo originale conteneva rumore o dettagli fuorvianti. L'eliminazione del contesto non rilevante aiuta il modello a concentrarsi meglio sugli aspetti importanti del compito.
  • Compromesso di qualità (faithfulness): Una compressione eccessivamente aggressiva può portare alla perdita di dettagli importanti (date, nomi, negazioni), il che peggiorerà la qualità della risposta. I metodi astrattivi sono particolarmente esposti al rischio di allucinazioni. Il controllo della completezza e della precisione (faithfulness) del prompt compresso è un compito fondamentale.

Relazione con altri ambiti

  • Retrieval-Augmented Generation (RAG): RAG e compressione del prompt sono strettamente correlati. Il RAG può essere visto come una fase esterna di compressione: invece di elaborare l'intera base di dati, vengono cercati e selezionati i documenti rilevanti. La compressione del prompt integra il RAG riducendo il volume dei documenti già selezionati prima di fornirli all'LLM.
  • In-Context Learning: Gli esempi nel contesto (dimostrazioni) aumentano significativamente la lunghezza del prompt. La compressione di queste dimostrazioni (ad esempio tramite Instruction Distillation, in cui un insieme di esempi viene sostituito da una breve istruzione) è un'area di ricerca attiva.

Bibliografia

  • Ali, M. et al. (2024). Prompt-SAW: Semantic-Aware Winnowing for Prompt Compression. arXiv:2403.00000.
  • Gao, J.; Cao, Z.; Li, W. (2024). SelfCP: Compressing Over-Limit Prompt via the Frozen Large Language Model Itself. arXiv:2405.17052.
  • Jiang, H. et al. (2023). LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models. arXiv:2310.05736.
  • Jiang, H. et al. (2023). LongLLMLingua: Accelerating and Enhancing LLMs in Long-Context Scenarios via Prompt Compression. arXiv:2310.06839.
  • Jung, H.; Kim, K. (2023). PCRL: Discrete Prompt Compression with Reinforcement Learning. arXiv:2308.08758.
  • Li, M. et al. (2023). Selective-Context: Compressing Context to Summarise and Answer Questions. arXiv:2307.00000.
  • Mu, J. et al. (2023). Learning to Compress Prompts with Gist Tokens. NeurIPS 2023.
  • Xu, F.; Shi, W.; Choi, E. (2023). RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation. arXiv:2310.04408.
  • Yang, C. et al. (2023). PRCA: Prompt Compression with Reinforced Context Aggregation. arXiv:2311.00000.
  • Yoon, J. et al. (2024). CompAct: Interactive Prompt Compression for Long-Document QA. arXiv:2402.00000.
  • Zhang, S. et al. (2024). Efficient Prompting Methods for Large Language Models: A Survey. arXiv:2404.01077.
  • Jha, S. et al. (2024). Characterizing Prompt Compression Methods for Long Context Inference. arXiv:2407.08892.

Note

  1. Jha, S., et al. (2024). «Characterizing Prompt Compression Methods for Long Context Inference». arXiv. [1]
  2. «Efficient Prompting Methods for Large Language Models: A Survey». arXiv. [2]
  3. «Prompt Compression: A Guide With Python Examples». DataCamp. [3]
  4. Jiang, H., et al. (2023). «LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models». arXiv.
  5. Li, M. (2023). «Compressing context to summarize and answer questions». arXiv.
  6. Jung, H., & Kim, K. (2023). «Learning to Compress Prompts with Reinforcement Learning». arXiv.
  7. Xu, F., et al. (2024). «RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation». arXiv.
  8. Yang, C., et al. (2023). «PRCA: A new framework for prompt compression». arXiv.
  9. Ali, M., et al. (2024). «Prompt-SAW: A new method for prompt compression». arXiv.
  10. Pradeep, R., et al. (2023). «How to select the best passages for RAG?». arXiv.
  11. Yoon, J., et al. (2024). «CompAct: A new framework for interactive prompt compression». arXiv.
  12. 12.0 12.1 Mu, J., et al. (2023). «Learning to Compress Prompts with Gist Tokens». OpenReview. [4]
  13. Gao, C., et al. (2024). «SelfCP: Compressing Over-Limit Prompt via the Frozen Large Language Model Itself». arXiv. [5]