开源训练框架提高大型语言模型预训练出现故障时的速度

  • 发布时间:2023-12-19 17:07:12 来源:
标签:
导读 随着对支持生成人工智能的技术的需求不断飙升,处理能力必须跟上以适应模型训练和容错能力。密歇根大学的研究人员设计了一种专门针对现代人

随着对支持生成人工智能的技术的需求不断飙升,处理能力必须跟上以适应模型训练和容错能力。密歇根大学的研究人员设计了一种专门针对现代人工智能工作负载的解决方案。

研究团队开发了开源大模型训练框架Oobleck,利用pipeline模板的概念,提供快速且有保证的训练故障恢复而不降低训练吞吐量。

研究结果于2023年10月在德国科布伦茨举行的第29届操作系统原理研讨会论文集中公布。

“Oobleck是一种通用解决方案,可为任何大型模型预训练添加高效的弹性。因此,它的影响将体现在从大型科技和高性能计算到科学的整个应用范围的基础模型预训练中和医学领域,”电气工程和计算机科学副教授、该论文的通讯作者莫沙拉夫·乔杜里(MosharafChowdhury)说道。

大型语言模型在预训练期间需要大量GPU集群持续很长的时间,并且随着训练规模和持续时间的增加,出现故障的可能性也会增加。当故障确实发生时,大型语言模型预训练的同步特性会放大问题,因为所有参与的GPU都会处于空闲状态,直到故障得到解决。

现有框架对大型语言模型预训练期间的容错缺乏系统支持。当前的解决方案依靠检查点或重新计算来从故障中恢复,但这两种方法都很耗时,并且会在恢复期间导致集群范围内的空闲,并且没有正式的容错保证。

管道模板是欧不裂设计的核心。管道模板是给定数量节点的训练管道执行的规范,用于实例化管道副本。所有管道模板在逻辑上都是等效的(即可以一起使用来训练相同的模型)但在物理上是异构的(即使用不同数量的节点)。

“Oobleck是第一个利用大型语言模型中固有冗余来实现容错,同时结合预先生成的异构模板的作品。总之,该框架提供了高吞吐量和最大利用率、有保证的容错性和快速恢复,而没有基于检查点或重新计算的方法的开销。”计算机科学与工程博士生、论文第一作者InsuJang说道。

给定一个以可容忍的最大同时故障数f开始的训练作业,Oobleck的执行引擎从生成的模板集中实例化至少f+1个异构管道。固定的全局批次根据管道副本的计算能力按比例分配,以避免训练同步中出现落后者。

发生故障时,Oobleck只需从预先计算的管道模板重新实例化管道,从而避免在运行时寻找新的最佳配置的苛刻分析。可以证明的是,使用预先计算的管道模板集始终能够使Oobleck从f或更少的故障中恢复。

对不可预测事件的恢复能力是计算机科学中的一个经典问题。管道模板不是在问题发生后解决(这种方法很慢),也不是规划所有可能的场景(这实际上是不可能的),而是在弹性分布式计算中在速度和有效性之间取得平衡。

欧不裂首次证明了这一想法的有效性,但它有可能应用于任何存在相同二分法的分布式计算系统。展望未来,我们希望从推理服务系统开始,应用管道模板来提高GenAI应用程序各个方面的弹性。”乔杜里说。

  • 免责声明:本文由用户上传,如有侵权请联系删除!