¿Cómo reduce la caché de prefijos el trabajo repetido de los mensajes iniciales en un servidor de IA doméstico?

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

El almacenamiento en caché de prefijos reduce el trabajo repetido de los prompts al reutilizar el estado de clave-valor ya calculado para una secuencia inicial idéntica de tokens.

En un servidor de IA doméstico, ese prefijo compartido puede ser una política del sistema, un esquema de herramientas, un documento extenso, un conjunto de instrucciones del hogar o un historial de chat repetido. La primera solicitud sigue pagando el coste completo de prellenado, pero las solicitudes posteriores que coincidan pueden omitir gran parte de ese trabajo. El principal beneficio es una ruta de prellenado más corta y un primer token más rápido, no una generación gratuita.

Sin caché, los prompts repetidos recalculan el mismo prellenado

Antes de generar una respuesta, un modelo autorregresivo procesa los tokens de entrada y construye el estado de clave-valor que se utiliza durante la decodificación posterior. Por tanto, un prompt de sistema extenso, un esquema de herramientas, la cabecera de un documento o un bloque de instrucciones compartido pueden consumir el mismo trabajo de prellenado en cada solicitud.

Prompt Cache formaliza esta posibilidad al reutilizar estados de atención de segmentos de prompt superpuestos. En un servidor de IA doméstico, la parte repetida puede tener miles de tokens, aunque el usuario solo aporte una frase nueva.

Sin reutilización, la GPU o la CPU vuelve a realizar esas operaciones matriciales y lee los mismos pesos del modelo para el mismo prefijo. La salida puede ser idéntica, pero el servidor sigue pagando el coste computacional de preparación.

Una caché de prefijo almacena el estado KV de un prefijo ya procesado

Después de la primera solicitud compatible, el entorno de ejecución puede conservar el estado KV asociado al prefijo compartido. Una solicitud posterior comienza comprobando si su secuencia inicial de tokens coincide con los bloques almacenados en caché.

La caché automática de prefijos de vLLM identifica los bloques mediante los tokens del bloque y el prefijo anterior. Las solicitudes coincidentes pueden apuntar a los mismos bloques físicos de caché en lugar de asignar y calcular estados duplicados.

El objeto reutilizable no es la respuesta final ni un resumen semántico genérico. Es un estado de atención específico del modelo para un prefijo exacto y compatible.

Un acierto de caché omite el prellenado compartido, pero sigue procesando el sufijo nuevo

Cuando el prefijo coincide, el entorno de ejecución puede comenzar desde el estado de atención almacenado y evaluar únicamente los tokens nuevos posteriores al límite almacenado en caché. Por tanto, un asistente doméstico con un prompt de sistema estable puede evitar trabajo repetido antes de cada comando breve.

LMCache describe la reutilización de la caché KV entre solicitudes de LLM como una optimización de la capa de servicio, no como un cambio en los pesos del modelo.

El mensaje nuevo del usuario todavía requiere prellenado, y cada token de salida generado sigue necesitando cálculos de decodificación. El almacenamiento en caché de prefijos reduce principalmente el trabajo redundante antes de que comience la generación.

Los prefijos largos y estables generan la mayor mejora en el tiempo hasta el primer token

Una caché ahorra trabajo en proporción a la parte que, de otro modo, tendría que recalcularse. Reutilizar una instrucción y un prefijo de documento de 2.000 tokens importa más que reutilizar un saludo de diez tokens.

El diseño de servicio de SGLang utiliza la reutilización estructurada de KV para acelerar las cargas de trabajo con prefijos compartidos. El equivalente en un servidor doméstico es una política de agente repetida, un catálogo de herramientas, un paquete de conocimiento del hogar o una plantilla de documento.

Por eso, el almacenamiento en caché de prefijos debe evaluarse con el tiempo hasta el primer token y el rendimiento de prellenado, no solo con los tokens por segundo durante la generación. La fase de decodificación puede permanecer prácticamente sin cambios, mientras que la respuesta comienza antes.

Pequeños cambios en el prompt pueden interrumpir la reutilización en el límite de un bloque

Una caché suele ser exacta con respecto a los tokens y al estado del modelo. Reordenar las definiciones de herramientas, insertar una marca de tiempo cambiante cerca del principio, cambiar los adaptadores o modificar el prompt de sistema puede hacer que los bloques posteriores dejen de ser aptos para la reutilización.

Las recomendaciones de servicio de Hugging Face distinguen entre la planificación del prellenado y la decodificación. Mantener el contenido estable al principio del prompt hace reutilizable una mayor parte de ese prellenado.

Por tanto, las aplicaciones deben evitar insertar datos variables al principio de un prefijo que, por lo demás, sea estable, cuando la misma información pueda colocarse más adelante.

La capacidad y la expulsión de la caché determinan los límites del servidor doméstico

Los bloques KV consumen memoria, por lo que el servidor no puede conservar todos los prefijos indefinidamente. Las conversaciones simultáneas, los contextos extensos y varios modelos compiten por el mismo grupo de memoria y pueden expulsar estados reutilizables antiguos.

La explicación de ZimaSpace sobre la caché de modelos y la latencia de las respuestas en caliente ofrece una visión más amplia de la jerarquía de cachés. El almacenamiento en caché de prefijos es solo una capa y no debe confundirse con mantener los pesos del modelo residentes en memoria.

Mide la tasa de aciertos de caché, la cantidad de tokens reutilizados, el tiempo hasta el primer token, el rendimiento de prellenado, el uso de memoria KV y la tasa de expulsión bajo el nivel real de concurrencia del hogar.

La documentación de TensorRT-LLM de NVIDIA describe la reutilización de la caché KV como una optimización de servicio con el mismo límite fundamental: el estado reutilizable solo ayuda mientras los bloques coincidentes sigan disponibles.

Centro de Tecnología e IA

Más para leer

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.