跳到内容

NixlConnector 兼容性矩阵

本页面记录了使用 NixlConnector 进行解耦预填充 (disaggregated prefilling) 的功能兼容性。有关常规使用说明,请参阅 NixlConnector 使用指南。有关解耦预填充的概述,请参阅 解耦预填充

注意

本页面反映了当前代码库的状态,并可能随功能的演进发生变化。标记为 🟠 或 ❌ 的条目可能链接到跟踪问题。查看 NIXL 连接器路线图 以了解即将开发的功能。

图例

  • ✅ = 完全支持
  • 🟠 = 部分支持(请参阅脚注)
  • ❌ = 不支持
  • ❔ = 未知 / 尚未验证
  • 🚧 = 开发中

通用支持功能

以下功能在使用 NixlConnector PD 解耦服务时支持所有模型架构

分块预填充 (Chunked Prefill) | APC (前缀缓存) | 数据并行 | CUDA 图 | Logprobs | Prompt Logprobs | Prompt Embeds | 多种 NIXL 后端 (UCX, GDS, LIBFABRIC 等)

模型架构 x 能力

模型类型 基础 PD 推测解码 异构 TP 跨层块 SWA 主机缓冲区 异构块大小
Dense Transformers 1 2 🟠3
MLA (例如 DeepSeek-V2/V3) 1 🟠4 2 🟠3
Sparse MLA (例如 DeepSeek-V3.2) 1 🟠4 2 🟠3
混合 SSM / Mamba 🚧5 6
MoE 1 2 🟠3
多模态
编码器-解码器

1 P 和 D 实例必须使用相同的推测配置。

2 需要 FLASH_ATTNFLASHINFER 后端以及 HND KV 缓存布局。通过 --kv-transfer-config '{"kv_connector_extra_config": {"enable_cross_layers_blocks": "True"}}' 启用。

3 仅在不需要 HMA(即非混合模型)时支持。块 ID 会自动重新映射。仅支持 P 块大小 < D 块大小。

4 MLA KV 缓存会在 TP 工作节点之间复制,因此异构 TP 可用,但没有头拆分 (head-splitting)。当 P TP > D TP 时,只执行一次读取(跳过冗余秩)。D TP > P TP 也适用。

5 混合 SSM (Mamba) 模型需要同构 TP (P TP == D TP)。目前 Mamba 层尚不支持异构 TP。

6 HMA(混合模型所必需)不支持不同的远程块大小。

配置说明

P 和 D 之间必须保持一致的项

默认情况下,握手期间会检查兼容性哈希。P 和 D 实例必须在以下方面达成一致:

  • vLLM 版本和 NIXL 连接器版本
  • 模型(架构、数据类型、KV 头数、头大小、隐藏层数)
  • 注意力后端
  • KV 缓存数据类型 (cache_dtype)

警告

可使用 --kv-transfer-config '{"kv_connector_extra_config": {"enforce_handshake_compat": false}}' 禁用哈希检查,但需自行承担风险。

P 和 D 之间可以安全不同的项

  • tensor-parallel-size(异构 TP,受上述模型限制)
  • block-size(异构块大小,受上述限制)
  • KV 缓存块数量(由各实例的可用内存决定)

KV 缓存布局

  • NixlConnector 默认使用 HND 布局以获得最佳传输性能(非 MLA 模型)。
  • 支持 NHD 布局,但不允许异构 TP 头拆分。
  • 实验性 HNDNHD 置换:通过 --kv-transfer-config '{"enable_permute_local_kv": true}' 启用。HMA 不支持此项。

量化 KV 缓存

量化 KV 缓存(例如 FP8)要求 P 和 D 实例使用相同cache_dtype。缓存数据类型不匹配会导致握手时的兼容性哈希检查失败。

  • 静态量化(从检查点加载比例):✅ 支持。比例由每个实例从模型检查点独立加载。
  • 动态量化(运行时计算比例):❌ 不支持。块级比例不会随 KV 缓存数据传输。
  • 打包布局比例(比例与权重内联存储):✅ 支持。比例与 KV 缓存块一起传输。