KV-cache: ускорение внимания в трансформерах

Термин глоссария

KV-cache


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

Категория термина

Инференс и производительность