任务YAML配置说明

acjob任务yaml参数说明

在acjob训练任务中,可使用的YAML参数说明如下表所示。

表 1 acjob任务关键字段说明

字段路径 类型 格式 描述
apiVersion 字符串 (string) - 定义对象表示的版本化资源模式。服务器会转换为最新内部值,拒绝不识别的版本。更多信息请参见Types
kind 字符串 (string) - 表示此对象对应的REST资源类型。值通过端点推断,不可更新,采用驼峰命名。更多信息请参见Resources
metadata 对象 (object) - Kubernetes元数据(如命名空间、标签等)。更多信息请参见Metadata
metadata.labels.app 字符串 (string) -

表明MindIE Motor任务在Ascend Job中的角色,取值包括mindie-ms-controller、mindie-ms-coordinator、mindie-ms-server。

  • acjob的任务YAML同时包含jobID和app这2个字段时,Ascend Operator组件会自动传入环境变量MINDX_TASK_ID、APP_TYPE、MINDX_SERVER_IP及MINDX_SERVER_DOMAIN,并将其标识为MindIE推理任务。
  • 关于以上环境变量的详细说明请参见Ascend Operator注入的训练环境变量
  • 该参数仅支持在Atlas 800I A3 超节点服务器Atlas 800I A2 推理服务器上使用。
metadata.labels.mind-cluster/scaling-rule: scaling-rule 字符串 (string) 标记扩缩容规则对应的ConfigMap名称。 仅支持MindIE Motor推理任务在Atlas 800I A3 超节点服务器和Atlas 800I A2 推理服务器上使用本参数。
metadata.labels.mind-cluster/group-name: group0 字符串 (string) 标记扩缩容规则中对应的group名称。 仅支持MindIE Motor推理任务在Atlas 800I A3 超节点服务器和Atlas 800I A2 推理服务器上使用本参数。
metadata.labels.framework 字符串 (string) - AI框架类型,取值为pytorch或mindspore。
metadata.labels.jobID 字符串 (string) - 当前MindIE Motor任务在集群中的唯一识别ID,用户可根据实际情况进行配置。该参数仅支持在Atlas 800I A3 超节点服务器和Atlas 800I A2 推理服务器上使用。
metadata.labels.pod-rescheduling

Pod级别重调度,表示任务发生故障后,不会删除所有任务Pod,而是将发生故障的Pod进行删除,重新创建新Pod后进行重调度。

  • on:开启Pod级别重调度
  • 其他值或不使用该字段:关闭Pod级别重调度
[!NOTE] 说明
  • 重调度模式默认为任务级重调度,若需要开启Pod级别重调度,需要新增该字段。
metadata.labels.process-recover-enable 字符串 (string) -

Ascend Operator会根据用户配置的recover-strategy自动给任务打上process-recover-enable=on标签,无需用户手动指定。

  • on:开启进程级别重调度及进程级在线恢复。

    进程级别重调度和优雅容错不能同时开启,若同时开启,断点续训将通过Job级别重调度恢复训练。

  • pause:暂时关闭进程级别重调度及进程级在线恢复。
  • off或不使用该字段:关闭进程级别重调度及进程级在线恢复。
metadata.annotations.recover-strategy 字符串 (string) -

任务可用恢复策略。recover-strategy配置在任务YAML的annotations下,取值为6种策略的随意组合,策略之间由逗号分割。

  • retry:进程级在线恢复。
  • recover:进程级别重调度。
  • recover-in-place:进程级原地恢复。
  • elastic-training:弹性训练。
  • dump:保存临终遗言。
  • exit:退出训练。
metadata.labels.subHealthyStrategy 字符串 (string) -

节点状态为亚健康(SubHealthy)的节点的处理策略。

  • ignore:忽略该亚健康节点,后续任务在亲和性调度上不优先调度该节点。
  • graceExit:不使用亚健康节点,并保存临终CKPT文件后,进行重调度,后续任务不会调度到该节点。
  • forceExit:不使用亚健康节点,不保存任务直接退出,进行重调度,后续任务不会调度到该节点。
  • hotSwitch:执行亚健康热切,拉起备份Pod后,暂停训练任务,并使用新节点重新拉起训练。
  • 默认取值为ignore。
[!NOTE] 说明
  • 使用graceExit策略时,需保证任务开启了临终CKPT保存功能。
  • hotSwitch策略的使用约束请参见使用约束
metadata.labels.fault-scheduling 字符串 (string) -
  • grace:配置任务采用优雅删除模式,并在过程中先优雅删除原Pod,15分钟后若还未成功,使用强制删除原Pod。进程级别重调度和进程级在线恢复场景,需将本参数配置为grace。
  • force:配置任务采用强制删除模式,在过程中强制删除原Pod。
  • off:该任务不使用断点续训特性,K8s的maxRetry仍然生效。
  • 无(无fault-scheduling字段):该任务不使用断点续训特性,K8s的maxRetry仍然生效。
  • 其他值:该任务不使用断点续训特性,K8s的maxRetry仍然生效。
metadata.labels.fault-retry-times 整数 (integer) int32

处理业务面故障,必须配置业务面可无条件重试的次数。

  • 0 < fault-retry-times:处理业务面故障,必须配置业务面可无条件重试的次数。
  • 无(无fault-retry-times)或0:该任务不使用无条件重试功能,无法感知业务面故障,vcjob的maxRetry仍然生效。
[!NOTE] 说明
  • 使用无条件重试功能需保证训练进程异常时会导致容器异常退出,若容器未异常退出则无法成功重试。
  • 当前仅Atlas 800T A2 训练服务器和Atlas 900 A2 PoD 集群基础单元支持无条件重试功能。
  • 进行进程级恢复时,将会触发业务面故障,如需使用进程级恢复,必须配置此参数。
metadata.labels.ring-controller.atlas 字符串 (string) - 用于区分任务使用的芯片的类型。
  • Atlas A2 训练系列产品、A200T A3 Box8 超节点服务器、Atlas 900 A3 SuperPoD 超节点、Atlas 800T A3 超节点服务器取值为:ascend-{xxx}b
  • Atlas 800 训练服务器,服务器(插Atlas 300T 训练卡)取值为:ascend-910
  • (可选)Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD取值为:ascend-npu
metadata.labels.podgroup-sched-enable 字符串 (string) -

仅在集群使用openFuyao定制Kubernetes和volcano-ext组件场景下配置。

  • 取值配置为字符串"true"时,表示开启批量调度功能。
  • 取值配置为其他字符串时,表示批量调度功能不生效,使用普通调度。

若不配置该参数,表示批量调度功能不生效,使用普通调度。

[!NOTE] 说明
  • 该参数只支持使用Volcano调度器的整卡调度特性。
  • 仅支持在Atlas 900 A3 SuperPoD 超节点和Atlas 800T A3 超节点服务器中使用本参数。
metadata.labels.tor-affinity 字符串 (string) -

默认值为null,表示不使用交换机亲和性调度。

  • large-model-schema:大模型任务或填充任务
  • normal-schema:普通任务
  • null:不使用交换机亲和性调度
[!NOTE] 说明
用户需要根据任务副本数,选择任务类型。任务副本数小于4为填充任务。任务副本数大于或等于4为大模型任务。普通任务不限制任务副本数。

用户需要根据任务类型进行配置。

  • 交换机亲和性调度1.0版本支持Atlas 训练系列产品Atlas A2 训练系列产品;支持PyTorchMindSpore框架。
  • 交换机亲和性调度2.0版本支持Atlas A2 训练系列产品;支持PyTorch框架。
  • 只支持整卡进行交换机亲和性调度,不支持静态vNPU进行交换机亲和性调度。
