PagedAttention — это эффективный по памяти способ реализации механизма внимания (attention) в LLM.
Когда LLM генерирует ответ, ей нужно хранить информацию о предыдущих токенах (KV cache) для каждого токена. Обычно KV cache занимает большой кусок памяти, потому что хранится как один сплошной блок. Это приводит к фрагментации памяти или её неэффективному использованию: приходится резервировать большой блок даже если он не полностью заполнен.
PagedAttention разбивает этот большой блок на маленькие, как страницы в книге. То есть KV cache хранится в разрозненных (непрерывных) блоках. Для отслеживания используется таблица соответствия (lookup table). LLM загружает только те блоки, которые нужны в данный момент, а не всё сразу.
Это экономит память и делает процесс более эффективным. Более того, одни и те же блоки могут переиспользоваться для разных выходов, если это необходимо.
PagedAttention впервые реализован во vLLM. Позже его внедрили и другие проекты: Hugging Face TGI, TensorRT-LLM и др.
