hostNetwork设置为true后,通信阻塞超时,任务失败
2025/01/26
29
问题信息
问题来源 | 产品大类 | 关键字 |
---|---|---|
官方 | 集群调度 | hostNetwork、通信阻塞、任务失败 |
问题描述
训练任务开启hostNetwork为true。提示如图所示报错,通信阻塞超时,任务失败
原因分析
hostNetwork设置为true后,由于未在任务yaml中配置环境变量参数HCCL_IF_IP,HCCL无法确认与哪个网卡IP建立通信,导致HCCL通信超时。
解决措施
在任务yaml中设置hostNetwork为true后,需要在yaml中同步配置环境变量HCCL_IF_IP为status.hostIP,指定root通信网卡IP为hostIP,即可使HCCL成功建链,解决问题。
apiVersion: mindxdl.gitee.com/v1 kind: AscendJob metadata: name: default-test-mindspore labels: framework: mindspore # 训练框架名称 ring-controller.atlas: ascend-{xxx}b # 标识产品类型 spec: schedulerName: volcano # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效 runPolicy: schedulingPolicy: # 当Ascend Operator组件的启动参数enableGangScheduling为true时生效 minAvailable: 2 #任务总副本数 queue: default # 任务所属队列 successPolicy: AllWorkers #任务成功的前提 replicaSpecs: Scheduler: replicas: 1 # 任务副本数 restartPolicy: Never template: metadata: labels: ring-controller.atlas: ascend-{xxx}b # 标识产品类型 spec: hostNetwork: true # 可选值,根据实际情况填写,true支持hostIP创建Pod,false不支持hostIP创建Pod affinity: # 本段配置表示分布式任务的Pod调度到不同节点 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: job-name operator: In values: - default-test-mindspore # 需要和上面的任务名一致 topologyKey: kubernetes.io/hostname nodeSelector: host-arch: huawei-arm # 可选值,根据实际情况填写 accelerator-type: module-{xxx}b-8 # 节点类型 containers: - name: ascend # 必须为ascend,不能修改 image: mindspore-test:latest #镜像名称 imagePullPolicy: IfNotPresent ... env: - name: HCCL_IF_IP # 可选值,根据实际情况填写 valueFrom: # 若hostNetwork配置为true,需要同步配置HCCL_IF_IP环境变量 fieldRef: # 若hostNetwork未配置或配置为false,不可配置HCCL_IF_IP环境变量 fieldPath: status.hostIP # ... ports: # 分布式训练集合通讯端口 - containerPort: 2222 name: ascendjob-port resources: limits: huawei.com/Ascend910: 8 # 申请的芯片数量 requests: huawei.com/Ascend910: 8 #与limits取值一致 volumeMounts: ... volumes: ... Worker: replicas: 1 #任务副本数 restartPolicy: Never template: metadata: labels: ring-controller.atlas: ascend-{xxx}b # 标识产品类型 spec: hostNetwork: true # 可选值,根据实际情况填写,true支持hostIP创建Pod,false不支持hostIP创建Pod affinity: # 本段配置表示分布式任务的Pod调度到不同节点 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: job-name operator: In values: - default-test-mindspore # 需要和上面的任务名一致 topologyKey: kubernetes.io/hostname nodeSelector: host-arch: huawei-arm # 可选值,根据实际情况填写 accelerator-type: module-{xxx}b-8 # 节点类型 containers: - name: ascend # 必须为ascend,不能修改 ... env: - name: HCCL_IF_IP # 可选值,根据实际情况填写 valueFrom: # 若hostNetwork配置为true,需要同步配置HCCL_IF_IP环境变量 fieldRef: # 若hostNetwork未配置或配置为false,不可配置HCCL_IF_IP环境变量 fieldPath: status.hostIP # ... - name: ASCEND_VISIBLE_DEVICES # Ascend Docker Runtime会使用该字段 valueFrom: fieldRef: fieldPath: metadata.annotations['huawei.com/Ascend910'] # 需要和下面resources.requests保持一致 ... ports: # 分布式训练集合通讯端口 - containerPort: 2222 name: ascendjob-port resources: limits: huawei.com/Ascend910: 8 # 申请的芯片数量 requests: huawei.com/Ascend910: 8 #与limits取值一致 volumeMounts: ... volumes: ...
本页内容