metadata.annotations['sp-block'] 字符串 (string) -

指定sp-block字段,集群调度组件会在物理超节点上根据切分策略划分出逻辑超节点,用于训练任务的亲和性调度。若用户未指定该字段,调度时会将此任务的逻辑超节点大小指定为任务配置的NPU总数。

  • 单机时需要和任务请求的芯片数量一致。
  • 分布式时需要是节点芯片数量的整数倍,且任务总芯片数量是其整数倍。

了解详细说明请参见灵衢总线设备节点网络说明

[!NOTE] 说明
metadata.annotations['ra-block'] 字符串 (string) -

框亲和性调度的标识符。指定ra-block字段,在支持动态配比的前提下,单框64卡被分为4个OS,每个OS在K8s集群中被认为是一个节点,框内通信时延比框间通信时延低,配置此字段用于训练任务的框亲和性调度。

取值范围是0 - 64且必须是2的幂次方。

穷举可得 ra-block 取值为 {1,2,4,8,16,32,64} 。

[!NOTE] 说明

仅支持在Atlas 950 SuperPoD 中使用该字段。

metadata.annotations.huawei.com/schedule_policy 字符串 (string) - 配置任务需要调度的AI芯片布局形态。Volcano会根据该字段选择合适的调度策略。目前支持huawei.com/schedule_policy配置说明中的配置。
huawei.com/affinity-config 字符串 (string) -

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开始,从小到大连续的。

spec 对象 (object) - AscendJob期望状态的规格描述。必填字段:replicaSpecs。
spec.template.metadata.annotations.huawei.com/recover_policy_path 字符串 (string) - 任务重调度策略。当取值为 pod 则只支持Pod级重调度,不升级为Job级别。当使用vcjob时,需要配置该策略:policies: -event:PodFailed -action:RestartTask
spec.template.metadata.annotations.huawei.com/schedule_minAvailable 整数 - 默认值为任务总副本数。Ascend Operator启用“gang”调度生效,且调度器为Volcano时,任务运行总副本数。
metadata.annotations.wait-reschedule-timeout 整数 (integer) int32

30~270

进程级别重调度处理时等待故障节点重调度的超时时间,单位为秒,默认值为270。

spec.replicaSpecs 对象 (object) - ReplicaType到ReplicaSpec的映射,指定MS集群配置。示例:{ "Scheduler": ReplicaSpec, "Worker": ReplicaSpec }。
spec.replicaSpecs.[ReplicaType] 对象 (object) - 副本的描述。
spec.replicaSpecs.[ReplicaType].replicas 整数 (integer) int32 副本数量,表示给定模板所需的副本数。默认为1。
spec.replicaSpecs.[ReplicaType].restartPolicy 字符串 (string) -

容器重启策略,默认为Never。当配置业务面故障无条件重试时,容器重启策略取值必须为"Never"。

  • Never:从不重启
  • Always:总是重启
  • OnFailure:失败时重启
  • ExitCode:根据进程退出码决定是否重启Pod,错误码是1~127时不重启,128~255时重启Pod。
[!NOTE] 说明

vcjob类型的训练任务不支持ExitCode。

spec.replicaSpecs.[ReplicaType].template 对象 (object) - Kubernetes Pod模板,更多信息请参见Kubernetes Pod模板
spec.replicaSpecs.[ReplicaType].template.spec.hostNetwork 字符串 (string) -
  • true:使用HostIP创建Pod。此种情况下,需要在YAML中同步配置环境变量HCCL_IF_IP为status.hostIP。当集群规模较大(节点数量>1000时),推荐使用HostIP创建Pod。
  • false:不使用HostIP创建Pod。未传入此参数或此参数的值为false时,不需要配置上述环境变量。
[!NOTE] 说明
当采用HostIp方式创建Pod,依然存在创建Pod速度慢且Pod之间通信速度慢的问题。此时推荐采用挂载RankTable文件的方式,通过解析RankTable文件获得Pod的hostIP,并将其注入到对应框架任务的环境变量中(如ms框架注入到环境变量MS_SCHED_HOST中),实现建链。
spec.replicaSpecs.[ReplicaType].template.spec.containers.name 字符串 (string) - 容器名称,当前必须为ascend。
spec.replicaSpecs.[ReplicaType].template.spec.containers.image 字符串 (string) - 训练镜像名称,请根据实际修改(用户在制作镜像章节制作的镜像名称)。
spec.replicaSpecs.[ReplicaType].template.spec.containers.ports 对象 (object) - 分布式训练集合通信端口。“name”取值只能为“ascendjob-port”,“containerPort”用户可根据实际情况设置,若未进行设置则采用默认端口2222。
  • spec.replicaSpecs.[ReplicaType].template.spec.containers.resources.requests
  • spec.replicaSpecs.[ReplicaType].template.spec.containers.resources.limits
对象 (object) -

限制请求的NPU或vNPU类型(只能请求一种类型)、数量,请根据实际修改。limits需要和requests的芯片名称和数量需保持一致。

整卡调度:

  • Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD :
    • 配置为 huawei.com/npu: x
  • 推理服务器(插Atlas 300I 推理卡):
    • 配置为 huawei.com/Ascend310: x
  • Atlas 推理系列产品非混插模式:
    • 配置为 huawei.com/Ascend310P: x
  • Atlas 推理系列产品混插模式:
    • 配置为 huawei.com/Ascend310P-V: x
    • 配置为 huawei.com/Ascend310P-VPro: x
    • 配置为 huawei.com/Ascend310P-IPro: x
  • 其他产品配置为 huawei.com/Ascend910: x

根据所使用芯片类型不同,x取值如下:

  • Atlas 800 训练服务器(NPU满配):
    • 单机单芯片任务:1
    • 单机多芯片任务:2、4、8
    • 分布式任务:1、2、4、8
  • Atlas 800 训练服务器(NPU半配):
    • 单机单芯片任务:1
    • 单机多芯片任务:2、4
    • 分布式任务:1、2、4
  • 服务器(插Atlas 300T 训练卡):
    • 单机单芯片任务:1
    • 单机多芯片任务:2
    • 分布式任务:2
  • Atlas 800T A2 训练服务器和Atlas 900 A2 PoD 集群基础单元:
    • 单机单芯片任务:1
    • 单机多芯片任务:2、3、4、5、6、7、8
    • 分布式任务:1、2、3、4、5、6、7、8
  • Atlas 200T A2 Box16 异构子框:
    • 单机单芯片任务:1
    • 单机多芯片任务:2、3、4、5、6、7、8、10、12、14、16
    • 分布式任务:1、2、3、4、5、6、7、8、10、12、14、16
  • Atlas 900 A3 SuperPoD 超节点、A200T A3 Box8 超节点服务器、Atlas 800T A3 超节点服务器:
    • 单机单芯片任务:1
    • 单机多芯片任务:2、4、6、8、10、12、14、16
    • 分布式任务:2、4、6、8、10、12、14、16
    • 针对Atlas 900 A3 SuperPoD 超节点的逻辑超节点亲和任务:16
  • Atlas 350 标卡(无互联节点内8卡):
    • 单机:1、2、3、4、5、6、7、8
    • 分布式:1、2、3、4、5、6、7、8
  • Atlas 350 标卡(无互联节点内16卡):
    • 单机:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
    • 分布式:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
  • Atlas 350 标卡(4P mesh 8卡):
    • 单机(满足亲和性):1、2、3、4、8
    • 单机(不保证亲和性):5、6、7
    • 分布式(满足亲和性):1、2、3、4、8
    • 分布式(不保证亲和性):5、6、7
  • Atlas 350 标卡(4P mesh 16卡):
    • 单机(满足亲和性):1、2、3、4、8、12、16
    • 单机(不保证亲和性):5、6、7、9、10、11、13、14、15
    • 分布式(满足亲和性):1、2、3、4、8、12、16
    • 分布式(不保证亲和性):5、6、7、9、10、11、13、14、15
  • Atlas 850 系列硬件产品(普通集群):
    • 单机:1、2、4、8
    • 分布式:1、2、4、8
  • Atlas 850 系列硬件产品(超节点集群):
    • 单机:1、2、4、8(sp-block参数取值与其保持一致)
    • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)
  • Atlas 950 SuperPoD 集群:
    • 单机:1、2、3、4、5、6、7、8(sp-block参数取值与其保持一致)
    • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)

