Prompt Compression
La compresión de prompts acorta las entradas de los LLM al eliminar tokens con poca información o codificar el contexto de forma compacta, lo que reduce el coste y la latencia sin afectar a las respuestas.
La compresión de instrucciones acorta la entrada de un modelo de lenguaje grande (LLM) y conserva la información que el modelo necesita para responder, de modo que una solicitud use menos tokens, se ejecute más rápido y quepa en la ventana de contexto. Los métodos abarcan desde eliminar palabras predecibles con un modelo de lenguaje pequeño, hasta resumir historiales largos y entrenar tokens compactos aprendidos que sustituyen pasajes enteros. La compresión resulta útil cuando las instrucciones son largas y se envían con frecuencia, como en procesos de generación aumentada por recuperación (RAG) que insertan muchos documentos recuperados, agentes de IA cuyos historiales crecen con cada paso y aplicaciones con instrucciones y ejemplos largos. Los proveedores cobran por cada token de entrada, y el coste computacional de la atención aumenta con la longitud de la entrada, así que comprimir una instrucción a la mitad reduce aproximadamente a la mitad el coste de entrada y disminuye la latencia de inferencia.
Cómo funciona la compresión de prompts#
La compresión estricta de instrucciones convierte el texto en otro texto más breve que cualquier LLM, incluidos los modelos de API cerrados, puede leer. La mayoría de los métodos puntúan cada token con un modelo de lenguaje pequeño y eliminan los tokens que considera fáciles de predecir, ya que contienen menos información. Selective Context aplica esta idea a palabras y frases, y LLMLingua, de Microsoft, añade un controlador de presupuesto que asigna distintas proporciones de compresión a la instrucción, los ejemplos y la pregunta, además de una poda iterativa a nivel de token, y alcanza una compresión de hasta 20x con una pérdida de rendimiento mínima. LLMLingua-2 reformula la compresión como una clasificación de tokens con un codificador bidireccional, como XLM-RoBERTa, entrenado con ejemplos de compresión destilados de un LLM más grande; funciona entre 3x y 6x más rápido que los métodos anteriores y acelera la latencia integral entre 1,6x y 2,9x con una compresión de entre 2x y 5x. En cambio, los métodos abstractivos piden a un modelo que resuma el contexto, lo que comprime más, pero puede descartar detalles necesarios para responder a la pregunta.
La compresión blanda de instrucciones convierte el texto en unos pocos embeddings aprendidos que el modelo lee en lugar de los tokens originales. Los tokens de gist entrenan LLaMA-7B y FLAN-T5-XXL para condensar una instrucción en un puñado de tokens especiales, y consiguen una compresión de hasta 26x y hasta un 40 % menos de FLOP. Estos métodos requieren acceso a los pesos del modelo, por lo que se aplican a modelos abiertos.
El núcleo de la compresión a nivel de token cabe en unas pocas líneas de PyTorch. Este ejemplo utiliza GPT-2, con 124 millones de parámetros, de Hugging Face Transformers para calcular la información propia de cada token —el logaritmo negativo de la probabilidad del token dadas todas las palabras anteriores— y conservar la mitad más sorprendente:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
prompt = (
"The quarterly maintenance report states that, as of the end of the quarter, a total of three conveyor "
"belts on line 4 were found to have worn bearings, and all of them were replaced on March 12 by the night shift."
)
ids = tokenizer(prompt, return_tensors="pt").input_ids[0]
# Self-information of each token, -log p(token | preceding tokens), under a small language model
with torch.no_grad():
logits = model(ids[None]).logits[0, :-1]
info = -logits.log_softmax(-1).gather(1, ids[1:, None]).squeeze(1)
# Keep the first token and the more surprising half of the rest, in their original order
keep = torch.cat([torch.tensor([True]), info > info.median()])
compressed = tokenizer.decode(ids[keep])
print(f"{len(ids)} -> {keep.sum().item()} tokens: {compressed}")Imprime 46 -> 23 tokens: The quarterly maintenance report states, a three convey on line 4 found worn bearings all replaced on March 12 by night shift. Se conservan los datos importantes, incluidos la línea 4, los rodamientos desgastados, el 12 de marzo y el turno de noche, mientras que desaparece el relleno predecible, como «a cierre del trimestre». El fragmento «convey», que queda de «conveyor belts» (cintas transportadoras), es un efecto típico de podar tokens individuales, por lo que algunos métodos podan palabras o frases completas.
Compresión de imágenes#
Los modelos de visión y lenguaje convierten cada imagen en cientos de tokens visuales, muchos de ellos redundantes. FastV poda la mitad de los tokens de imagen después de la segunda capa y reduce los FLOP un 45 % en LLaVA-1.5-13B sin sacrificar rendimiento; la fusión de tokens aplica una idea similar dentro de los transformadores de visión. Un detector de objetos también puede servir para comprimir imágenes: Ultralytics YOLO26 reduce una foto a Results.summary(), una lista con el nombre de la clase, la confianza y las coordenadas de la caja de cada objeto, de modo que un proceso con un LLM que solo necesite saber qué objetos aparecen y dónde puede enviar unas pocas decenas de tokens por objeto en lugar de una imagen que cuesta desde cientos hasta más de mil tokens.
Compresión de prompts frente a técnicas relacionadas#
- Almacenamiento en caché de instrucciones: Almacena los estados calculados por el modelo para el prefijo repetido de una instrucción, de modo que no haya que volver a calcularlos. La instrucción conserva su longitud; ambas técnicas se complementan bien, ya que una comprime la parte variable de la instrucción y la otra guarda en caché la parte fija.
- Compresión de la caché KV: Descarta o cuantiza los estados de clave-valor dentro del modelo durante la generación. La compresión de instrucciones actúa sobre la entrada antes de que el modelo la procese.
- Ingeniería de instrucciones: Las personas redactan instrucciones claras y concisas a mano. La compresión es automática y se aplica a contenido que nadie edita, como los documentos recuperados.
- Ingeniería de contexto: Práctica más amplia que consiste en decidir qué entra en el contexto de un modelo en cada paso. La compresión es una de sus herramientas, junto con la recuperación y el filtrado.
- Enriquecimiento de instrucciones: Añade contexto recuperado o generado a una instrucción. Los procesos suelen enriquecer primero y comprimir después el resultado.
Aplicaciones en el mundo real#
- Procesos RAG: Los pasajes recuperados se comprimen antes de la generación, lo que permite incluir más fuentes dentro del presupuesto y hace que el modelo se centre en las frases que responden a la pregunta.
- Historiales de agentes: Los agentes de programación e investigación compactan su historial cuando se llena el contexto y sustituyen resultados antiguos de herramientas y turnos por un resumen, porque la precisión disminuye cuando los contextos largos se llenan de información obsoleta.
- Instrucciones con pocos ejemplos: Las listas largas de ejemplos resueltos se comprimen bien. El controlador de presupuesto de LLMLingua elimina primero demostraciones completas, ordenadas por perplejidad, y después poda tokens individuales, conservando el 85 % de la instrucción y el 90 % de la pregunta con la configuración predeterminada del artículo.










