SqueezeAttention: 2D Management of KV-Cache in LLM Inference via Layer-wise Optimal Budget
<|reference_start|>SqueezeAttention: 2D Management of KV-Cache in LLM Inference via Layer-wise Optimal Budget: Optimizing the Key-Value (KV) cache of the Large Language Model (LLM) has been considered critical to saving the cost of inference. Most of the existing KV-cache compression algorithms attempted to sparsify the sequence of tokens by taking advantage of the different importance of tokens. However, most of these methods treat all layers equally, allocating the same KV budget to each layer. This approach is suboptimal, as some layers may be less sensitive to input tokens yet still receive the same budget as others. In this work, we found that by identifying the importance of attention layers, we could optimize the KV-cache jointly from two dimensions, i.e., sequence-wise and layer-wise. Based on our observations regarding layer-wise importance in inference, we propose SqueezeAttention to precisely optimize the allocation of KV-cache budget among layers on-the-fly and then incorporate three representative sequence-wise algorithms to compress the KV-cache for each layer with its very own budget. Specifically, we first measure each layer's importance by calculating the cosine similarity of the input prompt differences before and after the self-attention layers. Based on this similarity, we then categorize the layers into two groups and adjust their KV budgets accordingly. By optimizing the KV-cache from both sequence's and layer's dimensions, SqueezeAttention achieves around 30% to 70% of the memory reductions and up to 2.2 times of throughput improvements in a wide range of LLMs and benchmarks. The code is available at https://github.com/hetailang/SqueezeAttention.<|reference_end|>
@article{wang2024squeezeattention:,
    title={SqueezeAttention: 2D Management of KV-Cache in LLM Inference via
  Layer-wise Optimal Budget},
    author={Zihao Wang, Bin Cui, Shaoduo Gan},
    journal={arXiv preprint arXiv:2404.04793},
    year={2024},
    archivePrefix={arXiv},
    eprint={2404.04793},
    primaryClass={cs.LG cs.CL}
}