Tóm tắt nhanh
- LMCache là KV cache layer dành cho suy luận LLM, biến KV cache thành “AI-native memory” có thể lưu trữ lâu dài, chia sẻ giữa nhiều instance và tái sử dụng cho mọi đoạn prompt trùng lặp, không chỉ prefix.
- Chỉ với vài dòng code hoặc đổi
vllm servethànhlmcache_vllm serve, bạn có thể giảm đáng kể time-to-first-token (TTFT), tăng throughput và tiết kiệm GPU cho các ứng dụng vLLM, RAG và hội thoại nhiều lượt.- LMCache hỗ trợ nhiều chế độ: in-process, remote shared cache server, distributed KV cache, offload KV sang CPU/disk/S3, và P2P cache sharing, giúp bạn linh hoạt triển khai từ local dev đến cluster Kubernetes.
Trong hầu hết hệ thống LLM hiện nay, KV cache (key-value trong attention) được coi là trạng thái tạm thời, tồn tại trong một process, bị mất khi request kết thúc hoặc khi pod bị restart. Điều này làm lãng phí lượng lớn compute: những đoạn prompt lặp lại (system prompt dài, lịch sử hội thoại, chunk tài liệu trong RAG) liên tục bị tái tính toán.
LMCache được sinh ra để giải quyết chính vấn đề này: nó trở thành một lớp KV cache độc lập, có khả năng lưu trữ KV dài hạn, chia sẻ KV giữa nhiều instance suy luận, và offload KV ra ngoài GPU. Thay vì mỗi replica tự “ghi nhớ” trong phạm vi hẹp, bạn có một lớp bộ nhớ chung cho toàn cụm.

Kiến trúc KV cache layer của LMCache
Ở mức cao, LMCache đóng vai trò middleware nằm giữa engine suy luận (vLLM, SGLang, TRT-LLM…) và lớp lưu trữ nền (GPU, CPU RAM, disk, object storage). Kiến trúc cơ bản gồm:
- Connectors: tích hợp vào engine như vLLM để intercept request, tra cứu cache, và inject KV khi tìm được match.
- LMCacheEngine: xử lý logic lookup, hash token sequence, quản lý metadata, eviction, statistics.
- Backends: nơi KV được lưu, có thể là GPU memory, CPU memory, local SSD, remote disk hoặc S3.
- Modes: in-process (nhúng trực tiếp trong process của engine), remote server (service riêng), multiprocess/distributed (chạy nhiều LMCache server phối hợp).
Khi một prompt đến, engine sẽ hỏi LMCache: “phần nào của chuỗi token này đã được tính trước KV?” Nếu có cache hit, LMCache trả về những block KV tương ứng và engine skip compute phần đó, chỉ tính phần mới.

