基准测试#
这是一个关于如何使用 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):
10ldqa-query-per-document:1ldqa-shuffle-policy:tileldqa-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 内存中,并按需恢复它们——这就是加速的来源。