静态vNPU调度:

huawei.com/Ascend910-Y: 1

取值为1。只能使用一个NPU下的vNPU。

如huawei.com/Ascend910-6c.1cpu.16g: 1

spec.replicaSpecs.{Master|Scheduler|Worker}.template.spec.containers[0].env[name==ASCEND_VISIBLE_DEVICES].valueFrom.fieldRef.fieldPath 字符串 (string) -

取值为metadata.annotations['huawei.com/AscendXXX'],其中XXX表示芯片的型号,支持的取值为910,310和310P。取值需要和环境上实际的芯片类型保持一致。

Ascend Docker Runtime会获取该参数值,用于给容器挂载相应类型的NPU。

[!NOTE] 说明
  • 该参数只支持使用Volcano调度器的整卡调度特性,使用静态vNPU调度和其他调度器的用户需要删除示例YAML中该参数的相关字段。
  • Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD需配置为metadata.annotations['huawei.com/npu']。
spec.replicaSpecs.{Master|Scheduler|Worker}.template.spec.terminationGracePeriodSeconds 整数 (integer)

0 < terminationGracePeriodSeconds < grace-over-time参数取值

容器收到SIGTERM到被K8s强制停止经历的时间,该时间需要大于0且小于volcano-v{version}.yaml文件中"grace-over-time"参数取值,同时还需要保证能够保存CKPT文件,请根据实际情况修改。具体说明请参见K8s官网容器生命周期回调

[!NOTE] 说明

只有当fault-scheduling配置为grace时,该字段才生效;fault-scheduling配置为force时,该字段无效。

spec.runPolicy 对象 (object) - 封装分布式训练作业的运行时策略(如资源清理、活动时间)。
spec.runPolicy.backoffLimit 整数 (integer) int32 作业失败前允许的重试次数(可选)。
  • 0 < backoffLimit:任务重调度次数。任务故障时,可以重调度的次数,当已经重调度次数与backoffLimit取值相同时,任务将不再进行重调度。
  • 无(无backoffLimit)或backoffLimit ≤ 0:不限制总重调度次数。
[!NOTE] 说明

同时配置了backoffLimit和fault-retry-times参数时,当已经重调度次数与backoffLimit或fault-retry-times取值有一个相同时,将不再进行重调度。

若不配置backoffLimit,但是配置了fault-retry-times参数,则使用fault-retry-times的重调度次数。

spec.runPolicy.activeDeadlineSeconds 整数 (integer) int64 作业保持活动的最长时间(秒),值必须为正整数。当前无意义,后续版本将会删除。
spec.runPolicy.cleanPodPolicy 字符串 (string) - 作业完成后清理Pod的策略。默认值为Running。当前无意义,后续版本将会删除。
spec.runPolicy.ttlSecondsAfterFinished 整数 (integer) int32 作业完成后的TTL(生存时间)。默认为无限,实际删除可能延迟。当前无意义,后续版本将会删除。
spec.runPolicy.schedulingPolicy 对象 (object) - 调度策略(如gang-scheduling)。
spec.runPolicy.schedulingPolicy.minAvailable 整数 (integer) int32 最小可用资源数,默认值为任务总副本数。Ascend Operator启用"gang"调度生效,且调度器为Volcano时,任务运行总副本数。
spec.runPolicy.schedulingPolicy.minResources 对象 (object) - 按资源名称分配的最小资源集合(支持整数或字符串格式)。
spec.runPolicy.schedulingPolicy.priorityClass 字符串 (string) - 优先级类名称。
spec.runPolicy.schedulingPolicy.queue 字符串 (string) - 调度队列名称。默认值为“default”,用户需根据自身情况填写。Ascend Operator启用“gang”调度生效,且调度器为Volcano时,任务所属队列。
spec.schedulerName 字符串 (string) - Ascend Operator启用"gang"调度时所选择的调度器。默认值为"volcano",用户需根据自身情况填写。
spec.successPolicy 字符串 (string) - 标记AscendJob成功的标准,当前无意义,仅当所有Pod成功时,才会判定任务成功。后续版本将会删除。
status 对象 (object) - AscendJob的最新观察状态(只读)。必填字段:conditions、replicaStatuses。
status.completionTime 字符串 (string) date-time 作业完成时间(RFC3339格式,UTC)。
status.conditions 数组 (array) - 当前作业条件数组。
status.conditions[type] 字符串 (string) - 作业条件的类型(如 "Complete")。
status.conditions[status] 字符串 (string) - 条件状态:True、False、Unknown。
status.conditions[lastTransitionTime] 字符串 (string) date-time 条件状态转换的时间。
status.conditions[lastUpdateTime] 字符串 (string) date-time 条件更新后的最终时间。
status.conditions[message] 字符串 (string) - 条件的详细描述。
status.conditions[reason] 字符串 (string) - 条件转换的原因。
status.lastReconcileTime 字符串 (string) date-time 作业最后一次调和的时间(RFC3339格式,UTC)。
status.replicaStatuses 对象 (object) - 副本类型到副本状态的映射。
status.replicaStatuses.[ReplicaType].active 整数 (integer) int32 正在运行的Pod数量。
status.replicaStatuses.[ReplicaType].failed 整数 (integer) int32 已失败的Pod数量。
status.replicaStatuses.[ReplicaType].succeeded 整数 (integer) int32 已成功的Pod数量。
status.replicaStatuses.[ReplicaType].labelSelector 对象 (object) - Pod标签选择器(定义如何筛选Pod)。
status.replicaStatuses.[ReplicaType].labelSelector.matchExpressions 数组 (array) - 标签匹配规则(支持In、NotIn、Exists、DoesNotExist等操作符)。
status.replicaStatuses.[ReplicaType].labelSelector.matchLabels 对象 (object) - 标签匹配的键值对(等价于matchExpressions条件)。
status.startTime 字符串 (string) date-time 作业开始时间(RFC3339格式,UTC)。
metadata.annotations['huawei.com/AscendXXX'] 字符串 (string) XXX表示芯片的型号,支持的取值为910,310和310P。取值需要和环境上实际的芯片类型保持一致。Ascend Docker Runtime会获取该参数值,用于给容器挂载相应类型的NPU。
[!NOTE] 说明
  • 该参数只支持使用Volcano调度器的整卡调度特性,使用静态vNPU调度和其他调度器的用户需要删除示例YAML中该参数的相关字段。
  • Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD需配置为metadata.annotations['huawei.com/npu']。
huawei.com/Ascend910 数字 请求的NPU数量,请根据实际修改。
[!NOTE] 说明
  • Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD需配置为metadata.annotations['huawei.com/npu']。
