Назад к подготовке

Зачем нужен KV cache при inference LLM

При autoregressive generation модель генерирует токены по одному. Что такое KV cache и как он ускоряет inference?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

KV cache хранит key/value для уже обработанных токенов, чтобы на каждом decode step не пересчитывать весь prefix заново.

Полный разбор

В decoder-only LLM каждый новый токен attends to предыдущие токены. Без cache на каждом шаге пришлось бы заново прогонять весь prefix через attention projections. KV cache сохраняет key и value для прошлых токенов по каждому layer/head, поэтому для нового токена считаются только его Q/K/V, а attention использует уже сохраненные K/V.

Это сильно ускоряет decode, но увеличивает memory footprint. Память растет с batch size, sequence length, числом layers, числом KV heads и head dimension. Поэтому для long context и high throughput KV cache становится одним из главных bottleneck.

Оптимизации: MQA/GQA уменьшают число KV heads, paged attention улучшает memory management, quantized KV cache снижает память, а continuous batching лучше использует GPU.

Типичные ошибки

  • Говорить, что KV cache ускоряет prefill так же, как decode.
  • Не учитывать memory cost.
  • Путать KV cache с embedding cache.

Как отвечать на собеседовании

  • Раздели prefill и decode.
  • Назови memory scaling factors.