为 vLLM 推理服务启用 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 层分组行为时,Expert Parallel 就会派上用场。
对于单节点部署,上游 vLLM 的模式如下:
- 使用
--enable-expert-parallel启用 EP。 - 保持示例运行在单个 node 上。
- 使用
--data-parallel-size覆盖该 node 上的 GPU。 - 在本示例中使用
--tensor-parallel-size 1,这样 attention 层会在 data parallel ranks 之间保持复制,而不是通过 tensor parallelism 进行切分。
如果你提供的是 dense 模型,或者当前运行时镜像不包含上游 vLLM 所需的 EP 相关依赖,那么本指南并不是合适的起点。
前提条件和限制
- 你可以访问已安装 KServe 的 Kubernetes 集群。
- 你有一个可以创建
InferenceService资源的 namespace。 - 你已经在平台上可用一个 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 size 和 data parallel size,vLLM 会根据这些设置推导出实际的 expert parallel group size。
启用 EP 后的层行为
当为 MoE 模型启用 EP 时,不同类型的层会使用不同的并行策略:
对于 attention 层:
- 当
TP_SIZE = 1时,attention 权重会在所有 data parallel ranks 之间复制。 - 当
TP_SIZE > 1时,attention 权重会在每个 data parallel group 内通过 tensor parallelism 进行切分。
例如,如果 TP_SIZE = 2 且 DP_SIZE = 4,那么该服务总共会使用 8 个 GPU:
- expert 层会形成一个大小为 8 的 EP group,expert 会分布到所有 GPU 上。
- attention 层会在 4 个 data parallel groups 中的每个组内使用大小为 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
创建一个名为 deepseek-v3-ep.yaml 的 YAML 文件,内容如下:
应用该清单:
这些标志为何重要
请调整 GPU 资源字段,使其与集群中可用的资源键以及目标 node 上的 GPU 数量相匹配。本示例的关键在于 vLLM EP 参数是如何添加到 InferenceService 命令中的。如果你需要显式设置 all-to-all backend,请在添加 --all2all-backend 之前,先遵循上游 backend 选择指南。
查看已配置的 spec
应用清单后,请查看生成的 InferenceService spec,并确认 EP 相关参数已存在:
重点查看生成的 predictor 命令,并确认其中仍包含:
--enable-expert-parallel--data-parallel-size--tensor-parallel-size 1
此检查可确认预期的 vLLM 参数已应用到服务配置中。它不会验证运行时性能、backend 兼容性或多节点行为。
对于多节点部署
多节点 EP 部署需要额外的分布式运行时和网络配置,包括每个 node 的启动设置、node 角色以及 data-parallel 通信设置。
本页面重点介绍单节点配置模式。如果你需要多节点 EP,请参阅官方 vLLM 指南,并根据你的集群拓扑和运行时环境调整部署模型。