Compresión de prompts

From Systems analysis wiki
Jump to navigation Jump to search

Compresión de prompts (del inglés prompt compression) es un conjunto de métodos en la ingeniería de prompts, dirigidos a reducir la longitud del texto de entrada (prompt) para los grandes modelos de lenguaje (LLM) preservando la información clave[1]. Con el crecimiento de la ventana de contexto de los LLM a millones de tokens (por ejemplo, en Google Gemini), surgió la capacidad de procesar textos muy largos, pero esto creó nuevos desafíos: el alto costo de las llamadas, el aumento de la latencia y la disminución de la calidad del razonamiento debido al efecto de «pérdida en el medio»[2].

La compresión de prompts resuelve estos problemas al concentrar los datos más esenciales en una entrada reducida y descartar la información superflua. Esto reduce el riesgo de exceder el límite de contexto, acelera la generación y disminuye el costo, manteniendo al mismo tiempo la precisión de las respuestas[3].

Métodos de compresión de prompts

Los métodos de compresión de prompts se pueden dividir en varias clases principales.

Eliminación de tokens (filtrado)

Este enfoque consiste en eliminar los tokens, frases u oraciones menos informativos del texto original sin alterar las partes restantes. La importancia de los tokens se determina heurísticamente.

  • LLMLingua: Un método desarrollado por Microsoft que calcula la perplejidad de cada token y elimina aquellos que tienen poco impacto en la previsibilidad del texto. En la versión LongLLMLingua, este enfoque se adapta para documentos largos, teniendo en cuenta la relevancia de los fragmentos en relación con la consulta específica del usuario[4].
  • Selective-Context: Utiliza un modelo de lenguaje pequeño para evaluar la autoinformación (self-information) de cada token y descarta los tokens con la menor informatividad[5].
  • PCRL (Prompt Compression via Reinforcement Learning): Entrena a un agente mediante aprendizaje por refuerzo para tomar una decisión para cada token —«mantener» o «eliminar»— con el objetivo de maximizar una métrica de calidad (por ejemplo, ROUGE) de la respuesta final[6].

Compresión abstractiva (resumen)

En este enfoque, un modelo compresor (generalmente de menor tamaño) genera un breve resumen abstracto del texto original, que luego se pasa al LLM principal.

  • RECOMP (Retrieval-Compression-Prompting): Para cada documento en la base de conocimientos, se genera de antemano un resumen breve (summary) que tiene en cuenta las posibles consultas del usuario (query-aware summary). Esto permite no solo comprimir, sino también preprocesar la información[7].
  • PRCA (Prompt Compression with Reinforced Context Aggregation): Combina el entrenamiento de un modelo resumidor con el aprendizaje por refuerzo para generar resúmenes que mejoren al máximo la calidad de las respuestas del LLM principal[8].
  • Prompt-SAW (Semantic Aware Winnowing): Antes de resumir, extrae un grafo de conocimiento (entidades y relaciones) del texto, selecciona los nodos relevantes del grafo y genera un texto comprimido a partir de ellos[9].

Compresión extractiva

Este método extrae fragmentos clave (oraciones, párrafos) del texto original sin parafrasearlos.

  • Reranker-LLMs: Utiliza un modelo clasificador (reranker) que evalúa la importancia de cada párrafo o documento para la consulta actual y selecciona solo los más relevantes[10].
  • CompAct: Demuestra una extracción-resumen iterativa. El modelo toma secuencialmente segmentos de un texto largo, los comprime y verifica si hay suficiente información para responder. Si no, añade el siguiente segmento y vuelve a comprimir, logrando una compresión significativa mientras se mantiene la calidad[11].

Destilación y «tokens de memoria»

Una nueva clase de métodos donde, en lugar de texto, el modelo recibe tokens sustitutos o embeddings especialmente entrenados que contienen información comprimida.

  • Gist Tokens: Un LLM es afinado para «condensar» instrucciones largas en un pequeño conjunto de gist tokens especiales (por ejemplo, 20-30 tokens en lugar de varios miles). Estos tokens se utilizan luego en lugar del prompt original, logrando una compresión de hasta 26 veces con una pérdida mínima de calidad[12].
  • Soft Prompt Tuning: En lugar de un prompt textual, se utilizan «tokens virtuales» entrenables (embeddings) que se ajustan para resolver una tarea específica.
  • SelfCP: Propone utilizar el propio LLM congelado como compresor. Al alimentarle un segmento de texto con etiquetas especiales, el modelo genera una representación densa (memory tokens) que luego utiliza para responder[13].

Eficacia y compromisos

  • Aceleración y reducción de costos: Dado que la complejidad de un transformador crece cuadráticamente ($O(n^2)$) con la longitud de la secuencia, reducir el prompt varias veces proporciona un ahorro significativo. Por ejemplo, los gist tokens con una compresión de 26 veces demuestran un ahorro de hasta el 40% en FLOPs[12].
  • Aumento de la calidad: A veces, la compresión de prompts puede incluso mejorar la calidad de las respuestas si el texto original contenía ruido o detalles que distraen. Eliminar el contexto irrelevante ayuda al modelo a centrarse mejor en los aspectos importantes de la tarea.
  • Compromiso en la calidad (faithfulness): Una compresión demasiado agresiva puede llevar a la pérdida de detalles importantes (fechas, nombres, negaciones), lo que empeorará la calidad de la respuesta. Los métodos abstractivos son especialmente propensos al riesgo de alucinaciones. Controlar la completitud y la fidelidad (faithfulness) del prompt comprimido es una tarea clave.

Relación con otras áreas

  • Retrieval-Augmented Generation (RAG): RAG y la compresión de prompts están estrechamente relacionados. RAG puede considerarse una etapa externa de compresión: en lugar de procesar toda la base de datos, se buscan y seleccionan los documentos relevantes. La compresión de prompts complementa a RAG al reducir el volumen de los documentos ya seleccionados antes de pasarlos al LLM.
  • In-Context Learning: Los ejemplos en contexto (demostraciones) aumentan significativamente la longitud del prompt. La compresión de estas demostraciones (por ejemplo, mediante Instruction Distillation, donde múltiples ejemplos se reemplazan por una única instrucción corta) es un área activa de investigación.

Literatura

  • 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.

Referencias

  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]