ModelArts基于最新Atlas 950 SuperPoD的调度方式
专属资源池的能力说明
调度策略说明
ModelArts调度器支持四种作业排队调度策略,适用于不同的资源管理和业务场景。策略在资源池级别配置,影响该资源池内所有作业的调度顺序和行为。
1 FIFO(先入先出)
策略说明:作业按优先级和创建时间排序,从队首开始依次调度,当前申请资源被锁时,作业无法成功调度。当某个作业因资源不足调度失败时,对当前作业申请资源进行加锁,继续尝试下一个作业。
适用场景:
- 资源紧张、优先级严格的场景,确保高优先级作业优先获得资源,低优先级作业不会"插队"占用本应属于前方作业的资源。
- 独占型资源池:资源池容量有限,希望作业严格按顺序排队。
2 遍历调度
策略说明:作业按优先级和创建时间排序,依次调度。当某个作业因资源不足调度失败时,跳过该作业,继续尝试调度后续作业,直到遍历完整个队列。
适用场景:
- 资源碎片化场景:队列中作业资源需求差异较大,前方大作业失败不应阻塞后方小作业。
- 资源利用率优先:希望尽可能多地调度作业,最大化资源利用率。
3 阶梯轮询调度
策略说明:在FIFO基础上引入超时机制:作业调度失败后,在超时时间内对资源加锁,阻塞后续作业(行为同FIFO);超时后不再对资源加锁,自动放行后续作业,扩大可调度范围,避免前方作业长期占用队列导致资源闲置。
适用场景:
- 兼顾顺序和利用率:既希望保持一定的排队顺序,又不想因前方作业长期等待导致资源浪费。
- 资源弹性释放场景:前方作业等待的资源可能在短时间内释放(如其他作业完成),超时前保持等待;超时后允许后方作业先使用。

4 分级调度
策略说明:按作业优先级划分为两个层级,每个层级独立调度,优先级为1和2的作业使用遍历调度策略,优先级为3的作业使用阶梯轮询调度策略。优先级为3的作业全部调度完成后,才会调度优先级1和2的作业。
适用场景:
- 多租户/多业务场景:不同业务线有不同优先级,需确保高优先级业务优先获得资源。
- 混合调度需求:不同优先级层级需要不同的调度行为(如高优先级严格排队、低优先级允许插队)。
ModelArts训练调度方式
资源池中的volcano调度器根据节点的物理网络拓扑关系,构建了一张集群网络拓扑,并用新的CRD-HyperNode用于统一描述集群网络拓扑。
每个HyperNode代表一个网络性能域,节点间的通信效率取决于它们之间的HyperNode层级跨度。
- node0和node1属于HyperNode0(tier 1),通信效率最高。
- node0和node2属于HyperNode4(tier 2),通信效率较低。
- node0和node4属于HyperNode6(tier 3),通信效率最差。
A5网络整体可分为参数面、L2超平面、L1超平面三种网络。
- L1超平面对应tier 1层级的HyperNode,该层级内的节点都在同一机柜中(Slice)且节点之间可通过L1超平面通信。
- L2超平面对应tier 2层级的HyperNode,该层级内的节点在同一超平面网络中(HyperinstanceGroup)。
- 参数面对应tier 3层级的HyperNode,该层级内的节点在同一参数面网络中(Cluster)。
A5的节点网络拓扑如下所示:
在A5场景,ModelArts训练作业会将Job划分为多个Group,并在调度之前设置Job的网络层级约束和Group的网络层级约束。网络层级约束的含义是Job和Group内部的所有实例必须部署在同一个HyperNode内(所有节点的最小公共祖先HyperNode),且该HyperNode的层级不超过指定层级。例如Job的网络层级约束设置为tier 2,group的网络层级约束设置为tier 1,这表示Job的所有节点必须在同一个HyperinstanceGroup中,Group的所有节点必须在同一Slice中。
预期调度结果如图6所示。
不可能发生的调度结果如图7所示。
ModelArts推理调度方式
推理任务调度的核心逻辑由KubeInfer完成,KubeInfer是由ModelArts推理平台自研的Operator。其采用两层CRD结构,底层CRD兼容LeaderWorkerSet(LWS)开源规范:
Kube-Infer (顶层 CRD) ├── Instance 0 (实例副本) │ ├── Role 0 (角色) → LWS │ │ ├Group 0 (角色副本) │ │ ├── Pod (Rank 0) │ │ └── Pod (Rank 1) │ └── Role 1 (角色) │ ├Group 1 (角色副本) │ ├── Pod (Rank 0) │ └── Pod (Rank 1) ├── Instance 1 (实例副本) └── Instance 2 (实例副本)
核心概念:
| 概念 | 描述 |
|---|---|
| Instance | 实例副本,一个服务对应一个KubeInfer,可包含多个完全相同的实例副本。 |
| Role | 角色,实例内存在的完全独立的角色,每个角色允许存在多个副本。 |
| Group | 角色副本,用于标识同一角色内的不同推理副本。 |
| Rank | 推理rank,用于标识同一副本内的不同Pod。 |
整体结构如下图所示:
其核心调度目标包括:
1、面向A5集群的拓扑感知调度:实现角色副本的拓扑感知调度,确保同组Pod调度到同一A5物理超节点内。
2、Gang调度:将分布式推理任务(包含多个Role)作为原子单元进行Gang Scheduling。
调度规则:
- Instance作为基本的调度单位,为每个Instance创建一个PodGroup,支持PodGroup级的网络拓扑亲和配置,调度时可保证Instance内所有的pod亲和到指定的网络性能域。
- Instance内的单元支持分组调度,PodGroup通过SubGroupPolicy可分成多个subGroup,每个subgroup配置独立亲和性调度策略。
- 单元内按Group分组,如decode-1,decode-2,…,支持按Group配置网络拓扑亲和配置,调度时可保证Group内所有的pod亲和到指定的网络性能域。
- 支持SubGroup级的组调度(Gang)原则,即当一个分组内所有Pod均满足调度条件时,本分组才允许被调度,支持最小调度配置。
- 由于部署形态的多样性,role和每个role下的最少启动副本数均有要求,subgroup遵循的Gang调度原则按照角色副本数的最小启动数配置。
- 由于A5集群中存在柜、超节点等多个层级的性能域,在典型的推理P、D分离部署形态下,如果每个P、D所需的节点数大于1个时,建议每个P、D实例的多个Pod应尽可能调度在最优的性能域内,在资源充足时尽量调度到一个柜内,以避免跨柜部署引入的带宽和时延损耗,提升推理性能。

