昇腾社区首页
中文
注册

Ascend Operator

通过环境变量配置资源信息

表1 通过环境变量配置资源信息的yaml参数说明

参数

取值

说明

framework

  • MindSpore
  • Pytorch
  • Tensorflow

-

jobID

当前MindIE Service任务在集群中的唯一识别ID,用户可根据实际情况进行配置。

目前只支持以下AI框架:mindspore、pytorch。

该参数仅支持在Atlas 800I A2 推理服务器上使用。

app

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

目前只支持以下AI框架:MindSpore、Pytorch。

说明:
  • acjob的任务yaml同时包含jobID和app这2个字段时,Ascend Operator组件会自动传入环境变量MINDX_TASK_ID、APP_TYPE及MINDX_SERVICE_IP,并将其标识为MindIE推理任务。
  • 关于以上环境变量的详细说明请参见表2
  • 该参数仅支持在Atlas 800I A2 推理服务器上使用。

ring-controller.atlas

  • Atlas A2 训练系列产品A200T A3 Box8 超节点服务器Atlas 900 A3 SuperPoD 超节点Atlas 800T A3 超节点服务器取值为:ascend-{xxx}b
  • Atlas 800 训练服务器,服务器(插Atlas 300T 训练卡)取值为:ascend-910

标识任务使用的芯片的产品类型。

需要在ConfigMap和任务task中配置。

schedulerName

默认值为“volcano”,用户需根据自身情况填写

Ascend Operator启用“gang”调度时所选择的调度器。

minAvailable

默认值为任务总副本数

Ascend Operator启用“gang”调度生效时,且调度器为Volcano时,任务运行总副本数。

queue

默认值为“default”,用户需根据自身情况填写

Ascend Operator启用“gang”调度生效时,且调度器为Volcano时,任务所属队列。

(可选)successPolicy

  • 默认值为空,若用户不填写该参数,则默认取空值。
  • AllWorkers

表明任务成功的前提。空值代表只需要一个Pod成功,整个任务判定为成功。取值为“AllWorkers”表示所有Pod都成功,任务才判定为成功代表。

container.name

ascend

训练容器的名称必须是“ascend”

(可选)ports

若用户未进行设置,系统默认填写以下参数:

  • name:ascendjob-port
  • containerPort:2222

分布式训练集合通讯端口。“containerPort”用户可根据实际情况设置,若未进行设置则采用默认端口2222。

replicas

  • 单机:1
  • 分布式:N

N为任务副本数。

image

-

训练镜像名称,请根据实际修改。

(可选)host-arch

Arm环境:huawei-arm

x86_64环境:huawei-x86

需要运行训练任务的节点架构,请根据实际修改。

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

sp-block

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

指定sp-block字段,集群调度组件会在物理超节点的基础上根据切分策略划分出逻辑超节点,用于训练任务的亲和性调度。

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

说明:

tor-affinity

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

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

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

说明:
  • 交换机亲和性调度1.0版本支持Atlas 训练系列产品Atlas A2 训练系列产品;支持PyTorchMindSpore框架。
  • 交换机亲和性调度2.0版本支持Atlas A2 训练系列产品;支持PyTorch框架。

pod-rescheduling

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

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

说明:
  • 重调度模式默认为任务级重调度,若需要开启Pod级别重调度,需要新增该字段。
  • TensorFlow暂不支持Pod级别重调度。

recover-strategy

任务可用恢复策略。

  • retry:进程级在线恢复。
  • recover:进程级别重调度。
  • dump:保存临终遗言。
  • exit:退出训练
  • recover-strategy配置在任务yaml annotations下,取值为四种策略的随意组合,策略之间由逗号分割。
  • 该配置须和process-recover-enable参数同时使用,且仅在process-recover-enable=on时生效。

process-recover-enable

  • on:开启进程级别重调度及进程级在线恢复。
    • 进程级别重调度和优雅容错不能同时开启,若同时开启,断点续训将通过job级重调度恢复训练。
    • 开启进程级别重调度,需同时在MindIO侧同时传入参数--enable-high-availability、--enable-worker-reboot。
    • 开启进程级在线恢复,需同时在MindIO侧同时传入参数--enable-high-availability、--enable--hbmfault-repair。
  • pause:暂时关闭进程级别重调度及进程级在线恢复。
  • off或不使用该字段:关闭进程级别重调度及进程级在线恢复。

默认为不使用该字段。

subHealthyStrategy

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

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

说明:

使用graceExit策略时,需保证训练框架能够接收SIGTERM信号并保存ckpt文件。

accelerator-type

  • Atlas 800 训练服务器(NPU满配):module
  • Atlas 800 训练服务器(NPU半配):half
  • 服务器(插Atlas 300T 训练卡):card
  • Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元:module-{xxx}b-8
  • Atlas 200T A2 Box16 异构子框:module-{xxx}b-16

根据需要运行训练任务的节点类型,选取不同的值。

  • (可选)如果节点是Atlas 800 训练服务器(NPU满配)可以省略该标签。
  • Atlas 900 A3 SuperPoD 超节点产品不需要accelerator-type字段,若任务yaml存在该字段,需要删除。
说明:

芯片型号的数值可通过npu-smi info命令查询,返回的“Name”字段对应信息为芯片型号,下文的{xxx}即取“910”字符作为芯片型号数值。

huawei.com/Ascend910

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 超节点
  • 单机单芯片:1
  • 单机多芯片:2、4、6、8、10、12、14、16
  • 分布式:16

请求的NPU数量,请根据实际修改。

(.kind=="AscendJob").spec.replicaSpecs.[Master|Scheduler|Worker].template.spec.containers[0].env[name==ASCEND_VISIBLE_DEVICES].valueFrom.fieldRef.fieldPath

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

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

