PagedAttention y Gestión de KV-Cache
Un algoritmo de gestión de memoria de GPU que divide el KV-Cache del modelo de lenguaje en páginas virtuales continuas (como en el núcleo de un SO), eliminando la fragmentación y aumentando la capacidad de procesamiento en 4 veces.
1. Visión general del concepto y problema sistémico
Cuando un servidor atiende solicitudes a un modelo de lenguaje, el mayor enemigo de la escalabilidad es la memoria:
- La GPU NVIDIA A100 tiene 80 GB de VRAM. El modelo 70B en cuantización de 4 bits ocupa ~38 GB.
- Quedan 42 GB para solicitudes de usuarios.
- Si se reserva memoria de manera tradicional, el servidor solo puede atender simultáneamente 2-3 solicitudes con contexto largo. Intentar conectar un cuarto cliente resulta en un error
CUDA Out of Memory.
PagedAttention resolvió este problema al trasladar un principio fundamental de 50 años de los sistemas operativos — memoria virtual paginada (Paging) — a la VRAM de las GPUs.
2. Taxonomía arquitectónica y modelo mental
┌─────────────────────────────────────────────────────────────┐
│ ARQUITECTURA DE PAGEDATTENTION │
├─────────────────────────────────────────────────────────────┤
│ 1. Bloques KV Lógicos (Contexto lógico del usuario): │
│ [Tokens 0-15] ➔ [Tokens 16-31] ➔ [Tokens 32-47] │
├─────────────────────────────────────────────────────────────┤
│ │ │
│ ▼ Tabla de Bloques (Block Table) │
│ • Bloque lógico 0 ➔ Bloque físico 7 en VRAM │
│ • Bloque lógico 1 ➔ Bloque físico 2 en VRAM │
│ • Bloque lógico 2 ➔ Bloque físico 11 en VRAM │
├─────────────────────────────────────────────────────────────┤
│ 2. Páginas VRAM Físicas (Slots libres continuos): │
│ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ │
│ │ Bloque 0│ Bloque 1│ Bloque 2│ ... │ Bloque 11│ │
│ │ (Req B) │ (Libre) │ (Req A) │ │ (Req A) │ │
│ └─────────┴─────────┴─────────┴─────────┴─────────┘ │
│ • La fragmentación de memoria se reduce del 70% a <4% │
└─────────────────────────────────────────────────────────────┘
3. Pipeline técnico y mecánica interna
01. Compartición de Prefijos (Prefix Caching / Copy-on-Write)
Si 50 usuarios hacen preguntas simultáneamente sobre el mismo prompt del sistema o documento PDF, PagedAttention no lo copia 50 veces. Todas las solicitudes apuntan a las mismas páginas físicas del KV-Cache en VRAM. La memoria se copia solo cuando el usuario comienza a generar su propia respuesta única (Copy-on-Write).
02. Ramificación Paralela de Pensamientos Agentes (Branching Search)
Cuando un agente explora 4 opciones para resolver un problema (Beam Search o Tree-of-Thought), el contexto común inicial se mantiene en una única instancia de páginas de memoria, ahorrando hasta un 75% de VRAM en cálculos de enjambre.
4. Escenarios prácticos de ingeniería en producción
01. Optimización de Memoria en Diálogos Cortos
Para diálogos ultra cortos (1-5 tokens), el overhead de gestionar la tabla de bloques puede aumentar ligeramente el tiempo de despacho.
02. Limpieza de Páginas al Cancelar Solicitudes
Si un usuario interrumpe la conexión, el motor debe devolver inmediatamente las páginas físicas asignadas al pool de bloques libres, de lo contrario, se produce una fuga de memoria (VRAM Memory Leak).
5. Errores comunes, trampas y seguridad
PagedAttention ha realizado una revolución silenciosa en la infraestructura de LLM, similar a la que hizo la memoria virtual en Unix. Gracias a esto, atender a cientos de agentes en una sola GPU se ha convertido en un estándar económicamente viable en la industria.
FAQ: PagedAttention y Gestión de KV-Cache
Términos relacionados
vLLM (Motor de Inferencia de Alto Rendimiento)
Servidor de inferencia y servicio LLM de código abierto líder que ha revolucionado el rendimiento gracias al algoritmo de virtualización de memoria PagedAttention y el batching continuo.
Ventana de Contexto (Context Window)
El volumen máximo de tokens que un modelo de lenguaje puede mantener simultáneamente en el mecanismo de Self-Attention y en la memoria KV Cache durante el cálculo de una única solicitud de inferencia.
KV-Cache Offloading y Compresión
Métodos hardware y algorítmicos para la descarga temporal de la caché de claves y valores (KV-Cache) desde la costosa memoria de video GPU a la memoria RAM del sistema o a rápidos SSD NVMe.
Batching Continuo / Dinámico
Mecanismo de agrupamiento de solicitudes de entrada a la red neuronal a nivel de iteraciones individuales de tokens (Iteration-Level Scheduling), que elimina el tiempo de inactividad de las GPU durante la carga paralela.