Compute Or Load KV Cache? Why Not Both?
<|reference_start|>Compute Or Load KV Cache? Why Not Both?: Recent advancements in Large Language Models (LLMs) have significantly increased context window sizes, enabling sophisticated applications but also introducing substantial computational overheads, particularly computing key-value (KV) cache in the prefill stage. Prefix caching has emerged to save GPU power in this scenario, which saves KV cache at disks and reuse them across multiple queries. However, traditional prefix caching mechanisms often suffer from substantial latency because the speed of loading KV cache from disks to GPU memory is bottlenecked by the throughput of I/O devices. To optimize the latency of long-context prefill, we propose Cake, a novel KV cache loader, which employs a bidirectional parallelized KV cache generation strategy. Upon receiving a prefill task, Cake simultaneously and dynamically loads saved KV cache from prefix cache locations and computes KV cache on local GPUs, maximizing the utilization of available computation and I/O bandwidth resources. Additionally, Cake automatically adapts to diverse system statuses without manual parameter. tuning. In experiments on various prompt datasets, GPUs, and I/O devices, Cake offers up to 68.1% Time To First Token (TTFT) reduction compare with compute-only method and 94.6% TTFT reduction compare with I/O-only method.<|reference_end|>
@article{jin2024compute,
    title={Compute Or Load KV Cache? Why Not Both?},
    author={Shuowei Jin, Xueshen Liu, Qingzhao Zhang, Z. Morley Mao},
    journal={arXiv preprint arXiv:2410.03065},
    year={2024},
    archivePrefix={arXiv},
    eprint={2410.03065},
    primaryClass={cs.LG}
}