说明:

该参数只支持使用Volcano调度器的整卡调度特性,使用静态vNPU调度和其他调度器的用户需要删除示例yaml中该参数的相关字段。

fault-scheduling

grace

配置任务采用优雅删除模式,并在过程中先优雅删除原Pod,15分钟后若还未成功,使用强制删除原Pod

说明:

当前GPT-3模型支持使用临终遗言,该功能需要使用优雅删除模式。

force

配置任务采用强制删除模式,在过程中强制删除原Pod

off

该任务不使用断点续训特性,K8s的maxRetry仍然生效。

无(无fault-scheduling字段)

其他值

fault-retry-times

0 < fault-retry-times

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

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

无(无fault-retry-times)或0

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

backoffLimit

0 < backoffLimit

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

说明:

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

无(无backoffLimit)或backoffLimit ≤ 0

不限制总重调度次数。

说明:

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

restartPolicy

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

    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时,该字段无效。

hostNetwork

  • true:使用HostIP创建pod。
  • false:不使用HostIP创建pod。
  • 当集群规模较大(节点数量>1000时),推荐使用HostIP创建pod。
  • 不传入此参数时,默认不使用HostIP创建pod。
    说明:

    当HostNetwork取值为true时,若当前任务yaml挂载了ranktable文件路径,则可以通过在训练脚本中解析ranktable文件获取Pod的hostIP来实现建链。若任务yaml未挂载ranktable文件路径,则与原始保持一致,使用serviceIP来实现建链。

通过文件配置资源信息

表2 通过文件配置资源信息的yaml参数说明

参数

取值

说明

minAvailable

  • 单机:1
  • 分布式:N

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

replicas

  • 单机:1
  • 分布式:N

N为任务副本数。

image

-

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

(可选)host-arch

Arm环境:huawei-arm

x86_64环境:huawei-x86

需要运行训练任务的节点架构,请根据实际修改。

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

tor-affinity

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

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

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

说明:
  • 交换机亲和性调度1.0版本只支持Atlas 训练系列产品Atlas A2 训练系列产品PyTorchMindSpore框架。
  • 交换机亲和性调度2.0版本只支持Atlas A2 训练系列产品PyTorch框架。

accelerator-type

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

  • Atlas 800 训练服务器(NPU满配):module
  • Atlas 800 训练服务器(NPU半配):half
  • Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元:module-{xxx}b-8
  • Atlas 200T A2 Box16 异构子框:module-{xxx}b-16

根据需要运行训练任务的节点类型,选取不同的值。如果节点是Atlas 800 训练服务器(NPU满配),可以省略该标签。

说明:

芯片型号的数值可通过npu-smi info命令查询,返回的“Name”字段对应信息为芯片型号,下文的{xxx}即取“910”字符作为芯片型号数值。

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 异构子框
    • 单机单芯片:1
    • 单机多芯片:2、3、4、5、6、7、8、10、12、14、16
    • 分布式:1、2、3、4、5、6、7、8、10、12、14、16

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

说明:
  • 优雅容错模式支持Atlas 800 训练服务器,且资源请求数量只能为4N、8N,N为训练节点数。
  • 优雅容错模式支持Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元,且资源请求数量只能为8N,N为训练节点数。

ring-controller.atlas

  • Atlas A2 训练系列产品A200T A3 Box8 超节点服务器Atlas 900 A3 SuperPoD 超节点Atlas 800T A3 超节点服务器取值为:ascend-{xxx}b
  • Atlas 800 训练服务器,服务器(插Atlas 300T 训练卡)取值为:ascend-910

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

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

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

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

fault-scheduling

grace

配置任务采用优雅删除模式,并在过程中先优雅删除原Pod,15分钟后若还未成功,使用强制删除原Pod

说明:

当前GPT-3模型支持使用临终遗言,该功能需要使用优雅删除模式。

force

配置任务采用强制删除模式,在过程中强制删除原Pod

off

该任务不使用断点续训特性,K8s的maxRetry仍然生效。

无(无fault-scheduling字段)

其他值

recover-strategy

任务可用恢复策略。

  • retry:进程级在线恢复
  • recover:进程级别重调度
  • dump:保存临终遗言
  • exit:退出训练
  • recover-strategy配置在任务yaml annotations下,取值为四种策略的随意组合,策略之间由逗号分割。
  • 该配置须和process-recover-enable参数同时使用,且仅在process-recover-enable=on时生效。

pod-rescheduling

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

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

说明:
  • 重调度模式默认为任务级重调度,若需要开启Pod级别重调度,需要新增该字段。
  • TensorFlow暂不支持Pod级别重调度。

subHealthyStrategy

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

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

说明:

使用graceExit策略时,需保证训练框架能够接收SIGTERM信号并保存ckpt文件。

fault-retry-times

0 < fault-retry-times

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

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

无(无fault-retry-times)或0

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

policies

event,取值如下:

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

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

action,取值如下:

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

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

说明:

maxRetry

0< maxRetry

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

说明:

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

无(无maxRetry)或maxRetry等于0

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

restartPolicy

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

    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时,该字段无效。

rings-config-<任务名称>

表3 rings-config-任务名称

字段名称

名称

作用

取值

备注

hccl.json

version

ranktable使用的格式版本

1.0

-

server_count

任务使用的节点数量

整数类型

-

server_list

任务使用的节点信息

-

-

- server_id

任务使用的节点的IP地址

字符串

-

device

任务使用的芯片信息

-

-

- device_id

任务使用的芯片的物理ID

字符串

-

- device_ip

任务使用的芯片的ip地址

字符串

-

- rank_id

任务使用的芯片的rank号

字符串

-

version

-

任务使用hccl.json的版本

字符串

-