Compression de prompt
La compression de prompt (en anglais : prompt compression) est un ensemble de méthodes en ingénierie de prompt visant à réduire la longueur du texte d'entrée (le prompt) pour les grands modèles de langage (LLM) tout en préservant les informations clés[1]. Avec l'augmentation de la fenêtre de contexte des LLM à des millions de tokens (par exemple, chez Google Gemini), il est devenu possible de traiter des textes très longs, mais cela a engendré de nouveaux défis : le coût élevé des appels, l'augmentation de la latence et la baisse de la qualité du raisonnement due à l'effet de « perte au milieu » (lost in the middle)[2].
La compression de prompt résout ces problèmes en concentrant les données les plus essentielles dans l'entrée réduite et en éliminant les redondances. Cela réduit le risque de dépasser la limite de contexte, accélère la génération et diminue les coûts, tout en maintenant la précision des réponses[3].
Méthodes de compression de prompt
Les méthodes de compression de prompt peuvent être divisées en plusieurs classes principales.
Suppression de tokens (filtrage)
Cette approche consiste à supprimer les tokens, phrases ou propositions les moins informatifs du texte original sans modifier les parties restantes. L'importance des tokens est déterminée de manière heuristique.
- LLMLingua : Une méthode développée par Microsoft qui calcule la perplexité de chaque token et supprime ceux qui ont peu d'influence sur la prédictibilité du texte. Dans la version LongLLMLingua, cette approche est adaptée aux documents longs, en tenant compte de la pertinence des fragments par rapport à la requête spécifique de l'utilisateur[4].
- Selective-Context : Utilise un petit modèle de langage pour évaluer l'auto-information (self-information) de chaque token et écarte les tokens ayant la plus faible informativité[5].
- PCRL (Prompt Compression via Reinforcement Learning) : Entraîne un agent par apprentissage par renforcement à prendre une décision pour chaque token — « conserver » ou « supprimer » — afin de maximiser une métrique de qualité (par exemple, ROUGE) de la réponse finale[6].
Compression abstractive (résumé)
Dans cette approche, un modèle compresseur (généralement de plus petite taille) génère un bref résumé abstrait du texte original, qui est ensuite transmis au LLM principal.
- RECOMP (Retrieval-Compression-Prompting) : Pour chaque document dans une base de connaissances, un bref résumé (summary) est généré à l'avance, en tenant compte des requêtes possibles de l'utilisateur (query-aware summary). Cela permet non seulement de compresser, mais aussi de prétraiter l'information[7].
- PRCA (Prompt Compression with Reinforced Context Aggregation) : Combine l'entraînement d'un modèle de résumé avec l'apprentissage par renforcement pour générer des résumés qui améliorent au maximum la qualité des réponses du LLM principal[8].
- Prompt-SAW (Semantic Aware Winnowing) : Avant le résumé, extrait un graphe de connaissances (entités et relations) du texte, sélectionne les nœuds pertinents du graphe et génère un texte compressé sur cette base[9].
Compression extractive
Cette méthode extrait des fragments clés (phrases, paragraphes) du texte original sans les reformuler.
- Reranker-LLMs : Utilise un modèle de reclassement (reranker) qui évalue l'importance de chaque paragraphe ou document pour la requête actuelle et ne sélectionne que les plus pertinents[10].
- CompAct : Démontre une extraction-résumé itérative. Le modèle prend séquentiellement des segments d'un long texte, les compresse et vérifie si l'information est suffisante pour répondre. Si ce n'est pas le cas, il ajoute le segment suivant et compresse à nouveau, obtenant une compression significative tout en préservant la qualité[11].
Distillation et « tokens mémoire »
Une nouvelle classe de méthodes où, au lieu de texte, le modèle reçoit des tokens de substitution ou des embeddings spécialement entraînés contenant des informations compressées.
- Gist Tokens : Un LLM est affiné (fine-tuned) pour « distiller » de longues instructions en un petit ensemble de gist tokens spéciaux (par exemple, 20-30 tokens au lieu de plusieurs milliers). Ces tokens sont ensuite utilisés à la place du prompt original, offrant une compression jusqu'à 26 fois supérieure avec une perte de qualité minimale[12].
- Soft Prompt Tuning : Au lieu d'un prompt textuel, des « tokens virtuels » entraînables (embeddings) sont utilisés, qui sont ajustés pour résoudre une tâche spécifique.
- SelfCP : Propose d'utiliser le LLM gelé lui-même comme compresseur. En lui fournissant un segment de texte avec des marqueurs spéciaux, le modèle génère une représentation dense (memory tokens) qu'il utilise ensuite lui-même pour répondre[13].
Efficacité et compromis
- Accélération et réduction des coûts : Comme la complexité d'un transformeur augmente de manière quadratique ($O(n^2)$) avec la longueur de la séquence, réduire le prompt de plusieurs fois permet des économies substantielles. Par exemple, les gist tokens, avec une compression de 26 fois, démontrent jusqu'à 40 % d'économies en FLOPs[12].
- Amélioration de la qualité : Parfois, la compression de prompt peut même améliorer la qualité des réponses si le texte original contenait du bruit ou des détails distrayants. La suppression du contexte non pertinent aide le modèle à mieux se concentrer sur les aspects importants de la tâche.
- Compromis sur la qualité (fidélité) : Une compression trop agressive peut entraîner la perte de détails importants (dates, noms, négations), ce qui dégradera la qualité de la réponse. Les méthodes abstractives sont particulièrement sujettes au risque d'hallucinations. Le contrôle de l'exhaustivité et de la fidélité (faithfulness) du prompt compressé est un enjeu majeur.
Liens avec d'autres domaines
- Retrieval-Augmented Generation (RAG) : Le RAG et la compression de prompt sont étroitement liés. Le RAG peut être considéré comme une étape de compression externe : au lieu de traiter l'intégralité d'une base de données, une recherche et une sélection de documents pertinents sont effectuées. La compression de prompt complète le RAG en réduisant le volume des documents déjà sélectionnés avant de les fournir au LLM.
- In-Context Learning : Les exemples en contexte (démonstrations) augmentent considérablement la longueur du prompt. La compression de ces démonstrations (par exemple, via l' Instruction Distillation, où de nombreux exemples sont remplacés par une seule instruction courte) est un domaine de recherche actif.
Bibliographie
- 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.
Références
- ↑ Jha, S., et al. (2024). « Characterizing Prompt Compression Methods for Long Context Inference ». arXiv. [1]
- ↑ « Efficient Prompting Methods for Large Language Models: A Survey ». arXiv. [2]
- ↑ « Prompt Compression: A Guide With Python Examples ». DataCamp. [3]
- ↑ Jiang, H., et al. (2023). « LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models ». arXiv.
- ↑ Li, M. (2023). « Compressing context to summarize and answer questions ». arXiv.
- ↑ Jung, H., & Kim, K. (2023). « Learning to Compress Prompts with Reinforcement Learning ». arXiv.
- ↑ Xu, F., et al. (2024). « RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation ». arXiv.
- ↑ Yang, C., et al. (2023). « PRCA: A new framework for prompt compression ». arXiv.
- ↑ Ali, M., et al. (2024). « Prompt-SAW: A new method for prompt compression ». arXiv.
- ↑ Pradeep, R., et al. (2023). « How to select the best passages for RAG? ». arXiv.
- ↑ Yoon, J., et al. (2024). « CompAct: A new framework for interactive prompt compression ». arXiv.
- ↑ 12.0 12.1 Mu, J., et al. (2023). « Learning to Compress Prompts with Gist Tokens ». OpenReview. [4]
- ↑ Gao, C., et al. (2024). « SelfCP: Compressing Over-Limit Prompt via the Frozen Large Language Model Itself ». arXiv. [5]