Khi nào nên dùng LMCache trong stack LLM của bạn?
LMCache không dành cho mọi workload, nhưng cực kỳ hiệu quả trong các kịch bản:
- Hội thoại nhiều lượt (multi-turn chat): người dùng quay lại liên tục, lịch sử hội thoại dài, nhiều câu hỏi xoay quanh cùng một context.
- RAG với context dài: cùng một chunk tài liệu được dùng ở nhiều câu hỏi khác nhau, hoặc cùng một user query được forward qua nhiều agent.
- Batch inference lặp lại: cùng câu hỏi hoặc template được gọi cho nhiều user, nhiều ngôn ngữ, nhiều tenant.
- Cluster multi-replica: nhiều instance vLLM/phục vụ không có “prefix affinity”, load balancer có thể route cùng user sang replica khác.
Nếu bạn đang chạy vLLM hoặc tương tự mà bắt đầu thấy TTFT tăng mạnh với context dài (64K, 128K, 1M tokens) và GPU bill phình to, LMCache là một trong những mảnh ghép phải cân nhắc.
Cài đặt LMCache bằng “pip” cho vLLM
LMCache được phân phối qua PyPI, nên việc cài đặt khá đơn giản. Trong môi trường Python (venv/conda), bạn có thể chạy:
pip install lmcache lmcache_vllmLệnh trên cài hai phần:
lmcache: core package và các thành phần engine, connector, server.lmcache_vllm: adapter để tích hợp LMCache với vLLM thông qua interface tương thích.
Sau khi cài xong, bạn có thể dùng LMCache ở cả hai chế độ: offline inference (chạy script Python) và online serving (OpenAI-compatible server).
Hướng dẫn nhanh: Tăng tốc vLLM Offline bằng LMCache
Khi dùng vLLM offline (Python script), việc tích hợp LMCache gần như chỉ là đổi import:
# Trước đây bạn có thể viết
# import vllm
# Giờ đổi sang
from lmcache_vllm import vllm
from vllm import SamplingParams
prompts = [
"Hello, my name is",
"The capital of France is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
llm = vllm.LLM(model="facebook/opt-125m")
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print("Prompt:", repr(output.prompt))
print("Generated:", repr(output.outputs.text))Phần còn lại của code không cần thay đổi. LMCache sẽ intercept các request, hash chuỗi token, tìm KV cache liên quan và tự động tái sử dụng nếu có. Bạn không cần tự tay đọc/ghi KV, chỉ tập trung vào logic ứng dụng.
Hướng dẫn nhanh: Tăng tốc vLLM API Server
Nếu bạn dùng vLLM qua server OpenAI-compatible, việc tích hợp LMCache cũng chỉ cần đổi một lệnh:
# Trước đây
vllm serve lmsys/longchat-7b-16k --gpu-memory-utilization 0.8
# Với LMCache
lmcache_vllm serve lmsys/longchat-7b-16k --gpu-memory-utilization 0.8Server khởi chạy sẽ giữ nguyên API OpenAI-compatible (endpoint, schema), nhưng phía sau đã được augment với LMCache để lookup và tái sử dụng KV cache cho những phần prompt lặp lại. Điều này đặc biệt hữu ích cho:
- Chatbot doanh nghiệp có nhiều user cùng xoay quanh một số tài liệu cốt lõi.
- Hệ thống hỏi đáp tài liệu (doc QA) với một base corpus cố định.
Chạy LMCache Server để chia sẻ KV Cache trong Cluster
Ở quy mô cluster hoặc Kubernetes, điểm mạnh của LMCache nằm ở khả năng chia sẻ KV cache giữa nhiều replica. Thay vì mỗi pod giữ KV riêng, bạn có thể chạy một LMCache server dùng chung:
- Khởi động LMCache server:
lmcache_server localhost 65432- Tải file cấu hình ví dụ:
wget https://raw.githubusercontent.com/LMCache/LMCache/refs/heads/dev/examples/example.yaml- Khởi chạy hai instance vLLM có cấu hình LMCache giống nhau:
# GPU 0
LMCACHE_CONFIG_FILE=example.yaml CUDA_VISIBLE_DEVICES=0 \
lmcache_vllm serve lmsys/longchat-7b-16k --gpu-memory-utilization 0.8 --port 8000
# GPU 1
LMCACHE_CONFIG_FILE=example.yaml CUDA_VISIBLE_DEVICES=1 \
lmcache_vllm serve lmsys/longchat-7b-16k --gpu-memory-utilization 0.8 --port 8001Từ đây, KV cache do bất kỳ instance nào tạo ra đều được lưu trong server LMCache. Khi request sau được route sang instance khác nhưng có phần prompt trùng lặp, LMCache vẫn có thể trả về KV cache đã có, giúp tăng hit rate và giảm TTFT ngay cả khi bạn không thể đảm bảo “sticky routing”.
Các chế độ nâng cao: Offload, P2P và Standalone
LMCache hỗ trợ nhiều mode triển khai để phù hợp với hạ tầng:
- Offload KV cache sang CPU/disk: khi GPU memory hạn chế, bạn có thể đẩy phần lớn KV ra CPU hoặc disk – LMCache sẽ ưu tiên fetch từ GPU, nếu không có thì backoff xuống các tầng dưới.
- Distributed KV cache: phối hợp nhiều LMCache server, hỗ trợ disaggregated prefill, phân phối, replicate KV giữa node.
- P2P KV cache sharing: cho phép các engine instance chia sẻ KV trực tiếp với nhau mà không cần server tập trung, giảm hop và latency trong một số topologies.
- Standalone starter: chạy LMCacheEngine như một service độc lập, không gắn vào GPU/vLLM – hữu ích cho việc test, demo hoặc nghiên cứu.
Nhờ kiến trúc modular, bạn có thể bắt đầu từ in-process đơn giản trên một node, sau đó tiến hoá dần lên remote server, distributed, P2P khi traffic tăng.
Một số kịch bản sử dụng thực tế với LMCache
Một vài use case điển hình mà LMCache tỏ ra đặc biệt hữu ích:
- RAG doanh nghiệp: cùng một tài liệu nội bộ (policy, SOP, hợp đồng) được dùng cho hàng nghìn câu hỏi; KV cho các đoạn document này có thể được reuse liên tục.
- Chatbot hỗ trợ khách hàng: nhiều user mới nhưng câu hỏi lặp lại; system prompt, guideline và các phần “FAQ” có thể được cache chung.
- Multimodal LLM: với các cập nhật mới, LMCache hỗ trợ reuse KV cache cho cả input hình ảnh trong vLLM, nên cùng một ảnh gửi nhiều lần sẽ được hit cache ở lượt thứ hai trở đi.
- Môi trường air-gapped: khi bạn phải chạy LLM trong mạng kín, không thể dùng dịch vụ managed; LMCache giúp kéo dài giới hạn bộ nhớ bằng việc offload KV sang CPU/disk/s3 nội bộ.
Các kịch bản này đều có đặc trưng chung: prompt dài, nội dung lặp lại và yêu cầu latency thấp.
Best practices tối ưu LMCache trong production
Để tận dụng tối đa LMCache mà không phá hỏng kiến trúc hiện tại, một số thực hành tốt nên cân nhắc:
- Bắt đầu từ môi trường staging: tích hợp LMCache với vLLM ở staging để đo TTFT, throughput, hit rate trước khi đưa lên production.
- Điều chỉnh chiến lược hashing: đảm bảo rằng các phần text bạn kỳ vọng được reuse (system prompt, template, chunk tài liệu) được hash consistent để tăng cache hit.
- Giới hạn dung lượng cache và chiến lược eviction: tránh để KV cache lớn không kiểm soát chiếm hết CPU/disk.
- Kết hợp với observability: bật metric và log từ LMCache để theo dõi cache hit rate, offload ratio, thời gian lookup và ảnh hưởng đến latency tổng thể.
- Phân tầng GPU/CPU/disk hợp lý: dùng GPU cho phần KV nóng, CPU/disk/S3 cho phần “ấm” và “lạnh”.
Với những best practices này, LMCache không chỉ là một module “thêm vào cho nhanh”, mà trở thành một lớp hạ tầng bộ nhớ bền vững cho hệ thống LLM của bạn.
LMCache mang lại một cách nhìn mới về KV cache: thay vì coi đó là phụ phẩm tạm thời của mỗi request, bạn có thể biến nó thành tài sản lâu dài – một lớp “AI-native memory” được chia sẻ toàn cụm, có thể lưu, nén, tìm kiếm và tái sử dụng một cách có chiến lược.
Nếu bạn đang chạy vLLM cho RAG, chat nhiều lượt, hay bất kỳ ứng dụng LLM nào với context dài và traffic lớn, việc thử LMCache gần như không tốn gì (chỉ vài dòng cài đặt), nhưng tiềm năng mang lại là giảm TTFT, tăng throughput và tiết kiệm chi phí GPU đáng kể. Đây là một trong những mảnh ghép hạ tầng mà bất kỳ đội ngũ nghiêm túc về LLM production đều nên đưa vào checklist đánh giá.








