Зачем нужен 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.