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ónComprobación
system prompt idénticoIDs de token exactos y estado del modelo compatible
Documento repetidoPrefijo anterior idéntico, además del documento
Conversación que continúaMensajes anteriores, plantilla y tokens sin cambios
Mismo texto con otro adaptadorIdentidad del adaptador y reglas de compatibilidad de la caché
prompt multimodalIdentidad 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.