推理在线服务多机PD混部
在线服务有新旧2个版本,推荐使用新版在线服务。
场景描述
在大模型推理业务规模化落地过程中,Prefill(预填充) 负责处理用户输入、生成初始向量,属于高算力、短时密集型任务;Decode(解码) 负责逐词生成文本、维持会话上下文,属于低算力、长时流式任务。两类任务资源需求差异显著,单机部署易出现资源争抢、性能波动问题。多机 PD 混部适用于中大型大模型、中等并发、成本优先的核心推理场景,具体包括:
- 大模型对话、文案生成、代码生成等流式推理业务;
- 异构算力(GPU/NPU)混合集群,需兼顾性能与成本;
- 生产环境需平衡资源利用率与推理稳定性;
- 业务规模中等,无需完全物理隔离,但需缓解 PD 资源争抢;
- 中小团队统一算力池,多模型共享、弹性扩缩容场景。
核心原理
部署模式区分:
- 单机部署(基础模式):仅 1 个推理单元,Prefill、Decode串行在同一容器运行,资源高度争抢,时延波动大、吞吐受限。单机部署配置请参见推理在线服务单机部署。
- 多机PD混部(多角色分离 - 混部):PD混部(Prefill-Decode 混合部署)是指将大模型推理的预填充(Prefill)和解码(Decode)两个阶段部署在同一组计算节点(如NPU/GPU)上,共享KV Cache资源,适用于资源受限或需简化架构的场景。对于混部场景,如果是使用vLLM框架,建议第一个单元为vLLM的master节点,剩余的worker节点放在其他单元。本章节中重点介绍多机PD混部。
- 多机PD分离(多角色分离 - 隔离):多角色分离模式下,将Prefill、Decode单元部署在不同物理节点,完全隔离资源,性能最优但成本更高。多机PD分离部署请参见推理在线服务多机PD分离部署。
多机PD混部的核心逻辑:
- 任务拆分:将推理流程拆分为 Prefill、Decode 两个独立单元,独立扩缩容、互不干扰;
- 资源共享:两单元同池混部,节点资源按需调度,空闲节点优先分配高负载任务,提升资源利用率;
- 调度灵活:无强制节点亲和,支持跨节点动态调度,适配异构集群、弹性扩缩容;
- 性能折中:缓解单机资源争抢,相比单机时延更低、吞吐更高;相比 PD 分离成本更低、部署更简单。
约束与限制
- 部署模式限制:仅多角色分离模式支持 PD 混部,基础模式不支持;
- 节点池限制:多推理单元(Prefill、Decode)需选择同一节点池,暂不支持跨异构节点池;
- 亲和调度限制:PD 混部不配置强亲和 / 强反亲和,仅支持弱亲和或不配置亲和;
- 镜像要求:模型镜像需适配多角色分离架构,支持 Prefill、Decode 独立部署,否则部署失败;
- 资源规格限制:异构资源池部署时,Prefill、Decode 单元实例规格需与节点池规格一致。
前提条件
注意事项
针对使用资源池部署的在线服务,服务处于“异常”或“停止”等状态时,也占用配额资源。如果发现配额不足,无法部署更多服务时,可先删除部分异常服务释放资源。
- 配额计算:
- 计量计算:
- SFS Turbo挂载:
在线服务使用SFS Turbo挂载时需要有预置操作,关联专属资源池的网络至SFS Turbo。
部署在线服务-基础信息配置
登录ModelArts管理控制台,在左侧菜单栏中选择“模型推理>在线推理”,进入在线推理管理页面。在服务列表页,单击服务名称右侧的。

也可以单击服务名称进入服务详情页,通过“部署”页签,或服务详情页右上角的“添加部署”,配置部署信息。

