当前只支持PyTorch框架使用交换机亲和性调度2.0。
使用说明
- 本章节所指交换机默认为Leaf交换机,一个交换机下的节点可以被多个跨交换机任务调度。
- 跨交换机任务是指一个任务的Pod可以部署在多个交换机的节点下。
- 交换机存在以下几种状态,用户可以通过kubectl describe cm -n volcano-system tor-share-cm命令查询集群中的交换机状态。
ConfigMap中关键字段取值说明如下。
- IsSharedTor:取值为0表示空闲交换机;取值为1表示共享交换机;取值为2表示独占交换机。
- IsHealthy:取值为0表示健康共享交换机;取值为1表示非健康共享交换机。
- 独占交换机:该交换机下只存在一个跨交换机任务,并且不允许新的跨交换机的任务调度到该交换机下的节点。
- 共享交换机:被多个跨交换机任务使用的交换机。
- 健康共享交换机:交换机下的任务使用的共享交换机数量都满足集群最大共享交换机数量要求。
- 非健康共享交换机:交换机下任务使用的共享交换机数量大于集群最大共享交换机数量要求。
大模型任务不能调度到非健康共享交换机下的节点,填充任务和普通任务可以调度到非健康共享交换机。
- 空闲交换机:该交换机下的节点没有任务或者只有填充任务。
- 任务使用的共享交换机数量不能超过集群共享交换机数量限制。
普通任务交换机亲和性
- 如果集群资源能满足大模型任务调度逻辑,使用大模型任务的调度逻辑进行调度。
- 如果集群资源无法满足大模型任务调度逻辑,优先占满集群中所有的空闲交换机,并且修改交换机属性为独占;剩余未调度的N个Pod使用共享交换机。剩余N个Pod优先调度到非健康的共享交换机下的节点,然后再调度到只有普通任务的共享交换机下的节点,如果还有Pod未进行调度,则将任务状态修改为Pending。
大模型任务交换机亲和性
表1 节点亲和性策略亲和性调度策略
|
详细内容
|
独占交换机调度策略
|
按照交换机下可用节点数量,从大到小依次占满空闲交换机下的节点,直到剩余N个Pod未进行调度或者无法占满单个交换机下的节点。
被占满的空闲交换机属性修改为独占交换机,未调度的N个Pod使用共享交换机,遵循共享交换机调度策略。
|
共享交换机调度策略
|
优先使用独占交换机策略,占满空闲交换机下的节点后还剩余N个Pod未被调度,将采取以下共享交换机调度策略。 - 集群中任务可使用的共享交换机数量为1时
- 选择共享交换机节点数量最接近N的交换机进行调度。
- 如果没有共享交换机满足,选择空闲交换机最接近N的交换机进行调度,并将该交换机属性修改为共享交换机。
- 集群中任务可使用的共享交换机数量为2时
- 选择一个共享交换机下可用节点数量,或者两个共享交换机下可用节点数量之和最接近N的交换机进行调度。
- 如果一个交换机和两个交换机组合的节点数量相同,优先选择两个交换机的组合。
- 如果没有共享交换机满足,选择空闲且独占交换机最接近N的交换机进行调度,并将该交换机属性修改为共享交换机。
|
填充任务交换机亲和性
不允许跨交换机调度,只允许将Pod部署在单个交换机内。优先使用独占交换机下节点数最接近任务Pod数的交换机下的节点,其次选择共享交换机下的节点,最后选择空闲交换机下的节点。
故障重调度
当任务所在节点或昇腾AI处理器出现故障时,任务会发生故障重调度。重调度前使用正常节点的Pod将会再次调度到原节点继续训练,故障节点上的Pod重新选择节点。优先选择重调度前任务使用的独占交换机下的其他节点,其次选择重调度前任务使用的共享交换机下的其他节点,最后使用重调度前未使用的节点。