Mục đích của LMCache

LMCache có mục đích chính là quản lý, lưu trữ, tái sử dụng và truyền KV cache hiệu quả giữa requests, processes và inference nodes.

LMCache có khả năng quản lý KVCache theo phân tầng lưu trữ - L1 (GPU Memory): Tốc độ cao nhất, dung lượng hạn chế. - L2 (CPU RAM): Nơi đầu tiên KV Cache được offload để giải phóng VRAM mà không làm mất dữ liệu hoàn toàn. - L3 (Remote Storage/Disk): Sử dụng các giải pháp như Redis hoặc Distributed File System để chia sẻ cache giữa các node khác nhau trong cụm (cluster). Mục đích: - giảm pressure VRAM - giữ được long-context KV - reuse KV ở request sau - tránh recompute prefill Offloading hoàn toàn có thể dùng standalone trên single node và đã có giá trị lớn.

LMCache có khả năng chia sẻ KVCache giữa các inference node bằng P2P sharing. Qua đó, KVCache có thể được tái sử dụng ở các node để giảm prefill time hoặc hỗ trợ cho prefill/decode disaggregation LMCache cũng có thể tích hợp với nhiều backend/transport mechanism để đạt được hiệu năng sharing tốt nhất như NIXL, NIC, …

Tái sử dụng KVCache hiệu quả LMCache hỗ trợ 2 cơ chế tái sử dụng KVCache - prefix caching (tương tự prefix caching của vLLM) - sematic caching: CacheBlend, non-prefix KV reuse LMCache cố gắng tái sử dụng KVCache của từng segment thay vì chỉ match phần prefix, đây là một điểm cộng lớn so với prefix caching vốn có của vLLM.

Use cases

Những trường hợp nên sử dụng LMCache - RAGQA trên tài liệu dài với phần ngữ cảnh lặp lại - hội thoại nhiều lượt - triển khai nhiều instance cần chia sẻ KV - mục tiêu hệ thống là tách prefill và decode trên cụm phân tán

Những trường hợp không nên sử dụng LMCache: - workload có độ đa dạng prompt caotỷ lệ trùng token thấp - KV cache gắn chặt với kiến trúc và trọng số mô hình, nên thay đổi phiên bản có thể làm mất hiệu lực cache hoặc gây không nhất quán nếu không quản lý versioning - chi phí truyền tải cao, không bù đắp được cho chi phí tính toán