在“部署在线服务”页面分别进行基础信息、资源配置、模型配置、单元配置、部署管理配置、高级配置等。
部署在线服务-资源配置
| 参数 | 说明 | 示例 |
|---|---|---|
| 资源池类型 | 专属资源池和公共资源池均支持多角色分离部署。
| 专属资源池 |
| 资源池 | 当资源池类型选择“专属资源池”时,单击“选择专属资源池”,在专属资源池规格中选择对应的规格进行使用,单击“确定”。暂不支持选择创建了逻辑子池的物理池。如没有已创建的专属资源池,请创建新的专属资源池,详情请见创建专属资源池。 支持选择异构资源池部署在线服务。使用异构专属资源池部署时,要求在线服务的实例规格与资源池规格一致。 | / |
| 部署副本数 | 能够独立完成一次推理任务的单元组合定义为一个部署实例,一个部署可以指定多个实例副本。输入值必须在1到128之间。 副本数 = 1,表示只跑1组服务实例,即标准的单机单实例,多个副本,比如副本数 = 3,表示同时跑3组相同服务实例,作用是分摊请求流量、提升并发能力、实现基础高可用。 | 1 |
| 调度策略 | 支持“高可用调度”和“紧凑调度”两种调度策略,二选一,默认开启高可用调度。
亲和调度在单元配置的更多配置中设置,参见表2。 | 高可用调度 |
| 调度优先级 | 当服务资源池配置选择专属资源池时,设置当前服务部署时调度资源的优先级。平台将按照任务优先级从高到低依次处理。 数值1~3对应的优先级由低到高,1为最低优先级,3为最高优先级。 对于相同优先级的任务,则根据提交时间的先后顺序进行调度,最终结合实际的资源情况决定调度顺序。保证在资源充足、相同优先级下,先提交的任务先调度。 | 1 |
部署在线服务-模型配置
| 分类 | 参数 | 说明 | 示例 |
|---|---|---|---|
| 模型来源 | 平台资产 | 部署在线服务时,模型来源可以选择平台资产,也可以选择自定义模型。 选择“平台资产”时,模型来源于ModelArts资产中心,单击卡片选择模型,可选择ModelArts预置模型和我的模型。
支持的模型资产与资源池规格有关,请先选择专属资源池,或切换至公共资源池后再试。 | 平台资产 |
| 自定义模型 | 选择“自定义模型”时,可以选择模型存储类型。设置模型存储地址和挂载路径等信息。 自定义模型的存储类型支持对象存储 OBS - 对象桶、对象存储 OBS - 并行文件系统、高性能弹性文件存储 SFS Turbo、资源池已预热模型。详细参数介绍配置请参见存储挂载。 | 自定义模型 |
部署在线服务-Prefill推理单元配置
多角色PD混部场景下,推理服务部署方式选择“多角色分离”。
多角色分离模式:按需配置多推理单元,各单元对应推理部署实例一类角色;新增/扩容角色均需新增单元,多单元组合成完整推理部署实例,适配PD混合或分离等部署场景。
推理单元的参数说明请见表4。配置过程中可以单击右上角的“预览部署”,查看当前部署的拓扑图,请见查看服务部署拓扑图。
可单击“克隆”,复制已有推理单元配置,也可单击“删除”,删除不再使用的推理单元。
| 参数 | 说明 | 示例 |
|---|---|---|
| 单元名称 role-0 | 默认role-0,可以自定义修改。长度为0~16位,仅支持小写字母、数字和连接符,且开头结尾必须是字母或数字。 | role-prefill |
| 单元副本数 | 多角色分离场景下,可以设置或调整“单元副本数”,用于提高单元的吞吐量和响应速度。输入值为1~100。请根据并发量配置。 | 2 |
| 规格类型-预置规格 | 公共资源池仅支持预置规格。专属资源池支持预置规格和自定义规格。 请选择可用的“单元实例规格”,并设置“单副本资源实例数”。 该推理单元的总资源需求 = 单元实例规格 * 资源实例数。例如:若单元实例规格为 8 卡,推理单元需要 32 卡资源,则资源实例数应输入 4。 Prefill单元的规格类型,建议选择GPU/NPU高算力规格,适配Prefill密集计算。 说明: 使用所选规格部署服务时,会产生必要的系统消耗,因此服务实际占用的资源会略大于该规格。 | / |
| 规格类型-自定义规格 | 仅专属资源池支持自定义规格。 如果当前显示的预置规格无法匹配您的业务,可以选择自定义规格。当前资源池已开启GPU虚拟化,将严格按照请求量进行资源分配。请根据资源池内节点情况填写相关规格,具体可查看在线服务详情。
部署在线服务过程中,如果资源池选择使用具有多种不同架构或者多种不同规格的专属资源池,即异构专属资源池。例如资源池中包含x86架构、CPU类型8核32GB规格的节点池1,x86架构、CPU类型8核64GB规格的节点池2,以及ARM架构、NPU类型192核1536GB规格的节点池3。在使用这种异构资源池部署在线服务时,“规格类型”支持先选择节点池规格,如指定使用CPU规格的节点池1,再选择部署服务所需作业规格,如部署在线服务需要多少CPU、内存或者卡。 如果遇到同规格类型的节点池,例如上述描述中的节点池1和节点池2,实际部署时选择节点池1的规格,也会由于资源利用最大化调度策略随机部署到节点池1或节点池2。 多推理单元部署时,选择节点池规格时,暂不支持异构节点池,所有推理单元需保持同一节点池。 图3 异构资源池规格类型 | / |
| 镜像类型 | ModelArts支持如下镜像类型。
| / |
| 环境变量(可选) | 注入环境变量到容器实例。为确保您的数据安全,在环境变量中,请勿输入敏感信息,如明文密码。 环境变量格式为若干键值对,例键为"A",值为"AAAA"。 环境变量的键只能由英文字母、数字及特殊符号“_”、“-”、“.”组成,不能以数字开头,最大长度不超过64个字符。 环境变量的值不能输入HTML格式,如:<p>、<^>、<...>。 支持本地上传Excel文档批量导入环境变量。仅支持上传xlsx/xls文件,且最多支持上传 100 个参数。为保证参数正确解析,请严格按照模板格式进行填写。模板下载请单击“下载模板”。 单击“本地上传”,在弹框内单击“添加文件”,导入本地Excel文档,并对解析后的环境变量键值进行检查,如检查结果显示“待修改”,请按要求修改后重新上传。待检查结果为“通过”后,勾选键值,单击“确定”,完成环境变量的批量上传。 | / |
| 文件存储挂载 | 支持文件存储挂载、指定产物转储路径等关键数据。 “文件存储”支持的存储类型包括对象存储 OBS - 对象桶、对象存储 OBS - 并行文件系统、高性能弹性文件存储 SFS Turbo、资源池已预热模型。 “产物转储”支持的存储类型仅有对象存储 OBS - 并行文件系统。 文件存储最多添加15个存储路径,产物转储最多添加10个存储路径。产物转储不能与文件挂载或模型挂载共用同一个 OBS - 并行文件系统。 存储类型、存储地址、挂载路径等详细参数介绍请参见存储挂载。 | 对象存储 OBS - 对象桶 |
| 健康检查 | 可选参数,用于指定模型的健康检查。仅当推理镜像中配置了健康检查接口,才能配置“健康检查”,否则会导致模型部署服务失败。 当前支持以下三种探针:
健康检查中三种探针的详细介绍和配置请参见在线服务健康检查。 | / |
| 启动命令 | 设置服务启动命令。 | / |
| 更多配置-自动重建 | 开启后自动重建后,由于部署配置变更或者故障等原因导致Pod重启时,平台将按策略自动执行重建。若不开启,平台将不会主动干预处理。详见在线服务故障自动重建 | / |
| 更多配置-故障自动重启 | 开启故障自动重启后,当检测到NPU卡、交换机、硬件等出现故障时,会自动触发故障节点上的业务重新调度。部分能力仅Snt9b、Snt9b2系列资源支持。详细请参见在线服务故障自动重启。 如需保障业务不中断,请配置多个实例。 | / |
| 更多配置-优雅停机 | 开启优雅停机后,支持设置停机时间及停机命令等,避免正在处理的请求被强制中断,从而提高系统的可用性和稳定性。 如果您已配置了健康检查,且在该命令中设置了较大的 sleep 值,将导致容器在健康检查失败停止时重启/停止时间变长。
| / |
| 更多配置-亲和调度 | 通过配置节点亲和类型和强度,可实现资源池灵活的工作负载调度。若不指定,将根据集群默认调度策略随机调度。 开启后,支持精细控制 Pod 的部署策略:
在“添加节点”列表中勾选实现以上配置规则的节点。 用户在选择了已预热模型后,在配置亲和调度页面会展示已经预热成功的节点,未预热的节点不展示,并且页面会提示“当前选择的模型已预热,将自动部署至最优节点,若手动指定节点可能导致预热加速失效”。 | / |
| 更多配置-指定容器运行用户ID | 如果勾选,请输入用户ID和用户组ID(可选)。 | / |
| 认证凭据 | 在表5中勾选了系统日志上报时,界面会显示此参数。 “凭据”用于验证身份和授权访问的证明信息。在信息安全和身份认证领域,凭据是确保只有授权用户才能访问系统、资源或服务的关键机制。
| / |
部署在线服务-Decode推理单元配置
单击“添加推理单元”,或者单击“克隆”复制已有推理单元配置,配置Decode推理单元。
推理单元的参数说明请见表5。配置过程中可以单击右上角的“预览部署”,查看当前部署的拓扑图,请见查看服务部署拓扑图。
| 参数 | 说明 | 示例 |
|---|---|---|
| 单元名称 role-1 | 默认role-1,可以自定义修改。长度为0~16位,仅支持小写字母、数字和连接符,且开头结尾必须是字母或数字。 | role-decode |
| 单元副本数 | 多角色分离场景下,可以设置或调整“单元副本数”,用于提高单元的吞吐量和响应速度。输入值为1~100。请根据并发量配置。 | 2 |
| 规格类型-预置规格 | 公共资源池仅支持预置规格。专属资源池支持预置规格和自定义规格。 请选择可用的“单元实例规格”,并设置“单副本资源实例数”。 该推理单元的总资源需求 = 单元实例规格 * 资源实例数。例如:若单元实例规格为 8 卡,推理单元需要 32 卡资源,则资源实例数应输入 4。 Decode推理单元建议选择CPU/NPU低算力规格,适配Decode流式生成。 说明: 使用所选规格部署服务时,会产生必要的系统消耗,因此服务实际占用的资源会略大于该规格。 | / |
| 规格类型-自定义规格 | 仅专属资源池支持自定义规格。 如果当前显示的预置规格无法匹配您的业务,可以选择自定义规格。当前资源池已开启GPU虚拟化,将严格按照请求量进行资源分配。请根据资源池内节点情况填写相关规格,具体可查看在线服务详情。
多推理单元部署时,选择节点池规格时,暂不支持异构节点池,所有推理单元需保持同一节点池。 | / |
| 镜像类型 | ModelArts支持如下镜像类型。
| 自定义镜像 > 容器镜像SWR |
| 环境变量(可选) | 注入环境变量到容器实例。为确保您的数据安全,在环境变量中,请勿输入敏感信息,如明文密码。 环境变量格式为若干键值对,例键为"A",值为"AAAA"。 环境变量的键值只能由英文字母、数字及特殊符号“_”、“-”、“.”组成,不能以数字开头,最大长度不超过64个字符。不能输入HTML格式,如:<p>、<^>、<...>。 支持本地上传Excel文档批量导入环境变量。仅支持上传xlsx/xls文件,且最多支持上传 100 个参数。为保证参数正确解析,请严格按照模板格式进行填写。模板下载请单击“下载模板”。 单击“本地上传”,在弹框内单击“添加文件”,导入本地Excel文档,并对解析后的环境变量键值进行检查,如检查结果显示“待修改”,请按要求修改后重新上传。待检查结果为“通过”后,勾选键值,单击“确定”,完成环境变量的批量上传。 | / |
| 文件存储挂载 | 支持文件存储挂载、指定产物转储路径等关键数据。 “文件存储”支持的存储类型包括对象存储 OBS - 对象桶、对象存储 OBS - 并行文件系统、高性能弹性文件存储 SFS Turbo、资源池已预热模型。 “产物转储”支持的存储类型仅有对象存储 OBS - 并行文件系统。 文件存储最多添加15个存储路径,产物转储最多添加10个存储路径。产物转储不能与文件挂载或模型挂载共用同一个 OBS - 并行文件系统。 存储类型、存储地址、挂载路径等详细参数介绍请参见存储挂载。 | 对象存储 OBS - 对象桶 |
| 健康检查 | 可选参数,用于指定模型的健康检查。仅当推理镜像中配置了健康检查接口,才能配置“健康检查”,否则会导致模型部署服务失败。 当前支持以下三种探针:
健康检查中三种探针的详细介绍和配置请参见在线服务健康检查。 | / |
| 启动命令 | 设置服务启动命令。 | / |
| 更多配置-自动重建 | 开启后自动重建后,由于部署配置变更或者故障等原因导致Pod重启时,平台将按策略自动执行重建。若不开启,平台将不会主动干预处理。详见在线服务故障自动重建 | / |
| 更多配置-故障自动重启 | 开启故障自动重启后,当检测到NPU卡、交换机、硬件等出现故障时,会自动触发故障节点上的业务重新调度。部分能力仅Snt9b、Snt9b2系列资源支持。详细请参见在线服务故障自动重启。 如需保障业务不中断,请配置多个实例。 | / |
| 更多配置-优雅停机 | 开启优雅停机后,支持设置停机时间及停机命令等,避免正在处理的请求被强制中断,从而提高系统的可用性和稳定性。 如果您已配置了健康检查,且在该命令中设置了较大的 sleep 值,将导致容器在健康检查失败停止时重启/停止时间变长。
| / |
| 更多配置-亲和调度 | 通过配置节点亲和类型和强度,可实现资源池灵活的工作负载调度。若不指定,将根据集群默认调度策略随机调度。 开启后,支持精细控制 Pod 的部署策略:
在“添加节点”列表中勾选实现以上配置规则的节点。 用户在选择了已预热模型后,在配置亲和调度页面会展示已经预热成功的节点,未预热的节点不展示,并且页面会提示“当前选择的模型已预热,将自动部署至最优节点,若手动指定节点可能导致预热加速失效”。 | / |
| 更多配置-指定容器运行用户ID | 如果勾选,请输入用户ID和用户组ID(可选)。 | / |
| 认证凭据 | 使用OBS挂载且未开启本地存储加速,或者在表5中勾选了系统日志上报时,界面会显示此参数。 “凭据”用于验证身份和授权访问的证明信息。在信息安全和身份认证领域,凭据是确保只有授权用户才能访问系统、资源或服务的关键机制。
| / |
部署在线服务-部署管理配置
推理在线服务部署管理相关配置参数如表6所示。
| 参数 | 说明 |
|---|---|
| 容器协议 | 容器的网络传输协议,请根据实际定义的接口进行配置。 表2中“服务协议”选择“HTTP”或“HTTPS”时,容器协议可选择“HTTP”或“HTTPS”。 表2中“服务协议”选择“WSS”或“WS”时,容器协议默认与服务协议一致,控制台不显示。 |
| 容器端口 | 镜像监听的端口号,通过该端口号向实例发送请求。该端口号与用户镜像中的端口号保持一致。 |
| 更多配置 > 部署超时时间(分钟) | 单个服务的超时时间,包括部署和启动时间。请合理填写部署超时时间,超时会终止部署服务。 |
| 更多配置 > 最大浪涌部署副本数(%) | 每次滚动升级能超出目标部署副本的最大数量。当采用百分比计数时,则会按照实际实例数进行计算并向上取整。 例如: 最大浪涌部署副本数为1%,当前4个实例进行滚动升级,允许每次创建1个新实例。 最大浪涌部署副本数为100%,当前2个实例进行滚动升级,允许立即创建2个新实例。 滚动升级的更多详细介绍请参见在线服务部署滚动升级。 |
| 更多配置 > 最大无效部署副本数(%) | 每次滚动升级能少于目标部署副本的最大数量。当采用百分比计数时,则会按照实际实例数进行计算并向下取整。 例如:
若最大无效部署副本数等于目标部署副本数,则部署有停止风险(最小存活部署副本数 = 部署副本数 - 最大无效部署副本数)。 例如: 服务运行时,如果最大无效实例数为100%,原本1个实例被故障快恢删除,服务不会变为异常,但确实无法预测,可能导致在线服务中断。 若需实现无损升级,建议将最大无效实例设为1%(需要占用额外资源,请确保资源充足,否则将导致更新失败),来保障服务持续可用、不中断。 滚动升级的更多详细介绍请参见在线服务部署滚动升级。 |
部署在线服务-高级配置
| 参数 | 说明 |
|---|---|
| 密钥配置 | 推理服务支持凭据挂载功能,通过Secret机制实现敏感信息的加密存储与安全注入,确保敏感数据在挂载至容器时得到妥善保护。为确保您的数据安全,请勿输入明文敏感信息。
确认是否勾选“关联镜像用户组ID”,支持关联镜像启动用户的用户组ID,关联后可提升Secret挂载安全性。 |
| 智能路由策略 | 开启智能路由后,需要配置智能路由策略,支持如下策略:
智能路由策略更多详细信息请参见智能路由策略章节。 |
| 自定义监控采集指标 | 开启后,需填写指标采集端口信息,自定义指标将上报至应用运维管理(AOM)服务的Prometheus实例中,后续可前往该服务进行指标查询。如需查询自定义指标,请参见AOM指标查询和在ModelArts平台查看在线服务性能指标。 约束与限制
自定义指标数据格式 自定义指标数据的格式必须是符合open metrics规范的文本,即每个指标的格式应为: <指标名称>{<标签名称>=<标签值>,...} <采样值> [毫秒时戳] 举例如下(#开头为注释,非必需): # HELP http_requests_total The total number of HTTP requests.
# TYPE http_requests_total gauge
html_http_requests_total{method="post",code="200"} 1656 1686660980680
html_http_requests_total{method="post",code="400"} 2 1686660980681 |
| 系统日志上报 | 仅NPU专属资源池会展示此参数。开启后,系统日志将挂载到固定并行文件系统内,以便后续运维工程师进行分析,系统日志将存储30天,30天后自动删除。系统日志的挂载路径不可修改。 |
部署在线服务-确认配置
在“部署在线服务>确认配置”页面,确认配置信息无误后,单击“确认部署”。
部署服务一般需要运行一段时间,根据您选择的数据量和资源不同,部署时间将耗时几分钟到几十分钟不等。
您可以前往在线服务列表,查看在线服务的基本情况。在线服务列表中,刚部署的服务“状态”为“部署中”,当在线服务的“状态”变为“运行中”时,表示服务部署完成。
在线服务部署完成后,将立即启动。服务状态为“运行中”,“告警”状态下正常运行实例正在产生费用,不使用时,请及时停止。
后续操作
- 测试在线服务、实时比对模型效果、通过CloudShell调试在线服务等操作,请参见测试在线服务。
- 查看在线服务详情等操作,请参见查看在线服务详情
- 修改、停止、删除在线服务等操作,请参见管理在线服务部署的生命周期
