Volcano

获取集群调度组件信息

  • VolcanoJob接口由开源组件Volcano提供,MindCluster修改了VolcanoJob接口的Annotations字段,如表1所示。其他接口未改动,了解开源Volcano的详细说明请参见Volcano开源社区。

    表 1 Annotations参数说明

    参数名称 说明 取值
    distributed 由Resilience Controller写入和使用,标记job是否为分布式任务。 true
  • 对于volcano-scheduler和volcano-controller组件Pod开放的接口(开源组件本身定义),做出如下说明。

    表 2 集群调度Volcano组件开放接口列表

    访问方式 协议 方法 作用 所属组件
    http://podIP:11251/healthz http Get 健康检查端口 volcano-controller
    http://podIP:11251/healthz http Get 健康检查端口 volcano-scheduler
    http://volcano-scheduler-serviceIP:8080/metrics http Get Prometheus信息收集端口 volcano-scheduler

    Note

    • 为保证Volcano健康检查端口和Prometheus信息收集端口的正常访问,请在安装Volcano时,将YAML中的--enable-healthz参数和--enable-metrics参数的值设置为“true”,详细修改方法可参见安装Volcano中“步骤7”。
    • 华为云的CCI服务提供了更为详细的VolcanoJob说明,可参见《云容器实例 API参考》中“创建Volcano Job”章节了解相关内容。

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 推理卡)调度策略
  • card
  • chip
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

指定逻辑超节点芯片数量。

整数

VolcanoAscend 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状态)功能。需手动配置。

  • “on”:开启
  • 其他取值:关闭

不配置则默认关闭。

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 PluginAscend OperatorVolcano

fault-scheduling

任务故障重调度开关

grace、force、off

VolcanoResilience Controller

elastic-scheduling

任务弹性调度开关

on

Resilience ControllerVolcano

fault-retry-times

任务发生业务面故障可以重调度的次数

0-100

VolcanoAscend Operator

tor-affinity

交换机亲和性策略

  • normal-schema
  • large-model-schema
  • null

Volcano

npu-310-strategy

标记推理服务器(插Atlas 300I 推理卡)调度策略

  • card
  • chip

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

指定逻辑超节点芯片数量。

整数

VolcanoAscend 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使用说明

Type

Status

Reason

Message

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

节点状态检测开关是否打开

  • True
  • False

-

- 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

  • 取值为1,终止所有训练进程
  • 取值为0,不做处理

-

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

配置信息内容

键值对集合

-