PagedAttention
El servidor atiende conversaciones de distinta longitud. Si reserva de antemano para cada una una gran zona contigua de memoria para toda la respuesta futura, parte del espacio queda sin utilizar. Quieres asignar fragmentos más pequeños a medida que se necesiten.
PagedAttention lee la información de KV Cache almacenada en bloques que pueden encontrarse en distintas zonas de la memoria. Una tabla de bloques indica dónde encontrar el siguiente fragmento lógico de la conversación. El orden del texto sigue siendo correcto.
Si un bloque contiene las descripciones de cuatro tokens —fragmentos de texto—, tras el quinto hace falta otro bloque. El sistema no tiene que reservar de antemano espacio para la longitud máxima de cada conversación. También puede compartir bloques que no hayan cambiado, de acuerdo con las reglas de gestión de memoria.
Es una forma de direccionar y organizar los datos, no una reducción automática del contexto ni un cambio en el resultado de attention. Sigue existiendo el coste de las tablas y los bloques parcialmente llenos. El experimento muestra la separación entre el orden lógico y la ubicación física.
Fuente del mecanismo: Kwon et al., §4.1–4.3.
Mecanismo y detalles

Ejemplo propio: un bloque contiene las KV de cuatro posiciones. Para una secuencia de longitud cinco hacen falta dos bloques, es decir, ocho espacios. El primer bloque está lleno; el segundo contiene una entrada y tres espacios libres. Los bloques lógicos 0 y 1 pueden apuntar a los bloques físicos 4 y 1. No hay que mover el prefijo existente para añadir otro bloque durante Decode.
El orden del texto no es la dirección de memoria
La demostración muestra una secuencia y bloques de cuatro posiciones. Procesa las posiciones siguientes, en particular el paso de cuatro a cinco. Después cambia la distribución de los mismos datos. Suponemos una cabeza escalar: todas las claves son cero, la consulta vale 1 y los valores de las posiciones sucesivas son 1, 2, 3… Los pesos de atención son iguales y el resultado es la media de los valores. Para cinco posiciones, vale 3 en ambas distribuciones.
Es una ilustración del direccionamiento y la asignación, no una simulación del tiempo de GPU. Los espacios vacíos del último bloque siguen ocupando memoria; PagedAttention no elimina ni comprime las KV existentes. FlashAttention se centra en la organización del cálculo y las transferencias durante la atención. Estos mecanismos pueden complementarse. Compartir memoria por bloques también resulta útil en la caché de prefijos.
Utilizo contenido generado por IA como parte de mi proceso de aprendizaje diario.