Atlas 800 训练服务器(NPU满配)
  • 单机单芯片任务:1
  • 单机多芯片任务:2、4、8
  • 分布式任务:1、2、4、8
Atlas 800训练服务器(NPU半配)
  • 单机单芯片任务:1
  • 单机多芯片任务:2、4
  • 分布式任务:1、2、4
服务器(插Atlas 300T训练卡):
  • 单机单芯片任务:1
  • 单机多芯片任务:2
  • 分布式任务:2
Atlas 800T A2训练服务器和Atlas 900 A2 PoD集群基础单元
  • 单机单芯片任务:1
  • 单机多芯片任务:2、3、4、5、6、7、8
  • 分布式任务:1、2、3、4、5、6、7、8
Atlas 200T A2 Box16 异构子框和Atlas 200I A2 Box16 异构子框
  • 单机单芯片任务:1
  • 单机多芯片任务:2、3、4、5、6、7、8、10、12、14、16
  • 分布式任务:1、2、3、4、5、6、7、8、10、12、14、16
Atlas 900 A3 SuperPoD 超节点、A200T A3 Box8 超节点服务器、Atlas 800T A3 超节点服务器
  • 单机单芯片任务:1
  • 单机多芯片任务:2、4、6、8、10、12、14、16
  • 分布式任务:2、4、6、8、10、12、14、16
  • 针对Atlas 900 A3 SuperPoD 超节点的逻辑超节点亲和任务:16
Atlas 350 标卡(无互联节点内8卡)
  • 单机:1、2、3、4、5、6、7、8
  • 分布式:1、2、3、4、5、6、7、8
Atlas 350 标卡(无互联节点内16卡)
  • 单机:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
  • 分布式:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
Atlas 350 标卡(4P mesh 8卡)
  • 单机(满足亲和性):1、2、3、4、8
  • 单机(不保证亲和性):5、6、7
  • 分布式(满足亲和性):1、2、3、4、8
  • 分布式(不保证亲和性):5、6、7
Atlas 350 标卡(4P mesh 16卡)
  • 单机(满足亲和性):1、2、3、4、8、12、16
  • 单机(不保证亲和性):5、6、7、9、10、11、13、14、15
  • 分布式(满足亲和性):1、2、3、4、8、12、16
  • 分布式(不保证亲和性):5、6、7、9、10、11、13、14、15
Atlas 850 系列硬件产品(普通集群)
  • 单机:1、2、4、8
  • 分布式:1、2、4、8
Atlas 850 系列硬件产品(超节点集群)
  • 单机:1、2、4、8(sp-block参数取值与其保持一致)
  • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)
Atlas 950 SuperPoD
  • 单机:1、2、3、4、5、6、7、8(sp-block参数取值与其保持一致)
  • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)
super-pod-affinity 字符串 (string)

仅支持在Atlas 900 A3 SuperPoD 超节点中使用本参数。超节点任务使用的亲和性调度策略,需要用户在YAML的label中声明。

  • soft:集群资源不满足超节点亲和性时,任务使用集群中碎片资源继续调度。
  • hard:集群资源不满足超节点亲和性时,任务Pending,等待资源。
  • 其他值或不传入此参数:强制超节点亲和性调度
  • customJobKey
  • custom-job-id

支持通过customJobKey或custom-job-id设置作业唯一标识符,方便用户根据该标识符过滤作业相关的告警、ISSUE等关键信息。在资源AscendJob的metadata.labels标签中设置。

  • customJobKey:用户自定义标签,以二级跳转的方式设置作业唯一标识符,如:

    customJobKey: tid

    tid: "123456"

  • custom-job-id:用户自定义标签,直接设置作业唯一标识符,如:

    custom-job-id:"123456"

huawei.com/scheduler.softShareDev.aicoreQuota 字符串 (string) [1, 100],请求的AICore百分比。
huawei.com/scheduler.softShareDev.hbmQuota 字符串 (string)

[1, maxHBM],请求的高带宽内存量,单位为MB。

maxHBM为通过npu-smi info命令查询出的HBM-Usage(MB)中HBM的值。

huawei.com/scheduler.softShareDev.policy 字符串 (string)

软切分策略,取值有:

  • fixed-share
  • elastic
  • best-effort
podAffinity 字符串 (string)

表示逻辑超节点会往具有更多亲和性Pod的物理超节点调度。

仅支持MindIE Motor推理任务Atlas 800I A3 超节点服务器上使用本参数。

sp-fit 字符串 (string)

超节点调度策略。仅支持MindIE Motor推理任务Atlas 800I A3 超节点服务器上使用本参数。

  • idlest:逻辑超节点会往更空闲的物理超节点调度。
  • 非idlest:逻辑超节点会优先占满物理超节点。
metadata.labels['duo'] 字符串 (string)

仅支持推理服务器(插Atlas 300I Duo 推理卡)的参数。

  • true:使用Atlas300I Duo 推理卡
  • false:不使用Atlas300I Duo 推理卡
metadata.labels['npu-310-strategy'] 字符串 (string)

仅支持推理服务器(插Atlas 300I Duo 推理卡)的参数。

  • card:按推理卡调度,request请求的昇腾AI处理器个数不超过2,使用同一张Atlas 300I Duo 推理卡上的昇腾AI处理器。
  • chip:按昇腾AI处理器调度,请求的昇腾AI处理器个数不超过单个节点的最大值。
metadata.labels['distributed'] 字符串 (string)

仅支持推理服务器(插Atlas 300I Duo 推理卡)的参数。

是否使用分布式推理。

  • true:使用分布式推理。使用chip模式时,必须将任务调度到整张Atlas 300I Duo 推理卡。若任务需要的昇腾AI处理器数量为单数时,使用单个昇腾AI处理器的部分,将优先调度到剩余昇腾AI处理器数量为1的Atlas 300I Duo 推理卡上。
  • false:使用非分布式推理。使用chip模式时,请求的昇腾AI处理器个数不超过单个节点的最大值。
[!NOTE] 说明
  • 无论是否为分布式推理,card模式的调度策略不变。
  • 当distributed为true时,只支持单机多卡;当distributed为false时,只支持多机多卡。
  • 当distributed为true时,不支持Deployment任务。

vcjob任务yaml参数说明

在vcjob任务中,可使用的YAML参数说明如下表所示。

表 2 vcjob任务关键字段说明

参数

取值

说明

spec.minAvailable

  • 单机:1
  • 分布式:N

N为节点个数,Deployment类型的任务不需要该参数,该参数建议与replicas保持一致。

spec.tasks[].replicas

  • 单机:1
  • 分布式:N

N为任务副本数。

spec.maxRetry

0< maxRetry

任务重调度次数。任务故障时,可以重调度的次数,当已经重调度次数与maxRetry取值相同时,任务将不再进行重调度。

[!NOTE] 说明

同时配置了maxRetry和fault-retry-times参数时,当已经重调度次数与maxRetry或fault-retry-times取值有一个相同时,将不再进行重调度。

无(无maxRetry)或maxRetry等于0

不配置maxRetry或配置maxRetry取值为0时,系统默认进行3次重调度。

minReplicas

1

最小副本数,需要设置为任务需要的最小节点的数量。

metadata.labels.fault-scheduling grace 配置任务采用优雅删除模式,并在过程中先优雅删除原Pod,15分钟后若还未成功,使用强制删除原Pod。进程级别重调度和进程级在线恢复场景,需将本参数配置为grace。
force 配置任务采用强制删除模式,在过程中强制删除原Pod。

