YAML参数说明

本章节提供使用整卡调度或静态vNPU调度配置YAML的操作示例。在操作前,用户需要了解YAML示例的参数说明,再进行操作。

表1 使用Ascend Job的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

用于区分任务使用的芯片的类型。

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

分布式训练集合通信端口。“name”取值只能为“ascendjob-port”“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框架。
  • 只支持整卡进行交换机亲和性调度,不支持静态vNPU进行交换机亲和性调度。

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
  • A200T A3 Box8 超节点服务器:module-a3-16
  • (可选)Atlas 800 训练服务器(NPU满配)可以省略该标签。
  • Atlas 900 A3 SuperPoD 超节点不需要accelerator-type字段,若任务YAML存在该字段,需要删除。

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

说明:

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

requests

整卡调度:

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
    • 分布式:16

静态vNPU调度:

huawei.com/Ascend910-Y: 1

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

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

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

说明:

Y取值可参考静态虚拟化章节中的虚拟化实例模板与虚拟设备类型关系表的“vNPU类型”列。

以vNPU类型Ascend910-6c.1cpu.16g为例,Y取值为6c.1cpu.16g,不包括前面的Ascend910。

虚拟化模板的更多信息可以参考虚拟化规则章节中的“虚拟化模板”。

limits

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

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

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

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

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

说明:

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

hostNetwork

  • true:使用HostIP创建pod。

    此种情况下,需要在YAML中同步配置环境变量HCCL_IF_IP为status.hostIP。

  • false:不使用HostIP创建pod。

    未传入此参数或此参数的值为false时,不需要配置上述环境变量。

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

    当采用HostIp方式创建Pod,依然存在创建Pod速度慢且Pod之间通信速度慢的问题。此时推荐采用挂载ranktable文件的方式,通过解析ranktable文件获得Pod的hostIP,并将其注入到对应框架任务的环境变量中(如ms框架注入到环境变量MS_SCHED_HOST中),实现建链。

表2 使用deployment或Volcano Job的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框架。
  • 只支持整卡进行交换机亲和性调度,不支持静态vNPU进行交换机亲和性调度。

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
  • A200T A3 Box8 超节点服务器:module-a3-16
  • (可选)Atlas 800 训练服务器(NPU满配)可以省略该标签。
  • Atlas 900 A3 SuperPoD 超节点不需要accelerator-type字段,若任务YAML存在该字段,需要删除。

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

说明:

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

requests

整卡调度:

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
    • 分布式:16

静态vNPU调度:

huawei.com/Ascend910-Y: 1

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

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

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

说明:

Y取值可参考静态虚拟化章节中的虚拟化实例模板与虚拟设备类型关系表的“vNPU类型”列。

以vNPU类型Ascend910-6c.1cpu.16g为例,Y取值为6c.1cpu.16g,不包括前面的Ascend910。

虚拟化模板的更多信息可以参考虚拟化规则章节中的“虚拟化模板”。

limits

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

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

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

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

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

说明:

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

ring-controller.atlas

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

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

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

说明:

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