原理和背景
故障发生后,根据上报的故障信息进行故障处理,分为以下两种模式。
- 重调度模式:
在该模式下存在以下两种重调度策略,如表1所示。
- 直接重调度:训练过程中发生集群调度组件可以探测到的硬件故障,系统将故障节点或芯片进行隔离,直接对任务进行重调度。
- 无条件重试:训练过程中发生集群调度组件未探测到的故障,导致任务容器异常退出,系统无条件对任务进行重调度。
在该模式下存在以下两种重调度功能- Job级别重调度:每次故障会停止所有的Pod,重新创建并重调度所有Pod。
- Pod级别重调度:每次故障只停止故障相关的Pod,重新创建并重调度故障相关的Pod后,重启训练任务。
- 优雅容错模式:当训练时芯片设备出现故障后,系统将尝试对故障芯片进行自动恢复,如果可以恢复则在保持Pod运行状态下,将任务原地拉起继续训练,不能恢复则回退至重调度模式。如果用户训练时没有备用资源或者期望设备自动恢复,推荐选择优雅容错模式。
- 若设备之间采用网线直连的方式进行组网,芯片故障发生后,优雅容错可能会重置设备导致网络故障。该故障会触发重调度模式,任务Pod将会被重调度。
- 断点续训针对节点故障中节点硬件故障和芯片故障的不同故障码,提供了默认的故障级别和对应级别的故障处理策略;芯片故障还提供了默认的故障频率和时长,以及对应的故障处理策略。
重调度模式
重调度模式默认为Job级别重调度,每次故障会停止所有的Pod,但在大规模任务中,停止所有Pod后再重调度的成本较高,存在故障恢复时间过长的问题。因此,为了解决这个问题,断点续训还提供Pod级别重调度功能,用户可根据任务规模配置,在故障时刻只停止故障相关的Pod后重调度少量Pod,从而达成故障的快速恢复。
- 重调度模式只支持芯片故障、节点故障和业务面故障。参数面网络故障不会直接触发故障重调度,如果由参数面故障引发业务面故障,则会触发任务重调度。
- 在大集群训练任务中使用Pod级别重调度时,建议设置open files参数(可以打开的最大文件数目)足够大,设置过小可能导致Pod重调度出现异常。例如执行ulimit -n 100000命令,将open files参数设置为100000。
- 当训练任务的annotation中hccl/rankIndex字段为0的Pod发生故障时,不触发Pod级别重调度,直接触发Job级别重调度。
随着大模型训练的集群规模扩大,训练资源紧缺,在无空闲设备时,可能导致节点或芯片故障后,任务无法重调度并陷入Pending状态。重调度模式在节点或芯片故障后,需要运维人员手动恢复设备,恢复不及时可能导致训练集群中出现大量散点故障,降低集群算力利用率。
因此,断点续训在重调度模式上增加了优雅容错模式,用于优化NPU芯片的部分故障容错能力。NPU芯片故障中的部分故障可以通过退出芯片上的训练进程以及热复位芯片来恢复,优雅容错模式即针对这部分故障进行恢复处理,不需要重调度任务。
优雅容错模式
MindCluster Ascend Device Plugin负责故障的上报以及设备的恢复,管理进程根据MindCluster Ascend Device Plugin上报的信息进行训练进程的停止与重新拉起,完成故障恢复,不能恢复则回退至重调度模式。集成优雅容错模式需要在业务容器中添加管理进程,管理进程需要具备故障感知、停止训练任务和重启训练任务等能力。
优雅容错模式只支持芯片故障。
优雅容错模式可以通过退出芯片上的训练进程以及热复位芯片,来恢复NPU芯片故障中的部分故障,不需要重调度任务。
重调度模式将故障区分为两类:无需处理和需要重调度。优雅容错模式将故障区分为以下四类,无需处理、重新执行业务、需要复位芯片和需要重调度,对于每类故障的处理如图1所示。
优雅容错模式直接将故障上报到业务容器内的管理进程中(通常通过挂载文件的方式),容器内的管理进程读取故障文件信息获取到故障信息,获取故障信息的流程如图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功能仅支持重调度模式,不支持使用优雅容错模式。

