为 vLLM Inference Services 启用 Expert Parallel
目录
简介何时使用 Expert Parallel前提条件和限制EP 配置概览启用 EP 时的层行为上游命令与平台映射配置单节点 InferenceService这些标志为何重要查看已配置的 Spec关于多节点部署参考资料简介
本文档展示了一个单节点、以 YAML 为先的起点,用于在 InferenceService 中启用 vLLM Expert Parallel (EP)。
Expert Parallel 是上游 vLLM 面向 Mixture-of-Experts (MoE) 模型的能力。它在 vLLM 中仍然属于 experimental,相关参数名称或默认值在未来版本中可能会发生变化。
本页重点介绍一个用于快速入门 Expert Parallel 的单节点配置示例。有关性能调优、容量规划以及分布式部署细节,请参阅官方 vLLM 文档。
何时使用 Expert Parallel
当你正在提供一个 MoE 模型服务,并且希望 vLLM 将 expert 层切分到多个 GPU 上,而不是依赖默认的 expert-layer grouping 行为时,Expert Parallel 就很有用。
对于单节点部署,上游 vLLM 的模式如下:
- 使用
--enable-expert-parallel启用 EP。 - 示例保持在单节点上。
- 使用
--data-parallel-size跨越该节点上的 GPU。 - 在本示例中使用
--tensor-parallel-size 1,这样 attention 层会在 data parallel ranks 之间复制,而不是通过 tensor parallelism 进行切分。
如果你提供的是 dense 模型,或者当前运行时镜像不包含上游 vLLM 所需的 EP 相关依赖,那么本指南不是合适的起点。
前提条件和限制
- 你可以访问已安装 KServe 的 Kubernetes 集群。
- 你有一个可以创建
InferenceService资源的命名空间。 - 你已经在平台上拥有可用的 vLLM 服务运行时。
- 你使用的运行时镜像已经包含 vLLM EP 所需的上游依赖。
- 你的模型是 MoE 模型,并且已经可以通过配置的
storageUri供服务访问。 - 目标 node 上有多个可见 GPU。本示例使用检测到的 GPU 数量作为单节点的 data parallel size。
如果你当前的 vLLM 镜像尚未包含所需的 EP 依赖,请先扩展或重新构建运行时镜像。有关平台相关的运行时定制,请参阅 Extend Inference Runtimes。有关上游依赖列表和后端指导,请参阅 References 中官方 vLLM EP 部署指南。
EP 配置概览
通过添加 --enable-expert-parallel 标志来启用 EP。在上游 vLLM 中,expert parallel size 会自动计算:
其中:
TP_SIZE:tensor parallel sizeDP_SIZE:data parallel sizeEP_SIZE:expert parallel size,由 vLLM 自动计算
这意味着你不需要单独设置 EP size 参数。相反,你需要选择 tensor parallel 和 data parallel 的大小,vLLM 会根据这些设置推导出实际的 expert parallel 组大小。
启用 EP 时的层行为
当为 MoE 模型启用 EP 时,不同类型的层会使用不同的并行策略:
对于 attention 层:
- 当
TP_SIZE = 1时,attention 权重会复制到所有 data parallel ranks。 - 当
TP_SIZE > 1时,attention 权重会在每个 data parallel 组内通过 tensor parallelism 进行切分。
例如,如果 TP_SIZE = 2 且 DP_SIZE = 4,该服务总共使用 8 个 GPU:
- expert 层形成一个大小为 8 的 EP 组,expert 会分布到所有 GPU 上。
- attention 层在 4 个 data parallel 组中的每一个组内都使用大小为 2 的 tensor parallelism。
与常规的 data parallel 部署相比,主要区别在于 MoE 层的分布方式。未启用 --enable-expert-parallel 时,MoE 层遵循 tensor parallel grouping 行为。启用 EP 后,expert 层会切换到 expert parallelism,这种方式是专门为 MoE 风格的 expert 切分设计的。
上游命令与平台映射
上游单节点示例使用的命令类似如下:
在 Alauda AI 上,这些相同的标志通常通过 InferenceService 容器命令传递。换句话说:
vllm serve ...会变成在spec.predictor.model.command中启动的命令--tensor-parallel-size、--data-parallel-size和--enable-expert-parallel会附加到 vLLM 启动命令中- 模型位置、运行时名称和 Kubernetes 资源通过
storageUri、runtime和resources表达
因此,下面的示例重点展示如何将 EP 相关标志放入平台的 InferenceService YAML 中。
配置单节点 InferenceService
创建一个 YAML 文件,例如 deepseek-v3-ep.yaml,内容如下:
应用该清单:
这些标志为何重要
请调整 GPU 资源字段,以匹配集群中可用的资源键以及目标 node 上的 GPU 数量。此示例的重点在于 vLLM EP 参数在 InferenceService command 中的添加位置。如果你需要显式设置 all-to-all backend,请先遵循上游 backend 选择指南,再添加 --all2all-backend。
查看已配置的 Spec
应用清单后,检查生成的 InferenceService spec,并确认 EP 相关参数已存在:
重点查看生成的 predictor command,并确认其中仍然包含:
--enable-expert-parallel--data-parallel-size--tensor-parallel-size 1
此检查可确认预期的 vLLM 参数已应用到服务配置中。它不验证运行时性能、backend 兼容性或多节点行为。
关于多节点部署
多节点 EP 部署需要额外的分布式运行时和网络配置,包括每个 node 的启动设置、node 角色以及 data-parallel 通信设置。
本页重点介绍单节点配置模式。如果你需要多节点 EP,请参考官方 vLLM 指南,并根据你的集群拓扑和运行时环境调整部署模型。