metadata.labels.elastic-scheduling

on

开启弹性训练。

spec.tasks[0].template.spec.containers[0].image

-

训练镜像名称,请根据实际修改(用户在制作镜像章节制作的镜像名称)。

huawei.com/recover_policy_path

pod:只支持Pod级重调度,不升级为Job级别。(当使用vcjob时,需要配置该策略:policies: -event:PodFailed -action:RestartTask)

任务重调度策略。

huawei.com/schedule_minAvailable

整数

任务能够调度的最小副本数。

huawei.com/schedule_policy

目前支持huawei.com/schedule_policy配置说明中的配置。

配置任务需要调度的AI芯片布局形态。Volcano会根据该字段选择合适的调度策略。

servertype
  • npu-{aicore核数}
  • soc
  • Ascend910-{aicore核数}
  • Ascend310P-{aicore核数}

服务器类型。

  • soc:调度到Atlas 200I SoC A1 核心板节点上,必须要加上此配置,并参考“infer-310p-1usoc.yaml”文件进行目录挂载。
  • 其他类型节点不需要此参数。

metadata.annotations['sp-block']

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

  • 单机时需要和任务请求的芯片数量一致。
  • 分布式时需要是节点芯片数量的整数倍,且任务总芯片数量是其整数倍。

指定sp-block字段,集群调度组件会在物理超节点上根据切分策略划分出逻辑超节点,用于训练任务的亲和性调度。若用户未指定该字段,Volcano调度时会将此任务的逻辑超节点大小指定为任务配置的NPU总数。

了解详细说明请参见灵衢总线设备节点网络说明

[!NOTE] 说明

metadata.annotations['ra-block']

框亲和性调度的标识符。

指定ra-block字段,在支持动态配比的前提下,单框64卡被分为4个OS,每个OS在K8s集群中被认为是一个节点,框内通信时延比框间通信时延低,配置此字段用于训练任务的框亲和性调度。

取值范围是0-64且必须是2的幂次方。

穷举可得 ra-block 取值为 {1,2,4,8,16,32,64}。

[!NOTE] 说明
仅支持在Atlas 950 SuperPoD 中使用该字段。

tor-affinity

  • large-model-schema:大模型任务或填充任务
  • normal-schema:普通任务
  • null:不使用交换机亲和性调度
    [!NOTE] 说明

    用户需要根据任务副本数,选择任务类型。任务副本数小于4为填充任务。任务副本数大于或等于4为大模型任务。普通任务不限制任务副本数。

默认值为null,表示不使用交换机亲和性调度。用户需要根据任务类型进行配置。

  • 交换机亲和性调度1.0版本支持Atlas 训练系列产品Atlas A2 训练系列产品;支持PyTorchMindSpore框架。
  • 交换机亲和性调度2.0版本支持Atlas A2 训练系列产品;支持PyTorch框架。
  • 只支持整卡进行交换机亲和性调度,不支持静态vNPU进行交换机亲和性调度。

spec.tasks[0].template.spec.containers[0].resources.requests

整卡调度:

  • Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD :
    • 配置为huawei.com/npu: x
  • 推理服务器(插Atlas 300I 推理卡):
    • 配置为huawei.com/Ascend310: x
  • Atlas 推理系列产品非混插模式:
    • 配置为huawei.com/Ascend310P: x
  • Atlas 推理系列产品混插模式:
    • 配置为huawei.com/Ascend310P-V: x
    • 配置为huawei.com/Ascend310P-VPro: x
    • 配置为huawei.com/Ascend310P-IPro: x
  • 其他产品配置为huawei.com/Ascend910: x

根据所使用芯片类型不同,x取值如下:

  • Atlas 800 训练服务器(NPU满配)
    • 单机单芯片:1
    • 单机多芯片:2、4、8
    • 分布式:1、2、4、8
  • Atlas 800 训练服务器(NPU半配)
    • 单机单芯片:1
    • 单机多芯片:2、4
    • 分布式:1、2、4
  • 服务器(插Atlas 300T 训练卡):
    • 单机单芯片:1
    • 单机多芯片:2
    • 分布式:2
  • Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元
    • 单机单芯片:1
    • 单机多芯片:2、3、4、5、6、7、8
    • 分布式:1、2、3、4、5、6、7、8
  • Atlas 200T A2 Box16 异构子框
    • 单机单芯片:1
    • 单机多芯片:2、3、4、5、6、7、8、10、12、14、16
    • 分布式:1、2、3、4、5、6、7、8、10、12、14、16
  • Atlas 900 A3 SuperPoD 超节点A200T A3 Box8 超节点服务器Atlas 800T A3 超节点服务器
    • 单机多芯片:2、4、6、8、10、12、14、16
    • 分布式:16
  • Atlas 350 标卡(无互联节点内8卡)
    • 单机:1、2、3、4、5、6、7、8
    • 分布式:1、2、3、4、5、6、7、8
  • Atlas 350 标卡(无互联节点内16卡)
    • 单机:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
    • 分布式:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
  • Atlas 350 标卡(4P mesh 8卡)
    • 单机(满足亲和性):1、2、3、4、8
    • 单机(不保证亲和性):5、6、7
    • 分布式(满足亲和性):1、2、3、4、8
    • 分布式(不保证亲和性):5、6、7
  • Atlas 350 标卡(4P mesh 16卡)
    • 单机(满足亲和性):1、2、3、4、8、12、16
    • 单机(不保证亲和性):5、6、7、9、10、11、13、14、15
    • 分布式(满足亲和性):1、2、3、4、8、12、16
    • 分布式(不保证亲和性):5、6、7、9、10、11、13、14、15
  • Atlas 850 系列硬件产品(普通集群)
    • 单机:1、2、4、8
    • 分布式:1、2、4、8
  • Atlas 850 系列硬件产品(超节点集群)
    • 单机:1、2、4、8(sp-block参数取值与其保持一致)
    • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)
  • Atlas 950 SuperPoD
    • 单机:1、2、3、4、5、6、7、8(sp-block参数取值与其保持一致)
    • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)

静态vNPU调度:

huawei.com/Ascend910-Y: 1

取值为1。只能使用一个NPU下的vNPU。

如huawei.com/Ascend910-6c.1cpu.16g: 1

请求的NPU或vNPU类型(只能请求一种类型)、数量,请根据实际修改。

  • Atlas 推理系列产品非混插模式支持静态vNPU调度。
  • 推理服务器(插Atlas 300I 推理卡)和Atlas 推理系列产品混插模式不支持静态vNPU调度。
  • Y取值可参考静态虚拟化章节中的虚拟化实例模板与vNPU类型关系表的对应产品的“vNPU类型”列。

    以vNPU类型Ascend310P-4c.3cpu为例,Y取值为4c.3cpu,不包括前面的Ascend310P。

spec.tasks[0].template.spec.containers[0].resources.limits

限制请求的NPU或vNPU类型(只能请求一种类型)、数量,请根据实际修改。

limits需要和requests的芯片名称和数量需保持一致。

metadata.annotations['huawei.com/AscendXXX']

XXX表示芯片的型号,支持的取值为910,310和310P。取值需要和环境上实际的芯片类型保持一致。

Ascend Docker Runtime会获取该参数值,用于给容器挂载相应类型的NPU。

分布式任务中,请确保运行训练任务的节点架构相同。

[!NOTE] 说明
  • 该参数只支持使用Volcano调度器的整卡调度特性。使用静态vNPU调度和其他调度器的用户需要删除示例YAML中该参数的相关字段。

  • Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD需配置为metadata.annotations['huawei.com/npu']。

