基准测试#
这是一个关于如何使用 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):
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
分别对配置 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 内存中并按需恢复——这正是加速效果的来源。