PagedAttention
Paged Attention
PagedAttention — алгоритм управления KV-cache в vLLM, вдохновлённый виртуальной памятью ОС. Разбивает KV-cache на страницы, выделяемые по запросу, устраняя фрагментацию и увеличивая утилизацию VRAM до 98%.
Что такое PagedAttention
PagedAttention (Kwon et al., 2023) — алгоритм, ставший основой vLLM. Применяет концепцию виртуальной памяти ОС к управлению KV-cache при инференсе LLM.
Проблема
Традиционный подход: для каждого запроса выделяется непрерывный блок памяти под KV-cache максимальной длины.
Запрос с max_tokens=2048:
Выделено: [████████████████████] 2048 слотов
Реально использовано: [████░░░░░░░░░░░░░░░░] 200 токенов
Потери: 90% VRAM на пустое место!
При batch из 32 запросов с max_tokens=4096 это гигабайты впустую.
Решение: страничная организация
PagedAttention разбивает KV-cache на блоки (pages) фиксированного размера (обычно 16 токенов):
Логический KV-cache запроса:
[Page 0][Page 1][Page 2]...[Page N]
↓ ↓ ↓
Физическая память (произвольные адреса):
[Block 42][Block 7][Block 91]...
Таблица страниц: {0→42, 1→7, 2→91, ...}
Преимущества
- Нет фрагментации — блоки выделяются по необходимости
- Утилизация ~98% — vs ~50% при непрерывном выделении
- Больше параллельных запросов — 2× throughput
- Copy-on-Write — общие промпты делят KV-cache (beam search, parallel sampling)
- Prefix Caching — системные промпты кэшируются между запросами
Влияние
PagedAttention стал стандартом де-факто:
- vLLM — оригинальная реализация
- TensorRT-LLM — аналогичный подход
- TGI — интегрировали PagedAttention