集群调度组件配置
如果用户要使用断点续训特性,需要在启动Ascend Device Plugin配置、NodeD配置和Volcano配置组件时进行对应的配置才能使用本特性。
Ascend Device Plugin配置
请根据Ascend Device Plugin的启动方式选择对应的修改方式。在重调度策略开启的情况下,Ascend Device Plugin的异常也会触发故障重调度。
启动Ascend Device Plugin组件可选择如下方式进行配置:
以二进制方式启动
- 打开Ascend Device Plugin服务的“device-plugin.service”配置文件。
# 服务配置文件默认在该路径下 vim /etc/systemd/system/device-plugin.service
将参数“volcanoType”和“autoStowing”设置为“true”,修改如下所示加粗部分,其余部分已省略。
... [Service] ExecStart=/bin/bash -c "/usr/local/bin/device-plugin -volcanoType=true -autoStowing=true ..." ...
-volcanoType=true,重调度场景下必须使用volcano。
-autoStowing=true,是否开启自动纳管开关,默认为true;设置为false代表关闭自动纳管,当芯片健康状态由unhealthy变为healthy后,不会自动加入到可调度资源池中;关闭自动纳管,当芯片参数面网络故障恢复后,不会自动加入到可调度资源池中。该特性仅适用于昇腾910芯片。
- 重启Ascend Device Plugin服务。
systemctl daemon-reload systemctl restart device-plugin.service
以容器化方式启动
- 修改Ascend Device Plugin组件的启动yaml,修改如下所示加粗部分。
... containers: - image: ascend-k8sdeviceplugin:v3.0.0 name: device-plugin-01 resources: requests: memory: 500Mi cpu: 500m limits: memory: 500Mi cpu: 500m command: [ "/bin/bash", "-c", "--"] args: [ "device-plugin -useAscendDocker=true -volcanoType=true # 重调度场景下必须使用volcano。 -autoStowing=true # 是否开启自动纳管开关,默认为true;设置为false代表关闭自动纳管,当芯片健康状态由unhealth变为health后,不会自动加入到可调度资源池中;关闭自动纳管,当芯片参数面网络故障恢复后,不会自动加入到可调度资源池中。该特性仅适用于昇腾910芯片。 -listWatchPeriod=5 # 健康状态检查周期,范围[3,60];默认5秒。 -logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log -logLevel=0" ] securityContext: privileged: true readOnlyRootFilesystem: true ...
- 在K8s管理点执行以下命令,启动Ascend Device Plugin。
kubectl apply -f device-plugin-xxx-*.yaml
标签配置
NodeD需要安装到所有的计算节点,因此在安装NodeD之前需要给所有计算节点打上标签workerselector=dls-worker-node,命令如下所示。
kubectl label node nodename workerselector=dls-worker-node --overwrite
其中“nodeName”表示K8s集群中节点的名称。
心跳发送间隔配置(可选)
编辑NodeD组件的启动yaml文件,修改NodeD发送心跳的间隔时间(参数为:-heartbeatInterval)。
vim noded-*.yaml
在“args”行增加“-heartbeatInterval”参数,如下所示:

... env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName imagePullPolicy: Never command: [ "/bin/bash", "-c", "--"] args: [ "noded -logFile=/var/log/mindx-dl/noded/noded.log -logLevel=0 -heartbeatInterval=5" ] securityContext: readOnlyRootFilesystem: true allowPrivilegeEscalation: false capabilities: drop: [ "ALL" ] runAsUser: 9000 runAsGroup: 9000 volumeMounts: - name: log-noded ...
节点使用NodeD监测配置开关
集群调度组件中NodeD组件会定期上报节点状态。通过配置“nodeDEnable=on/off”参数开关来控制是否获取节点的状态信息并用于判断节点故障(获取信息需先安装NodeD),“on”表示开启NodeD对本节点的信息获取,使用获取的信息判断节点是否故障,其他值或无该参数表示仅上报节点信息但不判断节点故障。
在master管理节点上执行命令如下:
kubectl label nodes nodeName nodeDEnable=on --overwrite
其中“nodeName”表示需要使用NodeD上报信息的节点。
Volcano配置
“volcano-*.yaml”中可配置优雅删除原Pod的时间,请根据实际情况合理配置该值。若使用断点续训中的临终遗言功能,会使用该项配置。该配置全局生效,会影响当前环境中的训练任务,建议在安装Volcano的时候配置,在系统运行过程中不建议修改,参数默认值及示例如下。
名称 |
默认值 |
范围 |
含义 |
---|---|---|---|
grace-over-time |
900,单位:秒 |
[2, 3600] |
表示从触发Pod删除,到Pod被强制删除的这段时间间隔,超过这个时间之后会强制删除原pod。 |
“volcano-*.yaml”示例。
... apiVersion: v1 kind: ConfigMap metadata: name: volcano-scheduler-configmap namespace: volcano-system data: volcano-scheduler.conf: | actions: "enqueue, allocate, backfill" tiers: - plugins: - name: priority - name: gang - name: conformance - name: volcano-npu-v3.0.0 - plugins: - name: drf - name: predicates - name: proportion - name: nodeorder - name: binpack configurations: ... - name: init-params arguments: {"grace-over-time":"900","presetVirtualDevice":"true"} ...