多机分布式推理

随着DeepSeek 671B等超大规模MoE模型的问世,单一设备已难以承载其庞大的参数量。为此,EAS推出多机分布式推理解决方案,突破硬件限制,实现单个服务实例部署在多台机器上,高效支持超大规模模型的部署与运行。本文为您介绍如何配置多机分布式推理。

使用说明

EASModelGallery官方提供的部分SGLangvLLM镜像已原生支持分布式推理。如果您想通过自定义镜像来部署分布式推理,需遵循分布式推理框架的组网规范及分布式处理的基本范式,详情请参见实现原理

实现原理

以下内容为您介绍分布式推理涉及的基本概念和实现原理:

实例单元

EAS普通推理服务相比,分布式推理服务引入了实例单元(下文简称Unit)的概念。Unit内部通过高性能网络通信,通过TP/PP等模式相互协调完成一次请求处理。一个Unit内的实例是有状态的,而不同Unit之间是完全对称且无状态的。

实例编号

每个Unit中的实例都会通过环境变量的形式注入实例编号(Unit内每个实例的环境变量及说明,请参见附录)。不同实例会依次分配不同的编号,通过实例编号控制不同实例执行不同的任务。

承接流量

整个Unit对外默认只通过0号实例(RANK_ID 为0)承接流量,通过系统的服务发现机制把用户流量分配到不同Unit0号实例,然后在Unit内部进行分布式处理。不同Unit独立承接用户流量,相互没有干扰。

image

滚动更新

在滚动更新时,Unit会作为一个整体进行重建,新Unit中的所有实例会并行创建。等待新的Unit中所有实例就绪之后,会先对要删除的Unit进行摘流,再删除Unit中的所有实例。

image

生命周期

Unit重建

Unit整体重建时,老的Unit中的所有实例会并行删除,新的Unit中的所有实例也会并行创建,不会根据实例编号进行特殊处理。

实例重建

Unit内的每个实例的生命周期默认和0号实例的生命周期一致,当0号实例发生重建时,会触发Unit内的所有其它实例进行重建。当非0号实例发生重建时,Unit内其他实例不会受影响。

分布式容错

  • 实例异常处理机制

    • 当检测到分布式服务中某个实例发生异常时,系统会自动触发Unit中所有实例的重启操作。

    • 作用:有效解决单点故障导致的集群状态不一致问题,确保所有实例运行环境完全重置。

  • 协同恢复机制

    • 实例重启完成后,系统会等待Unit中所有实例达到一致就绪状态(通过同步屏障barrier实现),待全部实例就绪后,再统一启动业务进程。

    • 作用:

      • 避免NCCL通信组网时因实例状态不一致导致的建立分组异常。

      • 确保分布式推理任务的所有参与节点保持严格的启动同步性。

分布式容错的功能默认是关闭的。如果需要开启,您可以通过配置unit.guard来启用该功能,具体配置示例如下:

{
  "unit": {
    "size": 2,
    "guard": true
  }
}

配置多机分布式推理

通过EAS自定义部署

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

    • 新建服务:在推理服务页签,单击部署服务,选择自定义模型部署自定义部署

    • 更新服务:推理服务页签的服务列表中找到要操作的服务,操作列单击更新。

  2. 在参数配置表单中,配置以下关键参数。更多参数配置说明,请参见控制台自定义部署参数说明

    • 环境信息区域,配置镜像和运行命令:

      • 镜像配置:在官方镜像中选择vllm:0.7.1sglang:0.4.1image

      • 运行命令:选择镜像后,系统会自动配置运行命令,您无需修改。

    • 资源信息区域,打开分布式推理开关,并配置以下关键参数:image

      参数

      描述

      单实例部署的机器数

      单个模型推理实例部署的机器数,最小值为2。

      RDMA网络

      开启RDMA网络来保证机器之间的高效网络连接。

      说明

      当前仅使用灵骏智算资源部署的服务可以使用RDMA网络。

  3. 参数配置完成后,单击部署/更新

通过Model Gallery一键部署

仅当部署方式选择SGLang加速部署vLLM加速部署时,才支持使用分布式推理。

对于参数量比较大的模型,通过Model Gallery一键部署模型服务时,选择SGLang加速部署vLLM加速部署的分布式部署方式,EAS会自动打开分布式推理开关。您可以单击修改配置,来调整单实例部署使用的机器数量。image

附录

在部署分布式推理服务时,通常需要进行组网操作(例如使用Torch分布式或Ray等框架)。当配置了VPCRDMA时,每个实例会有多个网卡,因此需要指定用于组网通信用的网卡。

  • 在配置RDMA时,默认使用RDMA的网卡(即net0)。

  • 在未配置RDMA时,使用用户所配置的VPC对应的网卡(即eth1)。

相关配置通过环境变量传递,您可在启动命令中使用。示例如下:

环境变量名称

说明

示例值

RANK_ID

实例编号,从0开始递增。

0

COMM_IFNAME

组网时默认使用的网卡:

  • 在用户配置RDMA的场景下值为net0。

  • 在用户未配置RDMA场景下值为eth1(即用户配置的VPC所在的网卡)。

net0

RANK_IP

组网时使用的IP,即对应COMM_IFNAME网卡的IP。

11.*.*.*

MASTER_ADDRESS

RANK_ID0的实例IP,即对应0号实例COMM_IFNAME网卡的IP。

11.*.*.*