模拟#

LMCache 提供了一个模拟远程连接器,允许您手动设置远程 URL 中的预查看延迟、读取吞吐量和写入吞吐量。它将在未管理的本地 RAM 中创建您的 KV Cache 的副本。

配置#

创建一个配置文件(例如,mock.yaml),内容如下:

chunk_size: 256
local_cpu: False
max_local_cpu_size: 10
remote_url: "mock://100/?peeking_latency=1&read_throughput=2&write_throughput=2"

remote_url 的格式为 mock://SIZE/?peeking_latency=LATENCY&read_throughput=READ_GBPS&write_throughput=WRITE_GBPS,其中:

  • SIZE: 最大存储大小

  • peeking_latency: 预取操作的延迟(以毫秒为单位)

  • read_throughput: 读取吞吐量(以 GB/s 为单位)

  • write_throughput: 写入吞吐量 (以 GB/s 为单位)

使用方法#

使用模拟远程后端部署服务引擎:

LMCACHE_CONFIG_FILE=mock.yaml vllm serve meta-llama/Llama-3.1-8B-Instruct \
    --kv-transfer-config '{"kv_connector":"LMCacheConnectorV1", "kv_role":"kv_both"}' \
    --disable-log-requests \
    --no-enable-prefix-caching

检查第二个查询的检索(存储是异步的,因此吞吐量没有意义)日志,以确认吞吐量略低于 2 GB/s(CPU <-> GPU 分配/传输也有开销)。

示例查询#

发送测试请求:

curl -X POST http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta-llama/Llama-3.1-8B-Instruct",
    "prompt": "'"$(printf 'Elaborate the significance of KV cache in language models. %.0s' {1..1000})"'",
    "max_tokens": 10
  }'

预期日志#

您应该看到类似于以下的日志:

(EngineCore_0 pid=586318) [2025-09-03 05:06:41,751] LMCache INFO: Reqid: cmpl-b34e7c5b2f3e46a592722db2c27f6fc0-0, Total tokens 12002, LMCache hit tokens: 12002, need to load: 12001 (vllm_v1_adapter.py:1049:lmcache.integration.vllm.vllm_v1_adapter)
(EngineCore_0 pid=586318) [2025-09-03 05:06:42,736] LMCache INFO: Retrieved 12002 out of total 12002 out of total 12002 tokens. size: 1.651 gb, cost 980.6983 ms, throughput: 1.8939 GB/s; (cache_engine.py:503:lmcache.v1.cache_engine)

日志确认吞吐量略低于 2 GB/s,原因是 CPU <-> GPU 分配/传输开销。