基准测试#

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

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

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

长文档问答工作负载#

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

示例#

要衡量 LMCache 的收益,请对 两种配置运行相同的基准测试 并比较结果:

  • 配置 A(基准线) -- 仅 vLLM。

  • 配置 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 使用)。

在另一个终端中使用 MP 连接器启动 vLLM:

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

分别对配置 A 的 vLLM 和配置 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 CPU 卸载的加持下,平均 TTFT 降低了 75%(757 毫秒 → 185 毫秒),基准测试总耗时缩短了 41%(23.47 秒 → 13.79 秒)。

备注

若不使用 LMCache,一旦基准测试的工作集超出 GPU KV 缓存容量,第二轮就必须重新计算每个前缀,导致即使内容重复,TTFT 和吞吐量也无法提升。LMCache 将被逐出的块保存在 CPU 内存中并按需恢复——这正是加速效果的来源。