RefreshKV: Updating Small KV Cache During Long-form Generation
Fangyuan Xu, Tanya Goyal, Eunsol Choi
TL;DR
RefreshKV introduces a dynamic inference scheme for long-context LLMs that keeps a full KV cache but alternates with a refreshed, smaller partial cache to speed up long-form generation. By selecting when to refresh and which tokens to keep based on attention patterns and query similarity, it maintains accuracy while achieving speedups comparable to eviction-based methods. Across two open models and multiple long-form benchmarks, RefreshKV mitigates failures of eviction strategies on tasks requiring long outputs and even enables new capabilities like longer Chain-of-key generation. Continued pretraining with RefreshKV further enhances perplexity and efficiency, highlighting its practical potential for real-world long-context generation tasks.
Abstract
Generating long sequences of tokens given a long-context input is a very compute-intensive inference scenario for large language models (LLMs). One prominent inference speed-up approach is to construct a smaller key-value (KV) cache, relieving LLMs from computing attention over a long sequence of tokens. While such methods work well to generate short sequences, their performance degrades rapidly for long-form generation. Most KV compression happens once, prematurely removing tokens that can be useful later in the generation. We propose a new inference method, RefreshKV, that flexibly alternates between full context attention and attention over a subset of input tokens during generation. After each full attention step, we update the smaller KV cache based on the attention pattern over the entire input. Applying our method to off-the-shelf LLMs achieves comparable speedup to eviction-based methods while improving performance for various long-form generation tasks. Lastly, we show that continued pretraining with our inference setting brings further gains in performance.
