开发者
资源

原理和背景

断点续训针对节点故障中节点硬件故障芯片故障的不同故障码,提供了默认的故障级别和对应级别的故障处理策略;芯片故障还提供了默认的故障频率和时长,以及对应的故障处理策略。

若用户需要修改故障处理策略可参见故障配置参考。若无特殊需求,请勿随意修改。

故障发生后,根据上报的故障信息进行故障处理,分为不同级别的重调度模式和优雅容错功能。

重调度模式

  1. 重调度模式存在以下级别。
    • Job级别重调度:每次故障会停止所有的Pod,重新创建并重调度所有Pod,重启训练任务。
    • Pod级别重调度:每次故障只停止故障相关的Pod,重新创建并重调度故障相关的Pod后,重启训练任务。不能恢复则回退至Job级重调度模式。
    • 算子级在线恢复Atlas A3 训练系列产品支持在发生参数面网络故障时,HCCL会执行通信算子重传。在故障进程不退出的情况下,算子级在线恢复可容忍更长时间的网络异常,训练任务不中断。
      • 对于芯片网络相关故障,当算子重传成功时,Volcano会将任务作为亚健康任务处理。当算子重传失败时,Volcano触发重调度处理。
      • 对于灵衢总线设备相关故障,HCCL执行算子级在线恢复后,Volcano会将任务作为亚健康任务处理。

    重调度模式默认为Job级别重调度,每次故障会停止所有的Pod,但在大规模任务中,停止所有Pod后再重调度的成本较高,存在故障恢复时间过长的问题。为此,断点续训还提供Pod级别重调度功能,用户可根据任务规模配置,在故障时刻只停止故障相关的Pod后重调度少量Pod,从而达成故障的快速恢复。

    • 重调度模式只支持芯片故障、节点故障和业务面故障。参数面网络故障不会直接触发故障重调度,如果由参数面故障引发业务面故障,则会触发任务重调度。
    • 在大集群训练任务中使用Pod级别重调度时,建议设置open files参数(可以打开的最大文件数目)足够大,设置过小可能导致Pod重调度出现异常。例如执行ulimit -n 100000命令,将open files参数设置为100000。
    • 当训练任务的annotation中hccl/rankIndex字段为0的Pod发生故障时,不触发Pod级别重调度,直接触发Job级别重调度。
    • 使用算子级在线恢复前,用户需配置环境变量HCCL_OP_RETRY_ENABLE,HCCL_OP_RETRY_PARAMS。详细步骤请参见《环境变量参考》
  2. 重调度模式存在以下两种重调度策略。
    • 直接重调度:训练过程中发生集群调度组件可以探测到的硬件故障,系统将故障节点或芯片进行隔离,直接对任务进行重调度。
    • 无条件重试:训练过程中发生集群调度组件不能探测到的故障,导致任务容器异常退出,系统无条件对任务进行重调度。
    表1 重调度策略说明

    重调度策略

    说明

    支持的故障类型

    直接重调度

    系统将故障的节点或芯片进行隔离,然后直接对任务进行重调度。

    已知的节点故障或重调度处理级别芯片故障。

    无条件重试

    系统对配置了无条件重试次数的任务,进行指定次数内的重调度。

    成功重调度后,任务可重试次数将减1,当可重试次数为0时无法再次触发重调度。

    由于参数面网络故障或者训练相关软件故障等,导致任务异常退出,Pod的Status变为Failed状态的相关故障。

优雅容错功能

随着大模型训练的集群规模扩大,训练资源紧缺,在无空闲设备时,可能导致节点或芯片故障后,任务无法重调度并陷入Pending状态。重调度模式在节点或芯片故障后,需要运维人员手动恢复设备,恢复不及时可能导致训练集群中出现大量散点故障,降低集群算力利用率。

因此,断点续训在重调度模式上增加了优雅容错功能,用于优化NPU芯片的部分故障容错能力。NPU芯片故障中的部分故障可以通过退出芯片上的训练进程以及热复位芯片来恢复,优雅容错功能即针对这部分故障进行恢复处理,不需要重调度任务。

Ascend Device Plugin负责故障的上报以及设备的恢复,管理进程根据Ascend Device Plugin上报的信息进行训练进程的停止与重新拉起,完成故障恢复,不能恢复则回退至重调度模式。集成优雅容错模式需要在业务容器中添加管理进程,管理进程需要具备故障感知、停止训练任务和重启训练任务等能力。

优雅容错功能只支持芯片故障。

重调度模式将故障区分为两类:无需处理需要重调度。优雅容错模式将故障区分为以下四类,无需处理重新执行业务需要复位芯片需要重调度,对于每类故障的处理如图1所示。

图1 优雅容错故障处理流程

优雅容错模式直接将故障上报到业务容器内的管理进程中(通常通过挂载文件的方式),容器内的管理进程读取故障文件信息获取到故障信息,获取故障信息的流程如图2所示。

图2 获取故障信息

watchdog故障检测

  • 参数面网络链路异常(参数面网络故障)可能导致任务中正常NPU无法与故障NPU通信,使所有NPU集合通信陷入超时等待状态;并使任务集合通信出现等待超时异常后才退出(默认为30分钟)。开启watchdog功能(且开启了业务面故障无条件重试能力)可以在参数面网络链路异常发生后,6分钟内使任务快速退出,触发重调度模式的无条件重试,将任务重调度到健康的NPU上,并隔离故障NPU。
  • NPU上Task执行异常(业务面故障)可能导致任务中正常NPU无法与故障NPU通讯,使正常NPU集合通信陷入超时等待状态,并使任务集合通信出现等待超时异常后才退出(默认为30分钟)。开启watchdog功能(且开启了业务面故障无条件重试能力)可以在该异常发生后,6分钟内使任务快速退出,触发重调度模式的无条件重试,将任务重调度到健康的NPU上,并隔离故障NPU。
  • 参数面网络链路异常仅支持PyTorch框架使用watchdog功能。
  • NPU上Task执行异常仅支持Atlas A2 训练系列产品PyTorch框架使用watchdog功能。
  • watchdog功能仅支持重调度模式,不支持使用优雅容错模式。