Volcano组件支持K8s原生调度,可以使用nodeAffinity进行调度。以下示例使用强制的节点亲和性进行调度,更多关于nodeAffinity字段的说明请参见。
Volcano Job的任务YAML中,需要添加如下加粗字段。
[object Object]Ascend Job的任务YAML中,需要添加如下加粗字段。
[object Object][object Object]
NFS(Network File System)网络文件系统,它允许网络中的计算机之间共享资源。在集群调度场景下,需要依赖NFS环境实现训练任务或推理任务的正常运行。NFS可以安装在服务器端或者客户端,用户可以根据需要进行选择。
在服务器端安装[object Object][object Object]
使用管理员账号登录存储节点,执行以下命令安装NFS服务端。
[object Object]根据实际情况固定NFS相关端口并配置相关端口的防火墙。
执行以下命令,创建一个共享目录(如“/data/atlas_dls”)并修改目录权限。
[object Object]在“/etc/exports”文件末尾追加以下内容,根据需要配置允许的IP地址并加固相关权限设置。
[object Object]执行以下命令,启动rpcbind。
[object Object]执行以下命令,查看rpcbind是否已启动。
[object Object]出现以下回显,说明服务正常。
[object Object]rpcbind启动后,执行以下命令,启动NFS服务。
[object Object]执行以下命令,查看NFS服务是否已启动。
[object Object]出现以下回显,说明服务正常。若NFS服务启动失败,可以参见章节进行处理。
[object Object]执行以下命令,查看共享目录(如“/data/atlas_dls”)挂载权限。
[object Object]出现以下回显,说明服务正常。
[object Object]
在客户端安装[object Object][object Object]
使用管理员账号登录其他服务器,执行以下命令安装NFS客户端。
NFS网络文件系统,它允许网络中的计算机之间共享资源。在集群调度场景下,需要依赖NFS环境实现训练任务或推理任务的正常运行。NFS可以安装在服务器端或者客户端,用户可以根据需要进行选择。
在服务器端安装[object Object][object Object]
使用管理员账号登录存储节点,执行以下命令安装NFS服务端。
[object Object]根据实际情况固定NFS相关端口并配置相关端口的防火墙。
执行以下命令,创建一个共享目录(如“/data/atlas_dls”)并修改目录权限。
[object Object]执行vi /etc/exports命令,在文件末尾追加以下内容,根据需要配置允许的IP地址并加固相关权限设置。
[object Object]执行以下命令,启动rpcbind。
[object Object]执行以下命令,查看rpcbind是否已启动。
[object Object]出现以下回显,说明服务正常。
[object Object]rpcbind启动后,执行以下命令,启动NFS服务。
[object Object]执行以下命令,查看NFS服务是否已启动。
[object Object]出现以下回显,说明服务正常。若NFS服务启动失败,可以参见章节进行处理。
[object Object]执行以下命令,查看共享目录(如“/data/atlas_dls”)挂载权限。
[object Object]出现以下回显,说明服务正常。
[object Object]
在客户端安装[object Object][object Object]
使用管理员账号登录其他服务器,执行以下命令安装NFS客户端。
[object Object]执行以下命令,启动rpcbind。
[object Object]执行以下命令,查看rpcbind是否启动。
[object Object]出现以下回显,说明服务正常。
[object Object]rpcbind启动后,执行以下命令,启动NFS服务。
[object Object]执行以下命令,查看NFS服务是否启动。
[object Object]出现以下回显,说明服务正常。
[object Object](可选)NFS需要使用mount和umount命令,一般情况下,系统自带mount命令。若当前客户端没有此命令,可执行以下步骤进行安装。
[object Object]
Volcano收集了内部的芯片故障、参数面网络故障和节点故障信息,将其作为对外的信息放在K8s的ConfigMap中,以供外部查询和使用。
查询命令为kubectl describe cm -n volcano-system vcjob-fault-npu-cm,命令回显示例如下,关键参数说明请参见。
表 1 vcjob-fault-npu-cm字段说明
[object Object][object Object]
[object Object]Ascend Device Plugin收集了内部的芯片故障、参数面网络故障和节点故障,将其作为对外的信息放在了K8s的ConfigMap中,一个ConfigMap放置一个节点的信息,以供外部查询和使用。
查询命令:kubectl describe cm -n kube-system mindx-dl-deviceinfo-${node_name}
以[object Object]Atlas A3 训练系列产品[object Object]为例,回显示例如下;不同设备的回显参数可能不同,以实际为准。关键参数说明请参见。
表 1 参数说明
[object Object][object Object]
[object Object]Ascend Device Plugin收集到的故障事件可以通过K8s的event事件进行上报,查询命令为kubectl get events -n kube-system。以Atlas 训练系列产品为例,回显示例如下,参数说明请参见。
表 1 参数说明
[object Object][object Object]
ClusterD收集了内部的节点故障、芯片故障和灵衢总线设备故障,将其作为对外的信息放在了K8s的ConfigMap中,以供外部查询和使用。
节点故障[object Object][object Object]
查询命令:kubectl describe cm -n mindx-dl cluster-info-node-cm
以[object Object]Atlas A3 训练系列产品[object Object]为例,回显示例如下;不同设备的回显参数可能不同,以实际为准。关键参数说明请参见。
表 1 节点故障参数说明
[object Object][object Object]
芯片故障[object Object][object Object]
查询命令:kubectl describe cm -n mindx-dl cluster-info-device-${m}
m为从0开始递增的整数。集群规模每增加1000个节点,则会新增一个ConfigMap文件cluster-info-device-${m}。
以[object Object]Atlas A3 训练系列产品[object Object]为例,回显示例如下;不同设备的回显参数可能不同,以实际为准,关键参数说明请参见。
表 2 cluster-info-device-${m}
[object Object][object Object]
[object Object]灵衢总线设备故障[object Object][object Object]
查询命令:kubectl describe cm -n mindx-dl cluster-info-switch-${m}
m为从0开始递增的整数。集群规模每增加2000个节点,则会新增一个ConfigMap文件cluster-info-switch-${m}。
以[object Object]Atlas A3 训练系列产品[object Object]为例,回显示例如下;不同设备的回显参数可能不同,以实际为准。关键参数说明请参见。
表 3 灵衢总线设备故障参数说明
[object Object][object Object]
NodeD收集了节点故障信息和节点健康状态信息,将其作为对外的信息放在K8s的ConfigMap中,以供外部查询和使用。
查询命令为kubectl describe cm mindx-dl-nodeinfo-[object Object]<nodename>[object Object] -n mindx-dl,命令回显示例如下,关键参数说明请参见。
表 1 回显参数说明
[object Object][object Object]
前提条件[object Object][object Object]
请按照所示,获取对应操作系统的软件包与打包镜像所需Dockerfile文件与脚本文件。
软件包名称中{version}表示版本号、{arch}表示架构。配套的CANN软件包在6.3.RC3、6.2.RC3及以上版本增加了“您是否接受EULA来安装CANN(Y/N)”的安装提示;在Dockerfile编写示例中的安装命令包含“--quiet”参数的默认同意EULA,用户可自行修改。
表 1 所需软件
[object Object][object Object]
为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。
在软件包下载之后,请参考《》,对从Support网站下载的软件包进行PGP数字签名校验。如果校验失败,请不要使用该软件包,先联系华为技术支持工程师解决。
使用软件包安装/升级之前,也需要按上述过程先验证软件包的数字签名,确保软件包未被篡改。
[object Object]
操作步骤[object Object][object Object]
将准备的软件包、深度学习框架、host侧驱动安装信息文件及驱动版本信息文件上传到服务器同一目录(如“/home/test”)。
- Ascend-cann-toolkit_{version}_linux-{arch}.run
- npu_bridge-{version}-py3-none-manylinux2014_<arch>.whl
- tensorflow-*_{arch}.whl
- ascend_install.info
- version.info
以root用户登录服务器。
[object Object][object Object]执行以下步骤准备prebuild.sh文件。
[object Object][object Object]执行以下步骤准备install_ascend_pkgs.sh文件。
[object Object][object Object]执行以下步骤准备postbuild.sh文件。
执行以下步骤准备Dockerfile文件。
进入软件包所在目录,执行以下命令,构建容器镜像,注意不要遗漏命令结尾的“.”。
[object Object]在以上命令中,各参数说明如下表所示。
表 2 命令参数说明
[object Object][object Object]
[object Object]undefined
例如:
[object Object]当出现“Successfully built xxx”表示镜像构建成功。
构建完成后,执行以下命令查看镜像信息。
[object Object]回显示例如下。
[object Object]执行以下命令,进入容器。
[object Object]例如:
[object Object]执行以下命令获取文件。
[object Object]回显示例如下:
[object Object]执行以下命令修改镜像中的文件。
[object Object]增加以下内容。
[object Object]执行:wq保存并退出编辑。
执行exit命令,退出Docker容器。
执行以下命令,保存当前镜像。
[object Object]例如:
[object Object][object Object]
编写示例[object Object][object Object]
[object Object][object Object]prebuild.sh编写示例。
Ubuntu ARM系统prebuild.sh编写示例。
[object Object]Ubuntu x86_64系统prebuild.sh编写示例。
[object Object]
[object Object][object Object]install_ascend_pkgs.sh编写示例。
[object Object]如果在制作镜像时出现如下提示信息,则需要删除Ascend-cann-xxx.run后的--install-path参数(安装的第一个Ascend-cann-xxx.run除外)。
提示信息示例如下。
[object Object]出现原因如下。
安装第一个CANN软件包后,会将安装路径记录到/etc/Ascend/ascend_cann_install.info文件中。若该文件存在,则在安装其他CANN软件包时会自动安装到该文件中记录的路径下,同时不支持使用“--install-path”参数。
[object Object][object Object]postbuild.sh编写示例(Ubuntu)。
[object Object][object Object][object Object]Dockerfile编写示例。
Ubuntu ARM系统,配套Python 3.7的Dockerfile示例。
[object Object]Ubuntu x86_64系统Dockerfile示例。
[object Object]
前提条件[object Object][object Object]
请按照所示,获取对应操作系统的软件包与打包镜像所需Dockerfile文件与脚本文件。
软件包名称中{version}表示版本号、{arch}表示架构、{chip_type}表示芯片类型。配套的CANN软件包在6.3.RC3、6.2.RC3及以上版本增加了“您是否接受EULA来安装CANN(Y/N)”的安装提示;在Dockerfile编写示例中的安装命令包含“--quiet”参数的默认同意EULA,用户可自行修改。
表 1 所需软件
[object Object][object Object]
为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。
在软件包下载之后,请参考《》,对从Support网站下载的软件包进行PGP数字签名校验。如果校验失败,请不要使用该软件包,先联系华为技术支持工程师解决。
使用软件包安装/升级之前,也需要按上述过程先验证软件包的数字签名,确保软件包未被篡改。
[object Object]
操作步骤[object Object][object Object]
将准备的软件包、深度学习框架相关包、host侧驱动安装信息文件及驱动版本信息文件上传到服务器同一目录(如“/home/test”)。
- Ascend-cann-toolkit_{version}_linux-{arch}.run
- Ascend-cann-{chip_type}-ops_{version}_linux-{arch}.run
- apex-0.1+ascend-cp310-cp310-linux_{arch}.whl
- torch-v{version}+cpu.cxx11.abi-cp310-cp310-linux_{arch}.whl或torch-v{version}-cp3x-cp3x-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- torch_npu-v{version}.post[object Object]{version}[object Object]-cp310-cp310-manylinux_2_17_{arch}.manylinux2014_{arch}.whl
- dllogger-master
- ascend_install.info
- version.info
以root用户登录服务器。
[object Object][object Object]执行以下步骤准备prebuild.sh文件。
[object Object][object Object]执行以下步骤准备install_ascend_pkgs.sh文件。
[object Object][object Object]执行以下步骤准备postbuild.sh文件。
执行以下步骤准备Dockerfile文件。
进入软件包所在目录,执行以下命令,构建容器镜像,注意不要遗漏命令结尾的“.”。
[object Object]在以上命令中,各参数说明如下表所示。
表 2 命令参数说明
[object Object][object Object]
[object Object]undefined
例如:
[object Object]当出现“Successfully built xxx”表示镜像构建成功。
构建完成后,执行以下命令查看镜像信息。
[object Object]回显示例如下。
[object Object]
编写示例[object Object][object Object]
[object Object][object Object]prebuild.sh编写示例。
Ubuntu ARM系统prebuild.sh编写示例。
[object Object]Ubuntu x86_64系统prebuild.sh编写示例。
[object Object][object Object][object Object]install_ascend_pkgs.sh编写示例。
[object Object][object Object][object Object]postbuild.sh编写示例。
[object Object][object Object][object Object]Dockerfile编写示例。
Ubuntu ARM系统,配套Python 3.10的Dockerfile示例。
[object Object]Ubuntu x86_64系统,配套Python 3.10的Dockerfile示例
[object Object]
前提条件[object Object][object Object]
请按照所示,获取对应操作系统的软件包与打包镜像所需Dockerfile文件与脚本文件。
软件包名称中{version}表示版本号、{arch}表示架构、{chip_type}表示芯片类型。配套的CANN软件包在6.3.RC3、6.2.RC3及以上版本增加了“您是否接受EULA来安装CANN(Y/N)”的安装提示;在Dockerfile编写示例中的安装命令包含“--quiet”参数的默认同意EULA,用户可自行修改。
[object Object]
表 1 所需软件
[object Object][object Object]
为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。
在软件包下载之后,请参考《》,对从Support网站下载的软件包进行PGP数字签名校验。如果校验失败,请不要使用该软件包,先联系华为技术支持工程师解决。
使用软件包安装/升级之前,也需要按上述过程先验证软件包的数字签名,确保软件包未被篡改。
[object Object]
操作步骤[object Object][object Object]
将准备的软件包、深度学习框架、host侧驱动安装信息文件及驱动版本信息文件上传到服务器同一目录(如“/home/test“)。
- Ascend-cann-toolkit_{version}_linux-{arch}.run
- Ascend-cann-kernels-{chip_type}_{version}_linux-{arch}.run
- mindspore-{version}-cp3x-cp3x-linux_{arch}.whl
- ascend_install.info
- version.info
以root用户登录服务器。
[object Object][object Object]执行以下步骤准备prebuild.sh文件。
[object Object][object Object]执行以下步骤准备install_ascend_pkgs.sh文件。
[object Object][object Object]执行以下步骤准备postbuild.sh文件。
执行以下步骤准备Dockerfile文件。
进入软件包所在目录,执行以下命令,构建容器镜像,注意不要遗漏命令结尾的“.”。
[object Object]在以上命令中,各参数说明如下表所示。
表 2 命令参数说明
[object Object][object Object]
[object Object]undefined
[object Object]当出现“Successfully built xxx”表示镜像构建成功。
构建完成后,执行以下命令查看镜像信息。
[object Object]回显示例如下。
[object Object](可选)验证基础镜像是否可用。
执行以下命令,使用Ascend Docker Runtime在基础镜像中挂载驱动,以基础镜像test_train_arm64:v1.0为例。
[object Object]执行以下命令,查看基础镜像中MindSpore软件是否安装成功。
[object Object]回显示例如下,表示MindSpore软件安装成功。
[object Object]
编写示例[object Object][object Object]
[object Object][object Object]prebuild.sh编写示例。
Ubuntu ARM系统prebuild.sh编写示例。
[object Object]Ubuntu x86_64系统prebuild.sh编写示例。
[object Object]
[object Object][object Object]install_ascend_pkgs.sh编写示例。
[object Object][object Object][object Object]postbuild.sh编写示例。
[object Object][object Object][object Object]Dockerfile编写示例。
Ubuntu ARM系统,配套Python 3.9的Dockerfile示例。
[object Object]Ubuntu x86_64系统,配套Python 3.9的Dockerfile示例。
[object Object]
前提条件[object Object][object Object]
请按照所示,获取对应操作系统的软件包与打包镜像所需Dockerfile文件与脚本文件。
软件包名称中{version}表示版本号、{arch}表示架构、{chip_type}表示芯片类型。配套的CANN软件包在6.3.RC3、6.2.RC3及以上版本增加了“您是否接受EULA来安装CANN(Y/N)”的安装提示;在Dockerfile编写示例中的安装命令包含“--quiet”参数的默认同意EULA,用户可自行修改。
表 1 所需软件
[object Object][object Object]
[object Object]
为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。
在软件包下载之后,请参考《》,对从Support网站下载的软件包进行PGP数字签名校验。如果校验失败,请不要使用该软件包,先联系华为技术支持工程师解决。
使用软件包安装/升级之前,也需要按上述过程先验证软件包的数字签名,确保软件包未被篡改。
本章节以Ubuntu x86_64操作系统为例,以下操作步骤中的代码为示例代码,用户可参考示例进行定制化修改,并且建议用户对示例代码和镜像做安全加固,可参考。
操作步骤[object Object][object Object]
将准备的软件包及文件上传到服务器同一目录(如“/home/infer”)。
- Ascend-cann-toolkit_{version}_linux-{arch}.run
- Ascend-cann-{chip_type}-ops_{version}_linux-{arch}.run
- Dockerfile
- install.sh
- run.sh
- XXX.tar(自行准备的推理代码或脚本)
以root用户登录服务器。
执行以下步骤准备install.sh文件。
执行以下步骤准备run.sh文件。
执行以下步骤准备Dockerfile文件。
进入软件包所在目录,执行以下命令,构建容器镜像,注意不要遗漏命令结尾的“.”。
[object Object]在以上命令中,各参数说明如下表所示。
表 2 命令参数说明
[object Object][object Object]
[object Object]undefined
示例如下。
[object Object]当出现“Successfully built xxx”表示镜像构建成功。
构建完成后,执行以下命令查看镜像信息。
[object Object]回显示例如下:
[object Object]
编写示例[object Object][object Object]
[object Object][object Object]install.sh编写示例。
[object Object][object Object][object Object]run.sh编写示例。
[object Object][object Object]
[object Object][object Object]Dockerfile编写示例,请根据实际情况进行定制化修改。
[object Object][object Object]
查询ConfigMap。
[object Object]回显示例如下:
[object Object]查询ConfigMap的详细信息,获取可用设备信息。下面以节点名为localhost.localdomain为例。
查询与device相关的ConfigMap的详细信息,获取节点可用芯片信息。
[object Object]回显示例如下:
[object Object]从以上回显信息可以看到,该节点的可用芯片为Ascend910-3、Ascend910-4、Ascend910-5、Ascend910-6、Ascend910-7。
查询与node相关的ConfigMap的详细信息,获取节点状态信息。
[object Object]回显示例如下:
[object Object]从以上回显信息可以看到,该节点的NodeStatus为Healthy,表示当前节点健康。
查询与Switch相关的ConfigMap的详细信息,获取节点状态信息。
[object Object]回显示例如下:
[object Object]从以上回显信息可以看到,该节点的NodeStatus为Healthy,表示当前节点健康。
综合以上查询结果可知,该节点的可用芯片为Ascend910-3、Ascend910-4、Ascend910-5、Ascend910-6、Ascend910-7。
若步骤2或步骤3的回显信息中NodeStatus为UnHealthy,则说明当前节点上的设备均不可用。结合步骤1的查询结果可知,该节点的可用芯片为空。
[object Object]