任务配置
运行yaml选择
- 如果是resnet50模型,参考MindSpore中yaml的使用方法。
- 如果是pangu_alpha模型,使用a800_vcjob.yaml文件运行任务。
任务特性开关配置
使用故障重调度需要在下发vcjob的yaml中增加“fault-scheduling”,"terminationGracePeriodSeconds","maxRetry"参数,具体说明如下所示:
序号 |
值 |
含义 |
---|---|---|
1 |
grace |
任务使用重调度,并在过程中先优雅删除原pod,15分钟(配置可参考Volcano配置)后若还未成功,使用强制删除原pod。若使用临终遗言方案,则需要使用该项配置。 |
2 |
force |
任务使用重调度,并在过程中强制删除原pod。 |
3 |
off |
该任务不使用故障重调度特性。k8s的maxRetry仍然生效。 |
4 |
无(无fault-scheduling) |
同off。 |
5 |
其他值 |
同off。 |
此外还要使用"maxRetry"机制,以yaml模板为例,具体如下:
apiVersion: v1 kind: ConfigMap metadata: name: rings-config-mindx-dls-test namespace: vcjob labels: ring-controller.atlas: ascend-910 data: hccl.json: | { "status":"initializing" } --- apiVersion: v1 kind: ConfigMap metadata: name: fault-config-mindx-dls-test namespace: vcjob data: fault-npus: | { "status":"initializing" } --- apiVersion: batch.volcano.sh/v1alpha1 kind: Job metadata: name: mindx-dls-test #注意和 ConfigMap的name的对应关系 namespace: vcjob #根据实际需要选择合适的namespace(ConfigMap, Job需要保持一致) labels: ring-controller.atlas: ascend-910 #hccl_controller 根据该标签来区分配置Ascend910和非Ascend910的场景 fault-scheduling: "force" spec: minAvailable: 1 schedulerName: volcano #使用volcano调度器调度任务 policies: - event: PodEvicted action: RestartJob plugins: ssh: [] env: [] svc: [] maxRetry: 3 ... spec: containers: - image: mindspore:b035 # 训练框架镜像,可修改 imagePullPolicy: IfNotPresent name: mindspore ... command: - "/bin/bash" - "-c" - "cd /job/code/resnet/scripts; chmod +x train_start.sh; ./train_start.sh;" # 训练脚本执行命令。确保Docker上存在相关命令和路径。 #args: [ "while true; do sleep 30000; done;" ] # 注释掉上一行并启用该行。用户可以在容器中手动运行训练脚本方便调试。 # 命令为'kubectl exec -it -n {namespace} {podname} bash' lifecycle: #使用临终遗言功能需要添加加粗代码 preStop: exec: command: ["/bin/bash", "-c", "cd /job/code/resnet/scripts; bash pre_stop.sh"] resources: requests: huawei.com/Ascend910: 1 # 请求的NPU数量,最大值为8。用户可在下方添加行配置内存、CPU等资源 limits: huawei.com/Ascend910: 1 # 数值与请求数量保持一致 ...
父主题: 断点续训使用示例