Volcano
获取集群调度组件信息
PodGroup
表 1 集群调度组件对PodGroup label使用说明
| 名称 |
作用 |
取值 |
使用组件 |
| ring-controller.atlas |
标识Atlas的Pod |
- ascend-npu
- ascend-910
- ascend-{xxx}b
|
Ascend Device Plugin、Ascend Operator、Volcano |
| fault-scheduling |
任务故障重调度开关 |
grace、force、off |
Volcano、Resilience Controller |
| elastic-scheduling |
任务弹性调度开关 |
on |
Volcano、Resilience Controller |
| fault-retry-times |
任务发生业务面故障可以重调度的次数 |
0-100 |
Volcano、Ascend Operator |
| tor-affinity |
交换机亲和性策略 |
- normal-schema
- large-model-schema
- null
|
Volcano |
| npu-310-strategy |
标记推理服务器(插Atlas 300I 推理卡)调度策略 |
|
Volcano |
| pod-rescheduling |
是否启用Pod级别重调度。 |
- on:开启Pod级别重调度
- 其他值或不使用该字段:关闭Pod级别重调度
|
Volcano |
| process-recover-enable |
是否启用进程级别重调度。 |
- on:开启进程级别重调度
- 其他值或不使用该字段:关闭进程级别重调度
|
Volcano |
| subHealthyStrategy |
亚健康处理策略。 |
- ignore:忽略该亚健康节点,后续任务在亲和性调度上不优先调度该节点。
- graceExit:不使用亚健康节点,并保存临终CKPT文件后,进行重调度,后续任务不会调度到该节点。
- forceExit:不使用亚健康节点,不保存任务直接退出,进行重调度,后续任务不会调度到该节点。
- hotSwitch:执行亚健康热切,拉起备份Pod后,暂停训练任务,并使用新节点重新拉起训练。
|
Volcano |
| huawei.com/scheduler.softShareDev.aicoreQuota |
软切分任务请求的AICore百分比。 |
[1, 100] |
Volcano |
| huawei.com/scheduler.softShareDev.hbmQuota |
软切分任务请求的高带宽内存量。 |
[1, maxHBM] maxHBM为通过npu-smi info命令查询出的HBM-Usage(MB)中HBM的值。 |
Volcano |
| huawei.com/scheduler.softShareDev.policy |
软切分任务的策略。 |
- fixed-share
- elastic
- best-effort
|
Volcano |
表 2 集群调度组件对PodGroup annotations使用说明
名称
|
作用
|
取值
|
使用组件
|
sp-block
|
指定逻辑超节点芯片数量。
|
整数
|
Volcano、Ascend Operator
|
huawei.com/schedule_policy
|
指定调度策略。
|
目前支持表3中的配置。
|
Volcano
|
sp-fit
|
超节点调度策略。
|
- idlest:逻辑超节点会往更空闲的物理超节点调度。
- 非idlest:逻辑超节点会优先占满物理超节点。
|
Volcano
|
huawei.com/schedule_minAvailable
|
任务能够调度的最小副本数。
|
整数
|
Volcano
|
huawei.com/recover_policy_path
|
任务重调度策略。
|
pod:只支持Pod级重调度,不升级为Job级别。(当使用vcjob时,需要配置该策略:policies: -event:PodFailed -action:RestartTask)
|
Volcano
|
huawei.com/schedule_enable_dequeue
|
是否启动任务可出队(从Inqueue变为Pending状态)功能。需手动配置。
|
不配置则默认关闭。
|
Volcano
|
huawei.com/schedule_dequeue_frequency
|
记录任务出队次数。Volcano自动更新。
|
任务出队1次,该值加1。
任务不处于Inqueue、Pending状态时,删除该值。
|
Volcano
|
huawei.com/schedule_enqueue_time
|
记录任务入队(从Pending变为Inqueue状态)时间。Volcano自动更新。
|
毫秒级时间戳。
- 若任务入队超5分钟且开启了可出队功能,当有其他任务需要入队时,此任务会出队释放资源,以便其他任务可以入队。
- 任务不处于Inqueue状态时,删除该值。
|
Volcano
|
huawei.com/affinity-config
|
配置任务的多级调度的亲和性层级。
|
level1=x,level2=y,... 其中x,y...为对应的网络层级子任务大小。 要求满足格式为leveli=ni的字符串的拼接,中间使用英文逗号分隔。其中,i为网络层级序号,ni为该网络层级子任务的副本数量。例如,对于总副本数量为8的任务“level1=2,level2=4”,表示任务Pod中每2个Pod分配到有相同level1标签的节点上,每4个Pod分配到有相同level2标签的节点上。 网络层级配置需要满足以下要求: - 任务层级大于1层时,层级n的值必须是n-1的整数倍。
- 任务总副本数量必须是所有层级的整数倍。
- 任务层级配置必须从level1开始,从小到大连续的。
|
Volcano
|
表 3 huawei.com/schedule_policy配置说明
| 配置 |
说明 |
| chip4-node8 |
1个节点8张芯片,每4个芯片形成1个互联环。例如,Atlas 800 训练服务器(型号 9000)/Atlas 800 训练服务器(型号 9010)芯片的整模块场景/Atlas 350 标卡共8张卡,每4张卡通过UB扣板连接。 |
| chip1-node2 |
1个节点2张芯片。例如,Atlas 300T 训练卡的插卡场景,1张卡最多插1个芯片,1个节点最多插2张卡。 |
| chip4-node4 |
1个节点4张芯片,形成1个互联环。例如,Atlas 800 训练服务器(型号 9000)/Atlas 800 训练服务器(型号 9010)芯片的半配场景。 |
| chip8-node8 |
1个节点8张卡,8张卡都在1个互联环上。例如,Atlas 800T A2 训练服务器 /Atlas 850 系列硬件产品。 |
| chip8-node16 |
1个节点16张卡,每8张卡在1个互联环上。例如,Atlas 200T A2 Box16 异构子框。 |
| chip2-node8 |
1个节点8张卡,每2张卡在1个互联环上。 |
| chip2-node16 |
1个节点16张卡,每2张卡在1个互联环上。例如,Atlas 800T A3 超节点服务器。 |
| chip2-node8-sp |
1个节点8张卡,每2张卡在1个互联环上,多个服务器形成超节点。例如,Atlas 9000 A3 SuperPoD 集群算力系统。 |
| chip2-node16-sp |
1个节点16张卡,每2张卡在1个互联环上,多个服务器形成超节点。例如,Atlas 900 A3 SuperPoD 超节点。 |
| chip4-node16 |
1个节点16张卡,每4张卡都在1个互联环上。例如,Atlas 350 标卡共16张卡,每4张卡通过UB扣板连接。 |
| chip1-node8 |
1个节点8张卡,每张卡之间无互联。例如,Atlas 350 标卡共8张卡,每张卡之间无互联。 |
| chip1-node16 |
1个节点16张卡,每张卡之间无互联。例如,Atlas 350 标卡共16张卡,每张卡之间无互联。 |
| chip8-node8-sp |
1个节点8张卡,8张卡都在1个互联环上,多个服务器形成超节点。例如,Atlas 850 系列硬件产品(超节点服务器)。 |
| chip8-node8-ra64-sp |
1个节点8张卡,8张卡都在1个互联环上,64个节点组成一个计算框,多个框形成超节点。例如,Atlas 950 SuperPoD。 |
| chip1-softShareDev |
软切分虚拟化专用调度策略。 |
| multilevel |
多级调度场景使用,多级调度的详细使用方法请参见多级调度。 |
Pod
表 1 集群调度组件对Pod label使用说明
名称
|
作用
|
取值
|
使用组件
|
ring-controller.atlas
|
标识Atlas的Pod
|
- ascend-910
- ascend-{xxx}b
- huawei.com/npu
|
Ascend Device Plugin、Ascend Operator、Volcano
|
fault-scheduling
|
任务故障重调度开关
|
grace、force、off
|
Volcano、Resilience Controller
|
elastic-scheduling
|
任务弹性调度开关
|
on
|
Resilience Controller、Volcano
|
fault-retry-times
|
任务发生业务面故障可以重调度的次数
|
0-100
|
Volcano、Ascend Operator
|
tor-affinity
|
交换机亲和性策略
|
- normal-schema
- large-model-schema
- null
|
Volcano
|
npu-310-strategy
|
标记推理服务器(插Atlas 300I 推理卡)调度策略
|
|
Volcano
|
pod-rescheduling
|
是否启用Pod级别重调度。
|
- on:开启Pod级别重调度
- 其他值或不使用该字段:关闭Pod级别重调度
|
Volcano
|
process-recover-enable
|
是否启用进程级别重调度。
|
- on:开启进程级别重调度
- 其他值或不使用该字段:关闭进程级别重调度
|
Volcano
|
subHealthyStrategy
|
亚健康处理策略
|
- ignore:忽略该亚健康节点,后续任务在亲和性调度上不优先调度该节点。
- graceExit:不使用亚健康节点,并保存临终CKPT文件后,进行重调度,后续任务不会调度到该节点。
- forceExit:不使用亚健康节点,不保存任务直接退出,进行重调度,后续任务不会调度到该节点。
- hotSwitch:执行亚健康热切,拉起备份Pod后,暂停训练任务,并使用新节点重新拉起训练。
|
Volcano
|
表 2 集群调度组件对Pod annotations使用说明
名称
|
作用
|
取值
|
使用组件
|
sp-block
|
指定逻辑超节点芯片数量。
|
整数
|
Volcano、Ascend Operator
|
huawei.com/schedule_policy
|
指定调度策略。
|
目前支持表3中的配置。
|
Volcano
|
sp-fit
|
超节点调度策略。
|
- idlest:逻辑超节点会往更空闲的物理超节点调度。
- 非idlest:逻辑超节点会优先占满物理超节点。
|
Volcano
|
huawei.com/schedule_minAvailable
|
任务能够调度的最小副本数。
|
整数
|
Volcano
|
huawei.com/recover_policy_path
|
任务重调度策略。
|
pod:只支持Pod级重调度,不升级为Job级别。(当使用vcjob时,需要配置该策略:policies: -event:PodFailed -action:RestartTask)
|
Volcano
|
huawei.com/affinity-config
|
配置任务的多级调度的亲和性层级。
|
level1=x,level2=y,... 其中x,y...为对应的网络层级子任务大小。 要求满足格式为leveli=ni的字符串的拼接,中间使用英文逗号分隔。其中,i为网络层级序号,ni为该网络层级子任务的副本数量。例如,对于总副本数量为8的任务“level1=2,level2=4”,表示任务Pod中每2个Pod分配到有相同level1标签的节点上,每4个Pod分配到有相同level2标签的节点上。 网络层级配置需要满足以下要求: - 任务层级大于1层时,层级n的值必须是n-1的整数倍。
- 任务总副本数量必须是所有层级的整数倍。
- 任务层级配置必须从level1开始,从小到大连续的。
|
Volcano
|
huawei.com/skip-ascend-plugin
|
允许一些特殊任务(如不需要NPU资源的任务)绕过 Ascend-for-volcano的默认检查逻辑。
|
不设置或者设置为"enabled"
|
Volcano
|
表 3 集群调度组件对PodGroup Status.Conditions使用说明
Unschedulable
|
True
|
JobEnqueueFailed
|
任务由于集群NPU资源不足,导致入队失败
|
Unschedulable
|
True
|
JobValidateFailed
|
任务校验失败,通常包含pod数量不足、请求资源不合规范、或者是不支持的任务类型
|
Unschedulable
|
True
|
NodePredicateFailed
|
节点过滤失败,包含详细的节点过滤错误信息
|
Unschedulable
|
True
|
BatchOrderFailed
|
批量节点排序失败,包含详细的排序错误信息
|
任务信息
tor-share-cm
表 1 tor-share-cm
名称
|
作用
|
取值
|
备注
|
IsHealthy
|
节点对应的交换机状态
|
字符串
|
-
|
IsSharedTor
|
节点对应的交换机属性
|
字符串
|
-
|
NodeIP
|
节点IP
|
字符串
|
-
|
NodeName
|
节点名称
|
字符串
|
-
|
JobName
|
任务名称
|
字符串
|
-
|
vcjob-fault-npu-cm
表 2 vcjob-fault-npu-cm字段说明
名称
|
作用
|
取值
|
备注
|
fault-node
|
故障节点信息
|
-
|
-
|
- NodeName
|
节点名称
|
字符串
|
-
|
- UpdateTime
|
-
|
64位整数类型
|
-
|
- UnhealthyNPU
|
故障节点上芯片故障的芯片集合
|
字符串切片
|
-
|
- NetworkUnhealthyNPU
|
故障节点上网络故障的芯片集合
|
字符串切片
|
-
|
- NodeDEnable
|
节点状态检测开关是否打开
|
|
-
|
- NodeHealthState
|
节点健康状态
|
字符串
|
-
|
FaultDeviceList
|
-
|
-
|
-
|
- fault_type
|
故障类型对象
|
- CardUnhealthy:芯片故障
- CardNetworkUnhealthy:芯片网络故障
- NodeUnhealthy:节点故障
|
-
|
- npu_name
|
故障的芯片名称,节点故障时为空
|
字符串
|
-
|
- fault_level
|
故障处理类型,节点故障时取值为空
|
- NotHandleFault:不做处理
- RestartRequest:推理场景需要重新执行推理请求,训练场景重新执行训练业务
- RestartBusiness:需要重新执行业务
- FreeRestartNPU:影响业务执行,待芯片空闲时需复位芯片
- RestartNPU:直接复位芯片并重新执行业务
- SeparateNPU:隔离芯片
- PreSeparateNPU:预隔离芯片,会根据训练任务实际运行情况判断是否重调度
|
- fault_level、fault_handling和large_model_fault_level参数功能一致,推荐使用fault_handling。
- 若推理任务订阅了故障信息,任务使用的推理卡上发生RestartRequest故障且故障持续时间未超过60秒,则不执行任务重调度;若故障持续时间超过60秒仍未恢复,则隔离芯片,进行任务重调度。
|
- fault_handling
|
- large_model_fault_level
|
- fault_code
|
故障码,由英文逗号拼接而成的字符串
|
字符串
|
- Disconnected:芯片网络不连通故障。
- heartbeatTimeOut:节点状态丢失故障
|
remain-retry-times
|
任务剩余可重调度信息
|
-
|
-
|
- UUID
|
任务UID
|
字符串
|
-
|
- Times
|
任务剩余可重调度次数
|
整数类型
|
-
|
reset-config-<任务名称>
MindCluster集群调度组件通过K8s将设备和训练任务状态等信息写入reset-config-<任务名称> ConfigMap中,并映射到容器内。Elastic Agent读取后进行相应的故障检测与处理。
表 3 reset-config-<job-name>
字段名称
|
名称
|
作用
|
取值
|
备注
|
reset.json
|
RankList
|
芯片列表
|
-
|
-
|
RankId
|
故障任务使用的Rank信息
|
整数类型
|
-
|
LogicId
|
芯片逻辑ID
|
32位整数类型
|
-
|
Status
|
芯片状态
|
- unrecovered:未恢复
- recovered:恢复成功
- failed:恢复失败
|
-
|
Policy
|
热复位策略
|
- empty:无故障
- ignore:忽略故障
- restart_request:重新执行当前请求
- restart:重新执行训练任务
- free_reset:当NPU上没有任务时,需要重启设备
- reset:需要重启设备
- isolate:需要隔离设备
|
-
|
InitialPolicy
|
初始热复位策略
|
- empty:无故障
- ignore:忽略故障
- restart_request:重新执行当前请求
- restart:重新执行训练任务
- free_reset:当NPU上没有任务时,需要重启设备
- reset:需要重启设备
- isolate:需要隔离设备
|
-
|
ErrorCode
|
十进制故障码
|
64位整型数组
|
-
|
GracefulExit
|
管理训练进程
|
0或1
|
-
|
FaultFlushing
|
告知Elastic Agent当前是否有故障正在刷新
|
取值为true或false
- true:表示有故障正在刷新
- false表示当前无故障刷新
|
Elastic Agent需要等待该字段为false且故障RankList无本节点故障时才会拉起训练进程
|
RestartFaultProcess
|
告知Elastic Agent当前是否仅重启本节点故障进程
|
取值true或false
- true:当本节点有故障时,仅重启本节点故障进程
- false:当本节点有故障时,退出本节点所有进程且退出Elastic Agent
|
当故障RankList有本节点故障时此字段才生效
|
ErrorCodeHex
|
十六进制故障码
|
字符串
|
-
|
restartType
|
-
|
reset.json更新的类型
|
podReschedule或hotReset
|
单Pod重调度情况下取值为podReschedule,热恢复场景下取值为hotReset
|
mindx-dl/job-reschedule-reason
该ConfigMap用于记录任务重调度历史信息,默认情况下会保存任务最近的十次重调度记录,当ConfigMap内容超过950Kb时会依次删除每个任务中发生时间最早的记录。
表 4 任务字段说明
字段名称
|
名称
|
作用
|
取值
|
备注
|
任务ns/任务名
|
-
|
标记执行重调度的任务名称。
|
字符串
|
-
|
JobID
|
任务ID
|
字符串
|
-
|
TotalRescheduleTimes
|
该任务在Volcano本次生命周期内记录的重调度总次数
|
整数
|
-
|
RescheduleRecords
|
记录本任务重调度的具体信息。
|
-
|
-
|
表 5 RescheduleRecords说明
字段名称
|
名称
|
作用
|
取值
|
备注
|
RescheduleRecords
|
LogFileFormatTime
|
按Volcano日志格式记录的重调度时间
|
字符串
|
-
|
RescheduleTimeStamp
|
重调度发生的时间戳
|
字符串
|
-
|
ReasonOfTask
|
记录本次重调度的具体信息。
|
-
|
-
|
表 6 ReasonOfTask说明
字段名称
|
名称
|
作用
|
取值
|
备注
|
ReasonOfTask
|
RescheduleReason
|
重调度原因
|
字符串
|
-
|
PodName
|
本次重调度首先触发的pod
|
字符串
|
-
|
NodeName
|
节点名称
|
字符串
|
本次重调度首先触发的node。
|
NodeRankIndex
|
本次重调度首先触发的node在训练中所属rank
|
字符串
|
-
|
参数面网络拓扑配置
basic-tor-node-cm
表 1 basic-tor-node-cm
名称
|
作用
|
取值
|
备注
|
version
|
basic-tor-node-cm的版本
|
1.0
|
-
|
tor_count
|
集群中交换机下的节点数
|
整数类型
|
-
|
server_list
|
集群节点按交换机为单位划分的集合
|
-
|
-
|
- tor_id
|
交换机的序号
|
整数类型
|
-
|
- tor_ip
|
交换机的IP地址
|
字符串
|
-
|
server
|
交换机下的节点信息
|
-
|
-
|
- server_ip
|
节点的IP地址
|
字符串
|
-
|
- npu_count
|
节点上NPU芯片的数量
|
整数类型
|
-
|
- slice_id
|
节点在交换机下的编号
|
整数类型
|
-
|
Volcano调度器配置
volcano-scheduler-configmap
表 1 volcano-scheduler-configmap字段说明
名称
|
作用
|
取值
|
备注
|
actions
|
调度流程使用的动作
|
字符串
|
ascend-volcano-plugin使用了enqueue、allocate、backfill三个调度动作
|
plugins
|
调度流程使用的插件集合
|
-
|
-
|
- name
|
使用的插件名称
|
字符串
|
ascend-volcano-plugin使用了
priority、gang、conformance、volcano-npu_{version}_linux-{arch}、drf、predicates、proportion、nodeorder、binpack几种调度插件
|
configurations
|
调度器初始化的配置信息
|
-
|
-
|
- name
|
配置信息名称
|
init-params
|
-
|
- arguments
|
配置信息内容
|
键值对集合
|
-
|