性能说明

断点续训特性可以在训练发生故障后恢复训练,降低故障导致的训练损失。断点续训的故障整体恢复时间可以分为训练回滚时间和训练拉起时间,如图1所示。

图1 故障恢复阶段

训练回滚时间

训练出现故障后会丢失原有的训练数据,需要从保存的ckpt文件中恢复训练。在大模型训练中,由于每次保存ckpt会降低训练效率,因此通常1小时以上才会保存一次ckpt文件,每次故障后将会丢失上次保存ckpt时间点到当前故障时间点的训练数据。训练回滚时间即使用上次保存的ckpt文件训练到出现故障点的时间。设平均训练回滚时间为T0,ckpt保存周期为Gf,则故障平均训练回滚时间T0=Gf/2。

训练拉起时间

训练出现故障后,需要重新拉起训练任务,恢复训练容器及训练进程,完成资源重调度、集合通信初始化、ckpt加载和编译等流程后继续往后训练。训练故障后需要完整走完一段训练拉起时间后才能继续训练,训练拉起时间过长会导致资源浪费。设资源重调度时间为T1,集合通信时间为T2,ckpt加载时间为T3,编译时间为T4,因此训练拉起时间为T1+T2+T3+T4

单次故障总训练损失时间T=T0+T1+T2+T3+T4。具体的时间参考请参见训练恢复耗时参考

其中每部分时间与参数规模和集群规模相关,网络与存储性能也会影响总训练损失时间。

训练恢复耗时参考

PyTorch框架下的GPT-3模型,其在NFS存储下写入速度为2.7GB/s,读取速度为4.8GB/s的情况下,参数量大小为3B或15B的单机8卡任务为例。(故障处理模式为重调度,若使用优雅容错模式,可不参考该指标。)
  • 参数量大小为3B,如图2所示,该模型的ckpt落盘时间约为30秒,断点续训在设备发现阶段用时小于5秒,设备处理阶段用时小于30秒,训练重启阶段用时大约在70秒左右,训练重启阶段的ckpt加载功能用时约3秒。
  • 参数量大小为15B,如图3所示,该模型的ckpt落盘时间约为120秒,断点续训在设备发现阶段用时小于5秒,设备处理阶段用时小于30秒,训练重启阶段用时大约在210秒左右,训练重启阶段的ckpt加载功能用时约90秒。
图2 3B模型时间指标
图3 15B模型时间指标