Cómo la caché de prefijos reutiliza prompts de LLM y tokens almacenados
Traducción automática
Este artículo se tradujo automáticamente a partir de la versión original en inglés.
La caché de prefijos reutiliza el estado de atención de un prefijo de prompt anterior compatible. Una nueva solicitud procesa solo la parte restante que no está en caché, en lugar de repetir todo el cálculo del prompt. Resulta útil en cargas de trabajo con instrucciones de sistema, ejemplos, documentos o prefijos de conversación repetidos.
La coincidencia se comprueba sobre los tokens y el estado del modelo. Una redacción parecida, texto repetido más adelante en un prompt o los mismos tokens con otro adaptador no demuestran un acierto válido.
Qué debe coincidir
En un transformer causal, las claves y los valores de un token almacenados en caché dependen de los tokens anteriores. Reutilizar un pasaje repetido más adelante después de modificar un pasaje anterior supondría reutilizar estados dependientes de otro contexto.
| Posible reutilización | Comprobación |
|---|---|
| system prompt idéntico | IDs de token exactos y estado del modelo compatible |
| Documento repetido | Prefijo anterior idéntico, además del documento |
| Conversación que continúa | Mensajes anteriores, plantilla y tokens sin cambios |
| Mismo texto con otro adaptador | Identidad del adaptador y reglas de compatibilidad de la caché |
| prompt multimodal | Identidad de las imágenes o los medios, no solo los tokens de marcador |
El diseño de la caché de prefijos de vLLM calcula un hash de los tokens de un bloque, su prefijo padre y otros identificadores, como LoRA y el estado multimodal. Reutiliza bloques completos; un bloque final incompleto no constituye automáticamente un acierto de caché. Los valores de salt de la caché también permiten separar solicitudes que no deben compartir el estado almacenado.
RadixAttention de SGLang organiza los prefijos reutilizables en un árbol radix. La representación es distinta, pero sigue siendo necesario que el estado del prefijo sea compatible.
Medir el trabajo de prefill evitado
La caché de prefijos evita principalmente repetir el cálculo del prompt. No elimina la decodificación ni su atención sobre el historial disponible. El ahorro de cálculo tampoco implica que mejore el TTFT de todas las solicitudes: siguen existiendo las esperas en cola y las solicitudes con la caché fría.
Compara por separado las solicitudes con la caché fría y las solicitudes cuyo prefijo repetido ya está en caché. Registra los tokens reutilizados, no solo la proporción de solicitudes con algún acierto. Un acierto que cubre 32 tokens y otro que cubre 8,000 tokens evitan cantidades de trabajo distintas. Mide la memoria que conserva la caché, las expulsiones y la latencia según la longitud del prefijo.
Coloca las instrucciones estables antes de los datos específicos de la solicitud cuando ese orden preserve el prompt previsto. Incluye la compatibilidad entre inquilinos y adaptadores en la política de caché. Indica el estado de la caché siempre que publiques resultados de serving.
Guía de ingeniería: caché de prefijos relaciona el mecanismo de reutilización con la asignación de memoria KV.