集成流程

断点续训提供故障发现、任务重调度等功能,当K8s集群中执行分布式训练任务发生故障时,可自动重调度和进行训练重启恢复。通过集成相关组件,可为第三方AI平台提供断点续训的能力。本文集成示例以Go编程语言作为实例,创建训练任务。

了解平台集成的详细步骤说明请参见通过平台使用章节。

表1 断点续训通过平台集成方案使用流程和说明

关键流程

操作步骤

说明

平台集成

安装部署

在云平台的K8s集群中安装并配置好集群调度组件或自行适配可替换的组件。

平台二次开发

  • 平台将断点续训yaml示例转换成K8s提供的API(推荐使用Go编程语言)对象。
  • 平台使用K8s提供的API创建任务。
  • 平台使用K8s提供的API获取任务运行结果。

准备任务

准备镜像

准备训练镜像。

适配脚本

完成训练脚本适配。

启动训练

创建任务

通过平台配置并创建任务。

运行任务

通过平台查看任务运行结果。

前提条件

平台集成

  • 以下操作步骤的整体逻辑,可以参见组件调用流程章节。
  • 使用环境变量配置资源信息的用户需要创建Ascend Job对象;使用文件配置环境变量的用户需要创建Volcano Job对象。
  • 芯片型号的数值可通过npu-smi info命令查询,返回的“Name”字段对应信息为芯片型号,下文的{xxx}即取“910”字符作为芯片型号数值。
  1. 安装部署。

    • 在云平台的K8s集群中安装并配置好集群调度中的VolcanoNodeDAscend Device PluginClusterDAscend Operator组件。
    • 若云平台使用自己的调度器,未部署Volcano组件,可参考Volcano实现逻辑对平台的调度器进行适配,具体说明请参见亲和性调度方案说明

  2. 创建ConfigMap。该ConfigMap“rings-config-”开头,用于生成hccl配置信息,后面需要带上任务名,否则Volcano无法正确识别该ConfigMap。该ConfigMap创建时只需写入以下字段。

    任务拉起后,会自动填充全量的任务rank信息到ConfigMap中

    status :initializing

  3. 创建Job对象。

    • 创建Volcano Job对象。开启重调度需要配置metedate.labels.fault-scheduling为force,并配置失败重试机制"maxRetry",参数说明请参见通过文件配置资源信息
    • 创建Ascend Job对象。开启重调度模式需要配置metedate.labels.fault-scheduling为force,并配置失败重试机制"maxRetry",参数说明请参见通过环境变量配置资源信息

  4. 平台通过client-go调用K8s服务,创建步骤2生成的ConfigMap对象和步骤3生成的Job对象。
  5. 平台通过client-go调用k8s服务,查询任务部署状态信息。

集成后使用

平台用户在平台集成后使用断点续训的操作和示例可参考通过平台使用