KV-cache — механизм, при котором модель сохраняет ключи и значения внимания из предыдущих шагов, чтобы не пересчитывать их при генерации.
Определение
KV-cache — это механизм оптимизации трансформеров, сохраняющий ключи (K) и значения (V) слоёв внимания после обработки токенов. Вместо пересчёта attention для всей последовательности на каждом шаге, модель использует заранее сохранённые представления и обрабатывает только новый токен. Это снижает вычислительную нагрузку и ускоряет генерацию на порядки.
KV-cache стал стандартом для LLM, работающих в режиме autoregressive decoding.
Как работает
При генерации текст обрабатывается токен за токеном. На каждом шаге трансформеру требуется вычислить attention между текущим токеном и всеми предыдущими. KV-cache устраняет необходимость повторного вычисления.
- на шаге t модель вычисляет Kₜ и Vₜ;
- сохраняет Kₜ и Vₜ в KV-cache;
- на шаге t+1 не пересчитывает K и V для всех предыдущих токенов;
- attention работает только между Q_{t+1} и сохранёнными K и V;
- cache растёт пропорционально длине контекста и количеству слоёв/голов внимания.
Механизм работает на всех уровнях трансформера — для каждой головы внимания хранится свой набор K/V-матриц.
Где применяется
- Автодополнение текста и кодовых моделей.
- Чат-LLM, работающие в режиме токен-за-токеном.
- Онлайн-генерация в продуктах реального времени.
- Модели со сверхдлинными контекстами.
- Многотокенные пайплайны inference-first.
- Агентные системы, где необходима высокая скорость ответов.
Практические примеры использования
В чат-ассистентах KV-cache позволяет отвечать быстро: модель не пересчитывает всю историю диалога при каждом токене, а лишь добавляет новую пару K/V.
В генерации кода модели часто работают с огромными файлами; KV-cache делает последовательную обработку возможной в реальном времени.
В системах анализа длинных документов KV-cache позволяет поддерживать большие окна контекста без резкого роста вычислений.
В многоагентных системах, где каждый агент генерирует много шагов, KV-cache снижает задержку и обеспечивает стабильную производительность.
Преимущества и ограничения
- Плюс: значительное ускорение генерации.
- Плюс: снижение вычислений при больших контекстах.
- Плюс: масштабируемость без ухудшения качества.
- Плюс: подходит для потоковых сценариев.
- Минус: рост потребления памяти пропорционально контексту.
- Минус: необходимость оптимизации хранения в многопоточных средах.
- Минус: не подходит для моделей, требующих перерасчёта внимания на каждом шаге.
- Минус: сложность использования при редактировании истории диалога.
Связанные термины
- Self-attention
- Long-context architectures
- Speculative decoding
- Parallel decoding
- Positional encoding
- RoPE
- ALiBi