基准测试#

这是一个关于如何使用 lmcache bench engine CLI 部署和基准测试 LMCache 的简单教程。

lmcache bench engine 命令是一个灵活的流量模拟器,可以向您的推理引擎发送可配置的工作负载,并报告 TTFT、解码速度和吞吐量指标。本教程将介绍一个长文档问答基准测试,测试 LMCache 的 CPU 卸载路径。

有关完整的 CLI 参考 -- 包括每个标志、每种工作负载类型和配置文件用法 -- 请参见 lmcache 基准引擎

长文档问答工作负载#

long-doc-qa 工作负载模拟对长的合成文档进行重复的问答:预热轮次用每个文档预热 KV Cache,然后基准轮次分发问题。文档的数量是根据 --kv-cache-volume 和模型的每 GB 令牌数推导的,而不是直接设置的。有关完整的标志列表,请参见 lmcache 基准引擎

示例#

要衡量 LMCache 的好处,请对 两个设置运行相同的基准测试 并比较结果:

  • 设置 A(基准) -- 仅 vLLM。

  • Setup B (使用 LMCache) -- vLLM 加上一个独立的 LMCache 服务器。

以下步骤将在 Qwen/Qwen3-8B 上重现这两个运行。根据您的硬件调整大小。

设置 A:仅 vLLM(基准)#

vllm serve Qwen/Qwen3-8B

设置 B:vLLM 与 LMCache 一起使用#

将 LMCache 作为独立服务运行,并使用 LMCacheMPConnector 将 vLLM 指向它。有关完整的 MP 模式操作指南,请参见 快速开始

启动 LMCache 服务器:

lmcache server \
    --l1-size-gb 66 --eviction-policy LRU

ZMQ 端口默认为 **5555**(由 vLLM 使用),HTTP 前端默认为 **8080**(由 lmcache bench engine --lmcache-url 使用)。

在单独的终端中启动 vLLM 和 MP 连接器:

vllm serve Qwen/Qwen3-8B \
    --kv-transfer-config \
    '{"kv_connector": "LMCacheMPConnector", "kv_role": "kv_both"}'

运行基准测试#

为了使比较公平,请在配置文件中**一次**捕获基准设置,然后在两个设置上重放相同的配置。

步骤 1 -- 导出共享配置。 在 Setup B 的 LMCache 服务器仍在运行的情况下,以交互模式启动 lmcache bench engine

lmcache bench engine --lmcache-url http://localhost:8080

交互模式被触发,因为缺少 --engine-url--workload,而 --lmcache-url 从服务器自动检测 tokens-per-gb-kvcache。按照提示进行操作并选择:

  • 引擎 URL: http://localhost:8000

  • 工作负载: long-doc-qa

  • 模型:从引擎自动检测(或类型为 Qwen/Qwen3-8B

  • KV cache volume (GB): 10

  • ldqa-query-per-document: 1

  • ldqa-shuffle-policy: tile

  • ldqa-num-inflight-requests: 4

  • 将其余选项保留为默认值。

总结 步骤中,选择 “导出配置以供后用并退出” 并保存为 bench_config.json。该文件如下所示:

{
  "model": "Qwen/Qwen3-8B",
  "workload": "long-doc-qa",
  "kv_cache_volume": 10.0,
  "tokens_per_gb_kvcache": 46020,
  "ldqa_document_length": 10000,
  "ldqa_query_per_document": 1,
  "ldqa_shuffle_policy": "tile",
  "ldqa_num_inflight_requests": 4
}

请注意,导出的配置存储了 tokens_per_gb_kvcache``(从 ``--lmcache-url 解析得出),但**不**包括引擎 URL 或 LMCache URL,因此同一个文件可以在不同环境中使用。

步骤 2 -- 针对每个设置进行重放。--engine-url 指向您想要基准测试的 vLLM,并传递共享配置:

lmcache bench engine \
    --engine-url http://localhost:8000 \
    --config bench_config.json

对 Setup A 的 vLLM 运行一次,对 Setup B 的 vLLM-plus-LMCache 运行一次,记录每次运行的指标。

结果#

从每次运行的 Engine Benchmark Result (long-doc-qa) 摘要中提取关键数字:

指标

设置 A (vLLM)

设置 B (+ LMCache)

成功的请求

46

46

基准测试持续时间(秒)

23.47

13.79

平均 TTFT (毫秒)

757.00

185.00

这意味着在 LMCache 卸载的情况下,平均 TTFT 减少了 **75%**(757 毫秒 → 185 毫秒),基准持续时间减少了 **41%**(23.47 秒 → 13.79 秒)。

备注

没有 LMCache,一旦基准测试的工作集溢出 GPU KV Cache,第二轮就必须重计算每个前缀,因此即使内容重复,TTFT 和吞吐量也不会改善。LMCache 将逐出的块保留在 CPU 内存中,并按需恢复它们——这就是加速的来源。