spec.tasks[0].template.spec.containers[0].resources.{requests|limits}['huawei.com/Ascend910']

根据所使用芯片类型不同,取值如下:

  • Atlas 800 训练服务器(NPU满配)
    • 单机单芯片:1
    • 单机多芯片:2、4、8
    • 分布式:1、2、4、8
  • Atlas 800 训练服务器(NPU半配)
    • 单机单芯片:1
    • 单机多芯片:2、4
    • 分布式:1、2、4
  • Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元
    • 单机单芯片:1
    • 单机多芯片:2、3、4、5、6、7、8
    • 分布式:1、2、3、4、5、6、7、8
  • Atlas 200T A2 Box16 异构子框Atlas 200I A2 Box16 异构子框
    • 单机单芯片:1
    • 单机多芯片:2、3、4、5、6、7、8、10、12、14、16
    • 分布式:1、2、3、4、5、6、7、8、10、12、14、16
  • Atlas 350 标卡(无互联节点内8卡)
    • 单机:1、2、3、4、5、6、7、8
    • 分布式:1、2、3、4、5、6、7、8
  • Atlas 350 标卡(无互联节点内16卡)
    • 单机:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
    • 分布式:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
  • Atlas 350 标卡(4P mesh 8卡)
    • 单机(满足亲和性):1、2、3、4、8
    • 单机(不保证亲和性):5、6、7
    • 分布式(满足亲和性):1、2、3、4、8
    • 分布式(不保证亲和性):5、6、7
  • Atlas 350 标卡(4P mesh 16卡)
    • 单机(满足亲和性):1、2、3、4、8、12、16
    • 单机(不保证亲和性):5、6、7、9、10、11、13、14、15
    • 分布式(满足亲和性):1、2、3、4、8、12、16
    • 分布式(不保证亲和性):5、6、7、9、10、11、13、14、15
  • Atlas 850 系列硬件产品(普通集群)
    • 单机:1、2、4、8
    • 分布式:1、2、4、8
  • Atlas 850 系列硬件产品(超节点集群)
    • 单机:1、2、4、8(sp-block参数取值与其保持一致)
    • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)
  • Atlas 950 SuperPoD
    • 单机:1、2、3、4、5、6、7、8(sp-block参数取值与其保持一致)
    • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)

请求的NPU数量,请根据实际修改,请求整卡时不能再同时请求vNPU。

[!NOTE] 说明
  • 优雅容错模式支持Atlas 800 训练服务器,且资源请求数量只能为4N、8N,N为训练节点数。
  • 优雅容错模式支持Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元,且资源请求数量只能为8N,N为训练节点数。
  • Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD需将参数名称修改为huawei.com/npu。

{metadata, spec.tasks[0].template.metadata}.labels['ring-controller.atlas']

根据所使用芯片类型不同,取值如下:

  • 推理服务器(插Atlas 300I 推理卡):ascend-310
  • Atlas 推理系列产品:ascend-310P
  • Atlas 800 训练服务器,服务器(插Atlas 300T 训练卡)取值为:ascend-910
  • Atlas A2 训练系列产品A200T A3 Box8 超节点服务器Atlas 900 A3 SuperPoD 超节点Atlas 800T A3 超节点服务器取值为:ascend-{xxx}b
  • (可选)Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD取值为:ascend-npu

用于区分任务使用的芯片的类型。需要在ConfigMap和任务task中配置。

[!NOTE] 说明

此处的{xxx}即取“910”字符作为芯片型号数值。

super-pod-affinity

超节点任务使用的亲和性调度策略,需要用户在YAML的label中声明。

  • soft:集群资源不满足超节点亲和性时,任务使用集群中碎片资源继续调度。
  • hard:集群资源不满足超节点亲和性时,任务Pending,等待资源。
  • 其他值或不传入此参数:强制超节点亲和性调度

仅支持在Atlas 900 A3 SuperPoD 超节点中使用本参数。

customJobKey

用户自定义标签,以二级跳转的方式设置作业唯一标识符,如:
customJobKey: tid
tid: "123456"

支持通过customJobKey或custom-job-id设置作业唯一标识符,方便用户根据该标识符过滤作业相关的告警、ISSUE等关键信息。

  • vcjob任务在资源Job的metadata.labels标签中设置。
  • deploy任务在资源Deployment的spec.template.metadata.labels标签中设置。

custom-job-id

用户自定义标签,直接设置作业唯一标识符,如:
custom-job-id:"123456"

spec.tasks[0].template.metadata.labels['vnpu-level']

low

低配,默认值,选择最低配置的虚拟化实例模板。

high

性能优先。

在集群资源充足的情况下,将选择尽量高配的虚拟化实例模板;在整个集群资源已使用过多的情况下,如大部分物理NPU都已使用,每个物理NPU只剩下小部分AICore,不足以满足高配虚拟化实例模板时,将使用相同AICore数量下较低配置的其他模板。具体选择请参考虚拟化模板章节。

spec.tasks[0].template.metadata.labels['vnpu-dvpp']

yes

Pod使用DVPP。

no

Pod不使用DVPP。

null

默认值,不关注是否使用DVPP。

recover-strategy

任务可用恢复策略。

  • retry:进程级在线恢复。
  • recover:进程级别重调度。
  • recover-in-place:进程级原地恢复。
  • dump:保存临终遗言。
  • exit:退出训练。
recover-strategy配置在任务YAML annotations下,取值为5种策略的随意组合,策略之间由逗号分割。

metadata.labels.pod-rescheduling

  • on:开启Pod级别重调度
  • 其他值或不使用该字段:关闭Pod级别重调度

Pod级别重调度,表示任务发生故障后,不会删除所有任务Pod,而是将发生故障的Pod进行删除,重新创建新Pod后进行重调度。

[!NOTE] 说明
  • 重调度模式默认为任务级重调度,若需要开启Pod级别重调度,需要新增该字段。

metadata.labels.subHealthyStrategy

  • ignore:忽略该亚健康节点,后续任务在亲和性调度上不优先调度该节点。
  • graceExit:不使用亚健康节点,并保存临终CKPT文件后,进行重调度,后续任务不会调度到该节点。
  • forceExit:不使用亚健康节点,不保存任务直接退出,进行重调度,后续任务不会调度到该节点。
  • 默认取值为ignore。

节点状态为亚健康(SubHealthy)的节点的处理策略。

[!NOTE] 说明

使用graceExit策略时,需保证任务开启了临终CKPT保存功能。

metadata.labels.fault-retry-times

0 < fault-retry-times

处理业务面故障,必须配置业务面可无条件重试的次数。

[!NOTE] 说明
  • 使用无条件重试功能需保证训练进程异常时会导致容器异常退出,若容器未异常退出则无法成功重试。
  • 当前仅Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元支持无条件重试功能。
  • 进行进程级恢复时,将会触发业务面故障,如需使用进程级恢复,必须配置此参数。

无(无fault-retry-times)或0

该任务不使用无条件重试功能,无法感知业务面故障,vcjob的maxRetry仍然生效。

spec.policies

event,取值如下:

  • PodFailed:Pod失败
  • PodEvicted:Pod被驱逐

Pod状态。与action字段搭配使用,表示当Pod处于某种状态时,Volcano的处理策略。默认值为PodEvicted。

action,取值如下:

  • RestartJob:重新启动训练任务。
  • Ignore:忽略。开源Volcano不做任何处理,由Ascend-volcano-plugin插件进行处理。

Volcano对处于某种状态的Pod的处理策略。默认值为RestartJob。

