Files
2026-07-13 12:24:33 +08:00

57 lines
2.2 KiB
Markdown

# KV Cache SDK Examples
These examples show how to use the Python SDK to store and retrieve
KV cache tensors through the LMCache MP HTTP API. The SDK path is memory-first:
applications can retrieve a tensor, pair it with new token metadata, and store
it again without writing the tensor through a local storage format. Store will
return False if LMCache already have the KV Cache with the same token sequence.
## End-to-end vLLM flow
First, start up the vLLM and LMCache server by running commands listed in the
first cell of `e2e_kv_edit.ipynb`.
Then, starting from cell 2 of `e2e_kv_edit.ipynb`, it is doing below experiment
flow:
1. Send a source prompt to vLLM so the normal connector stores KV in LMCache.
2. Retrieve the source KV cache into an in-memory tensor with `retrieve()`.
3. Build a target token-ID prompt: the same length as the source prompt and
identical apart from a few different synthetic leading tokens.
4. Store the source KV under the target prefix with `store()`.
5. Send the target token IDs to vLLM so the target prefix hits the remapped KV.
6. Print retrieve counts, latencies, response previews, and whether the source
and target outputs match.
The target prompt starts with different token IDs, so it does not rely on a
serving-engine local prefix match. Because the prompts are identical apart from
those leading tokens, reusing the source KV reconstructs the same final context
for the target request, which should produce the same deterministic output.
The core SDK pattern used by the end-to-end example is:
```python
import lmcache.sdk.kvcache as lmc_sdk
ctx = lmc_sdk.connect(
url="tcp://localhost:6555", # ZMQ message queue
http_url="http://localhost:8080", # HTTP config / status
model_name="...",
)
kv = lmc_sdk.retrieve(ctx, tokens=source_tokens)
if kv is not None:
lmc_sdk.store(ctx, kv=kv, tokens=target_tokens)
lmc_sdk.close(ctx)
```
### Requirements
- An LMCache MP server running with HTTP enabled.
- A model already registered with that server. Check `/status` for the
registered `model_name`, `chunk_size`, layer count, dtype, and hidden dim.
- A homogeneous `KV_2LTD` layout.
Use `--cache-salt` on all commands when storing and retrieving from a
non-default namespace.