配置组件
用户需要对断点续训的Ascend Device Plugin和NodeD进行相关配置。
配置Ascend Device Plugin
只支持以容器化方式启动Ascend Device Plugin。
- 根据所使用的故障处理模式,修改Ascend Device Plugin组件的启动yaml,修改如下所示加粗部分。
- 重调度模式
在重调度模式下,Ascend Device Plugin的异常也会触发故障重调度。
... containers: - image: ascend-k8sdeviceplugin:v5.0.RC3.2 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后,不会自动加入到可调度资源池中;关闭自动纳管,当芯片参数面网络故障恢复后,不会自动加入到可调度资源池中。该特性仅适用于Atlas 训练系列产品。 -listWatchPeriod=5 # 健康状态检查周期,范围[3,60];默认5秒。 -logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log -logLevel=0" ] securityContext: privileged: true readOnlyRootFilesystem: true ...
- (可选)优雅容错模式:在重调度配置的基础上,新增“-hotReset”字段。
... containers: - image: ascend-k8sdeviceplugin:v5.0.RC3.2 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后,不会自动加入到可调度资源池中;关闭自动纳管,当芯片参数面网络故障恢复后,不会自动加入到可调度资源池中。该特性仅适用于Atlas 训练系列产品。 -hotReset=1 # 开启故障优雅容错能力,-1表示关闭热复位,0表示开启推理任务热复位 -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-v{version}.yaml
如在Atlas 训练系列产品环境下启动该组件,示例如下。kubectl apply -f device-plugin-volcano-v5.0.RC3.2.yaml
配置NodeD
- 配置标签。
NodeD需要安装到所有的计算节点,因此在安装NodeD之前需要给所有计算节点打上标签workerselector=dls-worker-node,命令如下所示。其中“nodeName”表示K8s集群中节点的名称。
kubectl label node nodename workerselector=dls-worker-node --overwrite
- (可选)配置心跳发送间隔。用户可以通过手动修改NodeD的启动yaml,配置发送心跳的间隔时间。
- 执行以下命令,打卡NodeD组件的启动yaml文件。
vi noded-v{version}.yaml
- 在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组件的启动yaml文件。
- 配置节点使用NodeD的监测开关。
NodeD组件会定期上报节点状态。通过配置“nodeDEnable=on/off”参数开关来控制是否获取节点的状态信息并用于判断节点故障(获取信息需先安装NodeD)。在管理节点上执行命令如下:
kubectl label nodes nodeName nodeDEnable=on --overwrite
其中“nodeName”表示需要使用NodeD上报信息的节点。“on”表示开启NodeD对本节点的信息获取,使用获取的信息判断节点是否故障,“off”或无该参数表示仅上报节点信息但不判断节点故障。
父主题: 通过命令行使用