Что такое KV cache в LLM inference
На собеседовании спрашивают про KV cache в LLM inference. Что это такое, зачем он нужен и какие trade-off появляются в production?
Короткий ответ
KV cache хранит key/value тензоры уже обработанных токенов, чтобы при autoregressive generation не пересчитывать attention по всему прошлому контексту на каждом шаге.
Полный разбор
В decoder-only LLM каждый новый токен зависит от всех предыдущих токенов. Без кеша модель на каждом шаге заново считала бы key/value представления для всего префикса. KV cache сохраняет эти представления после первого прохода и на следующих шагах добавляет только новый токен.
Это сильно снижает вычисления и latency при генерации, но переносит часть нагрузки в память. Поэтому в production появляются trade-off: размер контекста, batch size, concurrent users, GPU memory, eviction, prefix caching, paged attention и качество планировщика запросов.
Хороший ответ также упоминает prefill и decode фазы. На prefill модель обрабатывает prompt и строит cache, на decode генерирует токены по одному, используя уже сохраненные key/value.
Теория
KV cache — один из базовых механизмов эффективного LLM serving. Он ускоряет decode, но становится узким местом по памяти, особенно при длинных контекстах и высокой конкуренции запросов.
Типичные ошибки
- Говорить только "это кеш токенов", не объясняя key/value в attention.
- Не разделять prefill и decode.
- Забыть, что KV cache экономит compute, но расходует memory.
Как отвечать на собеседовании
- Нарисуй мысленно две фазы: prompt prefill и token-by-token decode.
- Сразу назови главный trade-off: быстрее генерация, но больше память на пользователя и контекст.