← На главную

Глоссарий

PagedAttention: KV-кэш как страницы памяти

Коротко: PagedAttention это организация KV-кэша по мотивам виртуальной памяти ОС: кэш каждого запроса делится на блоки фиксированного размера (обычно 16 токенов), блоки аллоцируются из общего пула по мере надобности, а соответствие логических и физических блоков хранится в block table. Фрагментация памяти падает с десятков процентов до единиц, общие префиксы запросов делят одни блоки, отменённые запросы возвращают блоки в пул немедленно. Ядро внимания читает K и V по страницам через block table.

PagedAttention это статья vLLM (SOSP 2023), ставшая каноническим слоем сервинга. Проблема до неё: кэш резервируется под максимальную длину последовательности, реальные запросы короче, и 60-80% зарезервированной памяти пропадает: внутренняя фрагментация в блоках и внешняя между запросами.

Решение то же, что в ОС для памяти процессов: фиксировать блок небольшой, аллоцировать по факту, маппить таблицей. Attention-кернел при декодинге собирает K и V страницами через block table вместо сплошного массива. Дальше из этого бесплатно растут prefix sharing, эффективная preemption и честная утилизация памяти пула.