混合注意力模型#

一些模型在其层中交错使用多种注意力类型——最常见的是在大多数层上使用 滑动窗口注意力,而在少数层上使用 全注意力。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 或任何相关标志。

尚未支持的内容#

  • **Mamba / 线性注意力混合模型**(例如 Qwen3-Next、Qwen3.5 和其他 Gated-DeltaNet 模型)。这些层保持一个递归的 *状态缓存*(一个卷积 + SSM 状态),而不是分页的键/值缓存,这在今天的 LMCache 传输路径中无法表示。这些模型将无法在 LMCache 服务器上注册。跟踪支持是未来的工作。

  • DeepSeek-V4 风格的压缩 / 索引器缓存 同样尚未被多进程连接器处理。

验证正确性#

为了确保混合模型的 KV 被正确缓存和重用,您可以将冷启动与从 LMCache 提供的运行进行比较:

  1. 对 vLLM + LMCache 运行评估(例如在 gsm8k 上使用 lm_eval)。这会计算 KV Cache 并 存储 在 LMCache 中。

  2. 重置 vLLM 的本地前缀缓存,保持 LMCache 管理的缓存不变(需要以 VLLM_SERVER_DEV_MODE=1 启动 vLLM):

    curl -X POST http://localhost:8000/reset_prefix_cache
    

    省略 reset_external=true 查询参数,以便保留 LMCache 缓存。

  3. 重新运行相同的评估。vLLM 现在在其本地缓存中未命中,因此前缀 KV 从 LMCache 中 检索。得分应与第一次运行匹配。

该项目将其作为 hma_lm_eval 持续集成测试发布(参见 .buildkite/k3_tests/multiprocess)。

另请参阅#

  • :doc:quickstart — 启动 LMCache 服务器和 vLLM 客户端。

  • 关于如何检测和处理组的设计说明:docs/design/integration/vllm/hybrid-kv-cache-groups.md 在源代码树中。