文档
注册

任务配置

运行yaml选择

  • 如果是resnet50模型,参考MindSpore中yaml的使用方法。
  • 如果是pangu_alpha模型,使用a800_vcjob.yaml文件运行任务。

任务特性开关配置

使用故障重调度需要在下发vcjob的yaml中增加“fault-scheduling”,"terminationGracePeriodSeconds","maxRetry"参数,具体说明如下所示:

表1 断点续训vcjob任务"fault-scheduling"配置项值列表

序号

含义

1

grace

任务使用重调度,并在过程中先优雅删除原pod,15分钟(配置可参考Volcano配置)后若还未成功,使用强制删除原pod。若使用临终遗言方案,则需要使用该项配置。

2

force

任务使用重调度,并在过程中强制删除原pod。

3

off

该任务不使用故障重调度特性。k8s的maxRetry仍然生效。

4

无(无fault-scheduling)

同off。

5

其他值

同off。

表2 临终遗言vcjob任务“terminationGracePeriodSeconds”配置项值列表

序号

含义

1

0< terminationGracePeriodSeconds <"grace-over-time”参数的值

容器收到停止信号到被K8s强制停止经历的时间;该时间需要大于0且小于volcano-*.yaml文件中“grace-over-time”参数的值,同时还需要保证能够保存完ckpt文件,请根据实际情况修改。具体说明请参考K8s官网容器生命周期回调

此外还要使用"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                                                # 数值与请求数量保持一致
...
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词