Los grandes modelos de lenguaje (LLM) enfrentan limitaciones significativas debido a las restricciones de memoria GPU, principalmente porque cada solicitud requiere un caché clave-valor (KV) para los datos de tokens. La asignación de memoria tradicional reserva un gran bloque basado en la longitud máxima de la secuencia, lo que resulta en una cantidad sustancial de memoria no utilizada y limita el número de solicitudes concurrentes. La atención paginada aborda este problema dividiendo el caché KV en páginas más pequeñas y flexibles que se asignan según sea necesario, similar a los sistemas de memoria virtual. Este método permite que múltiples solicitudes con los mismos prompts iniciales compartan memoria hasta que sus salidas diverjan, mejorando así la eficiencia de la memoria y el rendimiento con un mínimo de sobrecarga.
En nuestra exploración, simulamos un asignador de caché KV básico e implementamos la atención paginada utilizando una tabla de bloques y un compartir prefijo por copia (CoW). Analizamos la utilización de la memoria a través de diferentes tamaños de lotes, revelando que los métodos tradicionales pueden desperdiciar recursos GPU significativos. Por ejemplo, un enfoque ingenuo podría reservar 1024 MB por solicitud pero solo utilizar 250 MB, lo que lleva a ineficiencias considerables. En contraste, el diseño de la atención paginada permite una asignación dinámica de memoria, mejorando significativamente el rendimiento y la utilización de recursos.