[!NOTE] 说明

spec.tasks[0].template.spec.restartPolicy

  • Never:从不重启
  • Always:总是重启
  • OnFailure:失败时重启
  • ExitCode:根据进程退出码决定是否重启Pod,错误码是1~127时不重启,128~255时重启Pod。
    [!NOTE] 说明

    vcjob类型的训练任务不支持ExitCode。

容器重启策略。当配置业务面故障无条件重试时,容器重启策略取值必须为“Never”

spec.tasks[0].template.spec.terminationGracePeriodSeconds

0 < terminationGracePeriodSeconds < grace-over-time参数取值

容器收到SIGTERM到被K8s强制停止经历的时间,该时间需要大于0且小于volcano-v{version}.yaml文件中“grace-over-time”参数取值,同时还需要保证能够保存CKPT文件,请根据实际情况修改。具体说明请参考K8s官网容器生命周期回调

只有当fault-scheduling配置为grace时,该字段才生效;fault-scheduling配置为force时,该字段无效。

deploy任务yaml参数说明

在deploy任务中,可使用的YAML参数说明如下表所示。

表 3 deploy任务关键字段说明

参数

取值

说明

spec.replicas

  • 单机:1
  • 分布式:N

N为任务副本数。

spec.template.spec.containers[0].image

-

训练镜像名称,请根据实际修改(用户在制作镜像章节制作的镜像名称)。

spec.template.metadata.labels['fault-scheduling'] grace 配置任务采用优雅删除模式,并在过程中先优雅删除原Pod,15分钟后若还未成功,使用强制删除原Pod。
force 配置任务采用强制删除模式,在过程中强制删除原Pod。

{metadata, spec.template.metadata}.labels['ring-controller.atlas']

根据所使用芯片类型不同,取值如下:

  • 推理服务器(插Atlas 300I 推理卡):ascend-310
  • Atlas 推理系列产品:ascend-310P
  • Atlas 800 训练服务器,服务器(插Atlas 300T 训练卡)取值为:ascend-910
  • Atlas A2 训练系列产品A200T A3 Box8 超节点服务器Atlas 900 A3 SuperPoD 超节点Atlas 800T A3 超节点服务器取值为:ascend-{xxx}b
  • (可选)Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD取值为:ascend-npu

用于区分任务使用的芯片的类型。需要在ConfigMap和任务task中配置。

[!NOTE] 说明

此处的{xxx}即取“910”字符作为芯片型号数值。

spec.template.metadata.labels['vnpu-level']

low

低配,默认值,选择最低配置的虚拟化实例模板。

high

性能优先。

在集群资源充足的情况下,将选择尽量高配的虚拟化实例模板;在整个集群资源已使用过多的情况下,如大部分物理NPU都已使用,每个物理NPU只剩下小部分AI Core,不足以满足高配虚拟化实例模板时,将使用相同AI Core数量下较低配置的其他模板。具体选择请参考虚拟化模板章节。

spec.template.metadata.labels['vnpu-dvpp']

yes

Pod使用DVPP。

no

Pod不使用DVPP。

null

默认值,不关注是否使用DVPP。

spec.template.metadata.labels['npu-310-strategy']

仅支持推理服务器(插Atlas 300I 推理卡)的参数

  • card:按推理卡调度,request请求的昇腾AI处理器个数不超过4,使用同一张Atlas 300I 推理卡上的昇腾AI处理器
  • chip:按昇腾AI处理器调度,请求的芯片个数不超过单个节点的最大值。

-

huawei.com/recover_policy_path

pod:只支持Pod级重调度,不升级为Job级别。(当使用vcjob时,需要配置该策略:policies: -event:PodFailed -action:RestartTask)

需要写到pod的annotation或label里面。

任务重调度策略。

huawei.com/schedule_minAvailable

整数

需要写到pod的annotation或label里面。

任务能够调度的最小副本数。

huawei.com/schedule_policy

目前支持huawei.com/schedule_policy配置说明中的配置。

需要写到pod的annotation或label里面。

配置任务需要调度的AI芯片布局形态。Volcano会根据该字段选择合适的调度策略。

spec.template.spec.nodeSelector['servertype']
  • npu-{aicore核数}
  • soc
  • Ascend910-{aicore核数}
  • Ascend310P-{aicore核数}

服务器类型。

  • soc:调度到Atlas 200I SoC A1 核心板节点上,必须要加上此配置,并参考“infer-310p-1usoc.yaml”文件进行目录挂载。
  • 其他类型节点不需要此参数。

metadata.annotations['sp-block']

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

  • 单机时需要和任务请求的芯片数量一致。
  • 分布式时需要是节点芯片数量的整数倍,且任务总芯片数量是其整数倍。

指定sp-block字段,集群调度组件会在物理超节点上根据切分策略划分出逻辑超节点,用于训练任务的亲和性调度。若用户未指定该字段,Volcano调度时会将此任务的逻辑超节点大小指定为任务配置的NPU总数。

了解详细说明请参见灵衢总线设备节点网络说明

[!NOTE] 说明

metadata.annotations['ra-block']

框亲和性调度的标识符。

指定ra-block字段,在支持动态配比的前提下,单框64卡被分为4个OS,每个OS在K8s集群中被认为是一个节点,框内通信时延比框间通信时延低,配置此字段用于训练任务的框亲和性调度。

取值范围是0-64且必须是2的幂次方。

穷举可得 ra-block 取值为 {1,2,4,8,16,32,64}。

[!NOTE] 说明
仅支持在Atlas 950 SuperPoD 中使用该字段。

metadata.annotations['huawei.com/AscendXXX']

XXX表示芯片的型号,支持的取值为910,310和310P。取值需要和环境上实际的芯片类型保持一致。

Ascend Docker Runtime会获取该参数值,用于给容器挂载相应类型的NPU。

分布式任务中,请确保运行训练任务的节点架构相同。

[!NOTE] 说明
  • 该参数只支持使用Volcano调度器的整卡调度特性。使用静态vNPU调度和其他调度器的用户需要删除示例YAML中该参数的相关字段。

  • Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD需配置为metadata.annotations['huawei.com/npu']。

tor-affinity

  • large-model-schema:大模型任务或填充任务
  • normal-schema:普通任务
  • null:不使用交换机亲和性调度
    [!NOTE] 说明

    用户需要根据任务副本数,选择任务类型。任务副本数小于4为填充任务。任务副本数大于或等于4为大模型任务。普通任务不限制任务副本数。

默认值为null,表示不使用交换机亲和性调度。用户需要根据任务类型进行配置。

  • 交换机亲和性调度1.0版本支持Atlas 训练系列产品Atlas A2 训练系列产品;支持PyTorchMindSpore框架。
  • 交换机亲和性调度2.0版本支持Atlas A2 训练系列产品;支持PyTorch框架。
  • 只支持整卡进行交换机亲和性调度,不支持静态vNPU进行交换机亲和性调度。

spec.template.spec.containers[0].resources.requests

整卡调度:

  • Atlas 350 标卡、Atlas 850 系列硬件产品、Atlas 950 SuperPoD :
    • 配置为huawei.com/npu: x
  • 推理服务器(插Atlas 300I 推理卡):
    • 配置为huawei.com/Ascend310: x
  • Atlas 推理系列产品非混插模式:
    • 配置为huawei.com/Ascend310P: x
  • Atlas 推理系列产品混插模式:
    • 配置为huawei.com/Ascend310P-V: x
    • 配置为huawei.com/Ascend310P-VPro: x
    • 配置为huawei.com/Ascend310P-IPro: x
  • 其他产品配置为huawei.com/Ascend910: x

