图11展示了基于RSC-1的28天数据快照的信号分布,我们使用该数据来设置检测标准的阈值。x轴表示每个GPU节点上信号的出现次数,从0到1进行归一化处理。y轴表示经历每个信号的GPU节点的累积和归一化数量。我们发现,用户报告的excl_jobid_count信号与节点失败的相关性不强,但仍有大量节点被至少一个作业排除。这促使我们主动检测问题节点,而不是将检测负担留给机器学习开发人员。在识别出的问题节点中,超过85%的节点在测试中失败。这些失败在表II中进行了分类。我们设计、实现并评估了问题节点检测机制,成功识别出RSC-1(24个节点)和RSC-2(16个节点)中的40个故障节点,准确率超过85%。识别出的问题节点占RSC-1足迹的1.2%、日常作业的13%和RSC-2足迹的1.7%。我们的问题节点检测机制使大型作业(512个及以上GPU)的失败率降低了10%,从14%降至4%。观察11:历史数据对于发现故障节点至关重要。实施柠檬节点(即故障节点)检测可以提高大型作业完成率30%以上。 B. 通过自适应路由增强网络架构韧性故障特征分析揭示了Infiniband链路错误引发的故障的重要性。正如服务器可能在不同阶段发生故障,对于短暂或永久性能下降的组件,网络链路也可能因物理或电气特性的变化而表现出类似的行为。大规模高度并行模型训练不可避免地会遇到故障网络链路。这些链路可能具有高错误率、在上下状态之间波动的行为、永久断开状态或在多租户环境中高度拥塞。所有这些都会导致网络架构中的通信性能下降。大规模物理链路更换十分繁琐。因此,Infiniband网络架构配备了交换机级别的技术来容忍链路问题。其中一种称为SHIELD[11]的自愈功能允许交换机围绕故障链路进行协调。然而,即使启用了此功能,将链路视为断开的阈值也可能过于保守,导致协议层面的重传以及可能的网络性能下降。特别是在RSC-1的启动阶段,我们观察到带宽损失高达50%-75%。另一种更高级的功能是自适应路由(AR),它根据实时网络条件动态调整路由决策。AR在所有网络链路之间平衡流量,并提高链路总体利用率。通过允许数据包避开拥塞区域和不健康链路,自适应路由提高了网络资源的利用率和效率。因此,由网络问题引起的训练作业性能差异得以减少。我们在集群中启用了AR,以提高性能的可预测性。
为了展示AR在我们集群中的重要性,我们进行了两个实验。在第一个实验中,我们使用mlxreg工具修改网络架构中的端口寄存器,从而在架构中引入了位错误率(BER)。然后,我们在512个GPU上运行了NCCL-Tests[6]中的All-Reduce基准测试,比较了启用和未启用AR时的性能。图12a的结果显示,在链路错误的情况下,AR能够维持更高的带宽。在第二个实验中,我们在64个节点上同时运行了多轮NCCL-Tests中的All-Reduce测试,每组两个节点(16个GPU),以展示AR在争用情况下的表现。图12b显示,当网络架构中充斥着多个NCCL环时,使用AR时的性能差异更小,且AR能够实现更高的性能。这是因为AR可以使GPU免受拥塞链路的瓶颈影响。通过启用交换机根据端口负载选择输出端口,故障链路对网络架构的影响被分散到各个作业中,而不是仅惩罚那些恰好被映射到故障链路上的训练作业。观察12:网络必须移除并绕过故障。如果没有韧性机制,可能会损失超过50%的带宽。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;caret-color: rgb(5, 7, 59);color: rgb(5, 7, 59);margin-bottom: 8px;">5. 关键教训与研究机遇在分享了我们运营和优化集群的经验后,我们看到了提升可靠性、管理日益复杂的基础设施以及与框架和算法共同设计解决方案的多个机遇。训练可靠性:我们展示了如何通过运行健康检查和历史分析来发现影响可靠计算的瞬时故障,以及柠檬节点(即故障节点),其移除可提升大型作业完成率30%以上。展望未来,我们认为向调度器和分布式算法进一步暴露可靠性信息具有重大机遇,以便对工作进行划分,从而最大化可靠性或吞吐量。此外,我们还注意到,网络架构本身在韧性方面存在潜在改进空间,例如,能够重新配置其拓扑结构以绕过故障,这与我们在自适应路由(第IV-B节)中所述的精神相似。因此,我们设想未来的基础设施系统将致力于让不可靠性变得不那么明显,而不是试图完全消除它。当未来的GPU系统(如NVIDIA GB200[8])将修复单位从服务器变为机架时,我们认为可能需要重新思考整个系统,以通过应对故障来避免停机时间。更接近应用层面的是,训练作业的有效训练时间比(ETTR)是故障相关延迟开销的函数。提高ETTR的有效方法是除了降低重启概率本身外,还要最小化重启延迟成本。如先前工作[25]所观察,某些操作(如NCCL初始化)在GPU节点数量增加时扩展性较差。因此,展望未来,未来软件系统支持快速且可靠的例程以优化重启延迟成本至关重要。我们预计,完全替换类似MPI的集体操作以及提高飞行前硬件测试效率将成为未来关键途径。调试工具:一旦通过健康检查消除了许多重大故障,剩余的故障通常表现为近端故障,这些故障不会立即表明根本原因。NCCL超时是故障最常见的症状之一,其根本原因可能是网络基础设施、存在错误的模型代码或其他卡死的组件。定期检查硬件基础设施健康(第II-C节)可通过在NCCL内核卡死之前主动发现故障网络或硬件问题,从而降低NCCL超时的频率,但确定剩余超时的根本原因将导致新的健康检查或错误修复。我们可以通过跨参与集体操作的不同等级比较日志数据,追溯确定NCCL超时的根本原因,从而提高训练运行的成功率。例如,通过记录哪个等级启动了每个集体操作以及集体操作之间的依赖关系,我们可以找到某些等级启动了集体操作而其他等级未启动的第一个集体操作,并进一步调查缺失的等级。如果所有等级都进入了集体操作但未退出,我们可以检查集体操作内的网络流量,以确定哪个组件未发送或未接收预期消息。从未来的运行中移除有问题的等级或网络组件将降低这些运行遇到相同问题的可能性。高效且可靠的大规模分布式训练需要更好的诊断和调试工具。可以想象扩展现有的管理工具,如IPMI[23],以在带外网络中提供机器调试信息,并缩小归因差距。编程模型:诊断NCCL超时的另一个混淆因素是PyTorch中实现的单程序多数据(SPMD)编程模型。如果不同的等级意外地以错误顺序发出集体操作(如all-reduce),作业将陷入死锁,从而导致NCCL超时。因此,调试NCCL超时首先应从确定训练脚本是否存在错误开始,这为追踪基础设施不稳定性增加了混淆因素。动态检测错误程序并引发异常而不是陷入死锁将提高稳定性。或者,可以旨在完全消除不匹配集体操作的可能性。例如,Pathways[14]引入了一个单点来调度通信,确保每台机器一致地调度通信。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;caret-color: rgb(5, 7, 59);color: rgb(5, 7, 59);margin-bottom: 8px;">6. 相关工作ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;caret-color: rgb(5, 7, 59);color: rgb(5, 7, 59);margin-bottom: 24px;margin-top: 0px;">机器学习基础设施:随着对机器学习(ML)兴趣的不断增长,人们开始研究ML集群的基础设施故障以及调度器效应[24]、[31]。这包括从作业规模到故障特性等方面的分析,主要关注最大作业规模,其规模可达数十个GPU。IBM的AI基础设施和故障分类法在[18]中有所介绍——我们提供了一个类似动机的分类法,并详细量化了故障情况。Meta的生产调度器MAST的设计与运行也于近期得到了研究[15],该研究证明了数据中心级负载均衡的必要性。大型语言模型(LLM)的兴起最近推动了一系列专门关注ML训练可靠性的研究工作[17]、[25]、[33],这些研究假设的规模比以往通用ML实验中的规模要大几个数量级。我们的工作独具特色,因为我们的集群在规模和模型架构多样性方面既服务于小型作业也服务于大型作业,并且是在集群级研究环境中进行的。模型-系统协同设计:已经开发出了针对LLM的并行化技术,如Megatron-LM[39],这些技术自然地将数据和模型并行性映射到常见的网络拓扑结构中[44]。在Megascale[25]中研究了字节跳动LLM的故障及其缓解措施。在Unicron[21]中对阿里巴巴的训练系统进行了类似的研究,并提出了一种专用的HPN网络来缓解与网络相关的故障[36]。Llama 3也展示了软硬件协同设计在提高韧性方面的益处[33]。此外,对于其他大型深度学习模型的开发,也探索了容错和韧性训练[32]、[46]。虽然我们的工作同样关注模型训练韧性和通用集群可靠性,但我们的经验是独一无二的,因为我们同时在规模的两端运作,这促使我们提出了既实用又能以黑盒方式部署的解决方案,同时这些方案在四千个GPU的规模上经过了实战检验。最后,我们的工作负载是多样化的[16]、[28]、[34]、[38]、[41]、[43],涵盖了视觉、语言和混合模态模型,且处于快速发展的研究环境中。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;caret-color: rgb(5, 7, 59);color: rgb(5, 7, 59);margin-bottom: 8px;">7. 结论ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;caret-color: rgb(5, 7, 59);color: rgb(5, 7, 59);margin-bottom: 24px;margin-top: 0px;">我们分享了在运营两个大规模ML研究集群方面的经验。我们的分析表明,最先进的研究集群的运行规模比以往展示的要大几个数量级,这促使我们更加关注大规模性能和可靠性。本文采用数据驱动的方法来量化和缓解从硬件到系统软件再到框架级韧性改进等方面的故障影响。