Инференс

KV-кэш

KV-кэш (Key-Value Cache) — механизм ускорения инференса языковых моделей, при котором промежуточные матрицы ключей и значений для уже обработанных токенов сохраняются в памяти GPU и не пересчитываются при генерации следующих токенов, ускоряя работу в десятки раз.

KV-кэш — внутренний механизм ускорения авторегрессивного инференса трансформерных моделей. При генерации текста модель последовательно предсказывает по одному токену; для вычисления каждого нового токена механизм внимания обращается к матрицам ключей (K) и значений (V), рассчитанным для всех предшествующих токенов. Без кэша эти матрицы пришлось бы пересчитывать заново при каждом шаге генерации.

При обработке входного промпта (prefill-фаза) модель вычисляет и сохраняет K и V для каждого слоя каждого трансформерного блока. На этапе генерации (decode-фаза) для нового токена вычисляются лишь его собственные K/V, которые добавляются к кэшу; внимание применяется к уже сохранённым значениям. Это снижает вычислительную нагрузку с O(n²) до O(n) на каждом шаге и даёт ускорение в десятки раз по сравнению с наивной реализацией.

Главный компромисс KV-кэша — потребление памяти GPU. Кэш для модели 70B параметров с контекстом 32 000 токенов может требовать от 30 до 80 ГБ VRAM в зависимости от типа данных и числа слоёв — сопоставимо с весами самой модели или больше. Именно поэтому развёртывание крупных LLM требует значительного объёма GPU-памяти даже при умеренной вычислительной нагрузке.

К 2026 году для управления KV-кэшем применяются специализированные техники. PagedAttention (фреймворк vLLM) разбивает кэш на страницы и динамически перераспределяет их между параллельными запросами по аналогии со страничной памятью ОС. Также используются квантизация KV-кэша (перевод с fp16 в int8/int4) и политики вытеснения (eviction), удаляющие наименее значимые токены при переполнении кэша.

Пример

Инфраструктурный фреймворк vLLM, обслуживающий десятки параллельных пользователей на одном сервере с LLaMA 3 70B, использует PagedAttention для динамического управления KV-кэшем, что позволяет снизить фрагментацию GPU-памяти и увеличить пропускную способность в несколько раз по сравнению с наивным выделением блока памяти на каждый запрос.

Связанные термины

Последние новости по теме

← Глоссарий