根据所使用芯片类型不同,x取值如下:

  • Atlas 800 训练服务器(NPU满配)
    • 单机单芯片:1
    • 单机多芯片:2、4、8
    • 分布式:1、2、4、8
  • Atlas 800 训练服务器(NPU半配)
    • 单机单芯片:1
    • 单机多芯片:2、4
    • 分布式:1、2、4
  • 服务器(插Atlas 300T 训练卡):
    • 单机单芯片:1
    • 单机多芯片:2
    • 分布式:2
  • Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元
    • 单机单芯片:1
    • 单机多芯片:2、3、4、5、6、7、8
    • 分布式:1、2、3、4、5、6、7、8
  • Atlas 200T A2 Box16 异构子框
    • 单机单芯片:1
    • 单机多芯片:2、3、4、5、6、7、8、10、12、14、16
    • 分布式:1、2、3、4、5、6、7、8、10、12、14、16
  • Atlas 900 A3 SuperPoD 超节点A200T A3 Box8 超节点服务器Atlas 800T A3 超节点服务器
    • 单机多芯片:2、4、6、8、10、12、14、16
    • 分布式:16
  • Atlas 350 标卡(无互联节点内8卡)
    • 单机:1、2、3、4、5、6、7、8
    • 分布式:1、2、3、4、5、6、7、8
  • Atlas 350 标卡(无互联节点内16卡)
    • 单机:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
    • 分布式:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16
  • Atlas 350 标卡(4P mesh 8卡)
    • 单机(满足亲和性):1、2、3、4、8
    • 单机(不保证亲和性):5、6、7
    • 分布式(满足亲和性):1、2、3、4、8
    • 分布式(不保证亲和性):5、6、7
  • Atlas 350 标卡(4P mesh 16卡)
    • 单机(满足亲和性):1、2、3、4、8、12、16
    • 单机(不保证亲和性):5、6、7、9、10、11、13、14、15
    • 分布式(满足亲和性):1、2、3、4、8、12、16
    • 分布式(不保证亲和性):5、6、7、9、10、11、13、14、15
  • Atlas 850 系列硬件产品(普通集群)
    • 单机:1、2、4、8
    • 分布式:1、2、4、8
  • Atlas 850 系列硬件产品(超节点集群)
    • 单机:1、2、4、8(sp-block参数取值与其保持一致)
    • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)
  • Atlas 950 SuperPoD
    • 单机:1、2、3、4、5、6、7、8(sp-block参数取值与其保持一致)
    • 分布式:8(sp-block参数取值需为8或8的倍数,且能被任务所需总卡数整除,且不能大于物理超节点大小)

静态vNPU调度:

huawei.com/Ascend910-Y: 1

取值为1。只能使用一个NPU下的vNPU。

如huawei.com/Ascend910-6c.1cpu.16g: 1

请求的NPU或vNPU类型(只能请求一种类型)、数量,请根据实际修改。

  • Atlas 推理系列产品非混插模式支持静态vNPU调度。
  • 推理服务器(插Atlas 300I 推理卡)和Atlas 推理系列产品混插模式不支持静态vNPU调度。
  • Y取值可参考静态虚拟化章节中的虚拟化实例模板与虚拟设备类型关系表的对应产品的“vNPU类型”列。

    以vNPU类型Ascend310P-4c.3cpu为例,Y取值为4c.3cpu,不包括前面的Ascend310P。

spec.template.spec.containers[0].resources.limits

限制请求的NPU或vNPU类型(只能请求一种类型)、数量,请根据实际修改。

limits需要和requests的芯片名称和数量需保持一致。

super-pod-affinity

超节点任务使用的亲和性调度策略,需要用户在YAML的label中声明。

  • soft:集群资源不满足超节点亲和性时,任务使用集群中碎片资源继续调度。
  • hard:集群资源不满足超节点亲和性时,任务Pending,等待资源。
  • 其他值或不传入此参数:强制超节点亲和性调度

仅支持在Atlas 900 A3 SuperPoD 超节点中使用本参数。

customJobKey

用户自定义标签,以二级跳转的方式设置作业唯一标识符,如:
customJobKey: tid
tid: "123456"

支持通过customJobKey或custom-job-id设置作业唯一标识符,方便用户根据该标识符过滤作业相关的告警、ISSUE等关键信息。

  • vcjob任务在资源Job的metadata.labels标签中设置。
  • deploy任务在资源Deployment的spec.template.metadata.labels标签中设置。

custom-job-id

用户自定义标签,直接设置作业唯一标识符,如:
custom-job-id:"123456"

recover-strategy

任务可用恢复策略。

  • retry:进程级在线恢复。
  • recover:进程级别重调度。
  • recover-in-place:进程级原地恢复。
  • dump:保存临终遗言。
  • exit:退出训练。
recover-strategy配置在任务YAML annotations下,取值为5种策略的随意组合,策略之间由逗号分割。

pod-rescheduling

  • on:开启Pod级别重调度
  • 其他值或不使用该字段:关闭Pod级别重调度

Pod级别重调度,表示任务发生故障后,不会删除所有任务Pod,而是将发生故障的Pod进行删除,重新创建新Pod后进行重调度。

[!NOTE] 说明
  • 重调度模式默认为任务级重调度,若需要开启Pod级别重调度,需要新增该字段。

subHealthyStrategy

  • ignore:忽略该亚健康节点,后续任务在亲和性调度上不优先调度该节点。
  • graceExit:不使用亚健康节点,并保存临终CKPT文件后,进行重调度,后续任务不会调度到该节点。
  • forceExit:不使用亚健康节点,不保存任务直接退出,进行重调度,后续任务不会调度到该节点。
  • 默认取值为ignore。

节点状态为亚健康(SubHealthy)的节点的处理策略。

[!NOTE] 说明

使用graceExit策略时,需保证任务开启了临终CKPT保存功能。

fault-retry-times

0 < fault-retry-times

处理业务面故障,必须配置业务面可无条件重试的次数。

[!NOTE] 说明
  • 使用无条件重试功能需保证训练进程异常时会导致容器异常退出,若容器未异常退出则无法成功重试。
  • 当前仅Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元支持无条件重试功能。
  • 进行进程级恢复时,将会触发业务面故障,如需使用进程级恢复,必须配置此参数。

无(无fault-retry-times)或0

该任务不使用无条件重试功能,无法感知业务面故障,vcjob的maxRetry仍然生效。

restartPolicy

  • Never:从不重启
  • Always:总是重启
  • OnFailure:失败时重启
  • ExitCode:根据进程退出码决定是否重启Pod,错误码是1~127时不重启,128~255时重启Pod。
    [!NOTE] 说明

    vcjob类型的训练任务不支持ExitCode。

容器重启策略。当配置业务面故障无条件重试时,容器重启策略取值必须为“Never”

terminationGracePeriodSeconds

0 < terminationGracePeriodSeconds < grace-over-time参数取值

容器收到SIGTERM到被K8s强制停止经历的时间,该时间需要大于0且小于volcano-v{version}.yaml文件中“grace-over-time”参数取值,同时还需要保证能够保存CKPT文件,请根据实际情况修改。具体说明请参考K8s官网容器生命周期回调

只有当fault-scheduling配置为grace时,该字段才生效;fault-scheduling配置为force时,该字段无效。

其他参数说明

huawei.com/schedule_policy配置说明

表 4 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 多级调度场景使用,多级调度的详细使用方法请参见多级调度