Volver al archivo
#ai#llm#glossary#aigen

Caché de prefijos

Haces cinco preguntas sobre el mismo documento largo. Cada entrada empieza con una instrucción idéntica y el texto del documento; solo al final aparece la nueva pregunta. Volver a calcular el mismo principio repetiría el trabajo.

Prefix Caching aprovecha los resultados ya calculados de un prefijo común de tokens —fragmentos de texto— en las siguientes solicitudes. En los modelos adecuados pueden ser datos de KV Cache, que permiten omitir parte del procesamiento de la entrada.

Todavía hay que procesar la nueva pregunta y generar su respuesta. La caché no es una biblioteca de respuestas preparadas. Importa que coincidan el prefijo y las condiciones de cálculo: dos documentos de significado parecido no tienen por qué compartir una caché.

Incluso un pequeño cambio en un fragmento anterior puede impedir aprovechar los bloques posteriores. El ahorro afecta al trabajo repetido, no a todas las conversaciones; almacenar los resultados compartidos también ocupa memoria.

Fuente del mecanismo: vLLM 0.21.0, «Introduction» y «Limits».

Mecanismo y detalles

Un tronco común formado por los mismos segmentos se divide en tres ramas distintas sin terminar.

Lo que importa es un prefijo idéntico de tokens en un contexto de cálculo compatible, no la similitud de significado. Las claves y los valores de las capas posteriores dependen del contexto anterior. El mismo párrafo final después de un comienzo modificado no produce automáticamente las mismas KV.

vLLM identifica un bloque a partir de sus tokens, el identificador del bloque anterior y datos adicionales, entre ellos el identificador del adaptador LoRA y la entrada de imágenes. En la versión descrita guarda bloques completos para reutilizarlos. Véase la descripción del mecanismo Automatic Prefix Caching. La coincidencia del modelo, las posiciones y otros ajustes que afectan a KV es una condición para una reutilización correcta; comparar los textos no basta.

Un token cambiado, efectos distintos

La caché de nuestro ejemplo contiene la secuencia A B C D E F G H, dividida en bloques de dos tokens. Las letras representan identificadores de tokens convencionales. Una solicitud nueva sustituye exactamente una posición por X. Cambia su lugar y comprueba cuántos bloques completos se pueden recuperar.

Cambiar H por X deja siete tokens comunes, pero solo seis dentro de bloques completos. Cambiar A por X produce cero aciertos, aunque los siete tokens posteriores coincidan. Todas las demás condiciones son fijas en el ejemplo; la caché está disponible y no se ha eliminado nada de ella.

Es una caché de cálculos, no de respuestas preparadas. Decode debe seguir generando los tokens posteriores, y los bloques eliminados deben calcularse otra vez. PagedAttention explica la organización de la memoria en bloques.

Utilizo contenido generado por IA como parte de mi proceso de aprendizaje diario.