混合注意力模型#
一些模型在其层中交错使用多种注意力类型——最常见的是在大多数层上使用 滑动窗口注意力,而在少数层上使用 全注意力。vLLM 通过其 混合 KV 缓存管理器 来服务这些模型,该管理器将模型的层分成多个 **KV 缓存组**(每种注意力行为一个)。
LMCache 多进程连接器 (LMCacheMPConnector) 支持这些混合模型:它为每个组存储和检索 KV Cache,因此前缀缓存和 KV 重用的工作方式与普通模型相同。
有效的内容#
所有层均使用 标准分页注意力 的模型——包括混合滑动窗口和全注意力的混合模型——在没有特殊配置的情况下得到支持。示例:
模型家族 |
注意力布局 |
状态 |
|---|---|---|
Gemma 2 / Gemma 3 |
交错滑动窗口 + 完整 |
支持 |
gpt-oss |
交错滑动窗口 + 完整 |
支持 |
Llama, Qwen2/Qwen3 (dense), Mistral, … |
单一注意力类型 |
支持 |
只需像往常一样将 vLLM 指向 LMCache 服务器(请参见 快速开始);LMCache 在注册时会自动检测模型的 KV Cache 组。
备注
因为 LMCacheMPConnector 向 vLLM 宣传了混合支持,vLLM 为这些模型保持其混合 KV 缓存管理器 **启用**(它不会回退到单一统一组)。您不需要 --no-disable-hybrid-kv-cache-manager 或任何相关标志。
尚未支持的内容#
验证正确性#
为了确保混合模型的 KV 被正确缓存和重用,您可以将冷启动与从 LMCache 提供的运行进行比较:
对 vLLM + LMCache 运行评估(例如在
gsm8k上使用lm_eval)。这会计算 KV Cache 并 存储 在 LMCache 中。重置 仅 vLLM 的本地前缀缓存,保持 LMCache 管理的缓存不变(需要以
VLLM_SERVER_DEV_MODE=1启动 vLLM):curl -X POST http://localhost:8000/reset_prefix_cache省略
reset_external=true查询参数,以便保留 LMCache 缓存。重新运行相同的评估。vLLM 现在在其本地缓存中未命中,因此前缀 KV 从 LMCache 中 检索。得分应与第一次运行匹配。
该项目将其作为 hma_lm_eval 持续集成测试发布(参见 .buildkite/k3_tests/multiprocess)。
另请参阅#
:doc:quickstart — 启动 LMCache 服务器和 vLLM 客户端。
关于如何检测和处理组的设计说明:
docs/design/integration/vllm/hybrid-kv-cache-groups.md在源代码树中。