近年来,深度学习领域取得了重大进展,特别是在计算机视觉(CV)、自然语言处理(NLP)和语音等领域。在大量数据上训练的大规模模型的使用在实际应用、提高工业生产力和促进社会发展方面具有巨大的前景。然而,它的训练过程极不稳定,对计算资源的要求非常严格。随着计算能力适应性需求的不断提高,大量研究在一定程度上探索了高效训练领域,但对通用的大规模深度学习模型训练加速技术的总结和指导仍有待深入研究。本文对训练加速的一般技术进行了详细的回顾。考虑基本更新公式,并将其基本组成部分分为5个主要角度: (1)"以数据为中心":包括数据集正则化、数据采样和以数据为中心的课程学习技术,可以显著降低数据样本的计算复杂度; (2) "以模型为中心",包括加速基本模块、压缩训练、模型初始化和以模型为中心的课程学习技术,侧重于通过减少参数计算和提供更好的初始化来加速训练; (3)“以优化为中心”,包括学习率的选择、大批量的使用、高效目标的设计和模型平均技术,注重训练策略和提高大规模模型的通用性; (4)“预算训练”,包括在资源受限情况下的一些独特加速方法,例如对总迭代次数的限制; (5)“以系统为中心”,包括一些高效的分布式框架和开源库,它们为上述加速算法的实现提供了足够的硬件支持。通过提出这种全面的分类法,本文综述了一个全面的回顾,以了解每个组件内的一般机制及其联合交互。同时,对通用加速技术发展的未来工作进行了详细的分析和讨论,这些工作可以启发我们重新思考和设计新的高效范式。总之,我们希望这项综述将成为普遍有效训练的宝贵指南。
https://www.zhuanzhi.ai/paper/3a05246686b3790fba94933dfcf0a82f
随着人工智能技术的快速发展,深度模型的参数以百万级甚至数十亿级的速度迅猛增长。Kaplan等人[110]将模型大小、数据集大小和用于训练的计算量之间的关系研究为幂律,并表明更大的模型本质上需要大量的数据,在学习上的样本效率明显更高。大型模型的部署也成为最重要的研究领域之一。例如,Dehghani等人[44]提出了ViT-22B,该模型展示了计算机视觉(CV)社区中“类LLM(大型语言模型)”扩展的潜力。GPT-1[196]提出了有监督微调以0.1B参数驱动语言模型。而两年后,GPT-3[18]在45TB数据样本上训练了175B参数,并在各种自然语言处理任务上成功取得了最先进的结果。图灵- nlg采用了大约172亿个参数的生成语言模型,只需一年时间就可以快速迭代到具有530B参数的规模较大的模型MT-NLG[229],这在几个任务中远远领先于GPT-3。我们总结了图1中提出的模型尺寸发展的里程碑。尽管从这种快速增长中获得的收益令人震惊,但为了保持实际效率,人们迫切期待在探索新技术和训练方面取得实质性进展。就目前而言,训练如此庞大的模型的巨大而昂贵的成本通常是不可接受的。具体来说,训练GPT-3消耗大约355 GPU年,成本为460万美元。在如此庞大的参数和数据样本下,传统的从零开始训练显然无法承受巨大的费用,特别是在扩展到下游任务[30,138,187,188,211,243]时,这将引入额外的架构和过多的参数。因此,预训练-微调模式在深度学习领域日益受到关注。
预训练的主题是继承迁移学习的范式,在一个通用的数据集上训练一个通用的基础模型,以获得一个出色的特征提取器(从优化的角度来看也是一个良好的初始状态),帮助在另一个特定的任务上实现和稳定训练过程。许多研究领域都受益于预训练方法。通过应用恢复的随机掩码图像,有助于训练CV社区中的大型transformer模型。掩码自编码器(MAE)[83]开发了一种非对称编码器-解码器架构来耦合自监督重建和后端训练,为下游任务产生了有希望的迁移性能。同样,来自图像transformer (BEiT)的双向编码器表示[7]遵循BERT[48],通过从分块掩码图像生成的视觉标记来重建图像。在NLP社区,Radford等人[196]提出了生成式预训练(GPT),通过在无标签文本的不同语料库上采用生成式预训练来实现巨大的收益。为了进一步提高其效率,GPT-2[197]大大提高了模型作为具有广泛语义知识的词向量提取器的能力。GPT-3[18]通过双循环策略进行上下文学习,在预训练中可以显著增强对知识的理解,在实际场景中可以提高流动性和通用性。Hendrycks等[88]研究表明,使用预训练可以提高模型的鲁棒性和不确定性,对于在大型数据集上进行训练表现出极大的优势,泛化能力较好。最近的进展表明,从具有巨大容量的预训练模型中获得了实质性的收获,特别是在任务不可知和少样本的场景中。它还提出了一个有希望的未来发展方向,即在大规模数据集上预训练的具有大量参数的大规模模型能够超越其他监督训练的性能。这一令人振奋的进展有效地降低了深度学习对真实值的依赖,极大地启发了大数据的应用。同时,它对计算和训练效率也提出了更加严格的要求。昂贵的成本,包括时间和金钱,严重阻碍了它的发展。在此背景下,本文介绍和总结了在大规模模型上加速训练的通用和实用技术,这些技术促进了更快的训练,也可能有助于预训练中庞大的基础模型。
最近的许多工作回顾和总结了高效的训练技术,主要包括引入了高效的预训练模型,设计了新的加速组件,先进的优化方法,在NLP或CV社区上的高效训练,以及训练过程中的技巧袋。Qiu等人[194]对用于解决各种NLP任务的预训练模型进行了综述和系统分类列表。他们研究了语言模型的发展历史和预训练的当前进展。Han等人[80]总结了与通用预训练技术相关的研究工作,并对他们的未来研究提供了一些见解。Bommasani等人介绍了高效的基础模型,主要从它们的一般概念、强大的功能、基础训练技术和应用的角度介绍了高效的基础模型。他们还总结了预训练的演变和当前在实际场景中的挑战。Zhou等人[305]对预训练基础模型(PFM)进行了全面的回顾,讨论了它们在每个不同社区的成果的最新研究进展,这些成果可能会给本地研究带来新的思考。同时,系统总结了应用中存在的主要问题和未来的挑战。Lin等人[145]重点研究了新的Transformer模型,并回顾了Transformer模型的几种变体,这些变体被对齐以考虑高效的架构修改、预训练技术和训练加速。Weng[273]回顾了Transformer家族的发展,介绍了Transformer模型的详细演变,并系统地分析了每种架构的优缺点。Tay等人[246]总结了高效Transformer模型的一些变体。从实际训练的角度出发,提出了一些提高Transformer模型训练效率的策略,并对未来的研究提出了建议。Zhuang等人[308]研究了transformer的高效训练综述,包括计算效率、存储效率和硬件/算法协同设计。与它们不同,我们更关注基本的加速技术,不限于Transformer模型。Open Machine Learning Systems Community[179]为高效机器学习系统的设计和实现提供了全面的研究。他们更关注数据预处理、前向和后向计算、高效并行部署和通信的实践,以及优化方法的具体实现。He等人[85]研究了大规模深度学习在泛化保证和优化效率方面的最新进展,包括新的优化器和策略,以解决训练开销和减少计算设备中所需的内存。并对大批量训练的探索进行了阐述。He等人[84]总结了一套训练CNN模型的技巧。他们进行了系统的实验,总结了一些有效的数据增强技术和巧妙的学习率调度器的设计。Treviso等人[254]总结了NLP的有效方法,并讨论了它们的效率和缺点。
近年来,高效地训练大规模深度学习模型已成为机器学习领域的一个重要研究方向。虽然该领域已经取得了重大进展,但现有的研究大多集中在特定的模型架构或服务于特定的社区。相比之下,本研究对任何大规模深度学习模型的实用加速技术进行了全面的回顾,这些技术独立于任务或模型架构。从实践效率的角度来看,我们认为高效的训练主要围绕两个明确的目标:
为了达到相当的测试精度,高效的训练需要更少的训练时间。
在相似的训练成本下,高效的训练可以实现更高的性能。
该综述为深度学习模型的一般训练加速提供了有见地的指导。分析了训练加速技术在支撑许多现代深度学习模型的各种基本骨干架构上的功效。通过研究深度网络的不同架构,本文综述可以帮助实现任何类型的深度学习模型的高效训练。此外,由于我们的调研是无任务和无模型的,因此提供了训练加速技术的广泛泛化,可以应用于不同的领域和模型架构。我们的综述旨在为寻求加速大规模深度学习模型训练的研究人员和从业人员提供一个有用的资源。通过理解有效训练加速技术背后的一般原理,研究人员可以开发更快、更有效的模型,而不受特定架构或任务的限制。本研究对大规模深度学习模型的通用训练加速技术进行了全面的综述,为机器学习领域做出了重大贡献。 本文对解决一般的基本最小化问题很感兴趣,可以很容易地扩展到训练基础模型或预训练任务:
与之前的工作不同,本文解构了通用的基于梯度的下降公式作为本文的架构。考虑了公式(3)中的所有组件,这些组件可以覆盖深度学习中的整个训练过程。通过将它们吸收到f中,省略了额外的近端项。在不损失通用性的情况下,使用更新向量G而不是梯度来包含广泛的方法。我们认为基本更新公式如下:
在表1中,我们总结了这些符号及其对应的研究领域。基于式(3),通过提炼和拆分组件的不同角色,将前人工作按照其固有的启发式见解和理论场景划分为5大类。每一类对应分类后的分组下计算效率的优化目标。对上述组件进行细粒度分析,以对当前用于训练大规模模型的通用加速技术进行分类,并结合实际实现的可行性。具体来说,它们是:
以数据为中心的有效训练。在深度学习中,全局期望与训练样本分布之间经常存在差距。这可以导致在训练的中期和后期阶段的测试准确性的提高,尽管在早期阶段表现有效。为了解决这个问题并提高泛化性能,以数据为中心的方法通过有效的数据增强和正则化策略来扩展训练集的样本容量。它需要额外的预处理计算来增强多样性并保持更高的稳定性,从而在实际应用中具有更好的泛化性能。同时,为了实现有效加速并进一步提高模型的通用性,以数据为中心的方法研究了随机优化过程中有效的采样技术以选择关键子集。它有效地减少了计算梯度所需的样本数量。此外,它还可以防止模型在训练那些不重要的样本或学习足够好的数据时过度拟合。最近的研究表明,课程学习是一个循序渐进的过程,可以产生有效的训练。在训练初期使用正则化程度较低的低分辨率样本,逐步恢复到高质量的样本。总之,以数据为中心的方法的核心考虑是如何在不影响性能的情况下减少数据处理需求。
以模型为中心的高效训练。深度模型是一个从数据域到真实值的精细映射函数。过去的工作探索了许多成熟的架构来构建一个高效训练的网络,例如基于卷积的神经网络(CNN),多层感知器(MLP)和transformer模型。以模型为中心的方法通过高效的架构近似、压缩和高效的初始化,更多地关注DNNs的计算复杂性,以获得更好的通用性。这些方法侧重于在保持良好性能的同时减小DNN的参数规模。具体来说,架构近似侧重于采用简化的算子组合,以减少训练中的计算成本。它期待着探索用于一般加速的基本模块的表达性替代方案。压缩关系到低精度计算和稀疏训练的效率,也需要在硬件实现上得到充分支持。模型初始化注重寻找稳定性和通用性较好的初始状态,可以有效地加快收敛速度,防止训练过程在早期崩溃。总之,以模型为中心的方法为降低深度模型的计算复杂度以进行高效训练提供了一种有希望的方法,它具有很强的实用性,可以很容易地在任何深度学习框架中实现。
以优化为中心的高效训练。为提高优化效率,总结了三个主要因素,即学习率、批量大小和优化目标。不同阶段学习率和衰减策略的合理选择是深度网络训练的关键问题。然而,要找到一种适用于不同模型和优化器的通用方法是具有挑战性的。因此,以学习率为中心的方法旨在开发高效和灵活的策略,以高效和稳定地训练模型。第二个因素,批量大小,在优化中也起着关键作用。借助GPU设备的并行计算能力,特别是在计算资源充足的情况下,通过增加单个minibatch中的样本数量可以提高训练效率。因此,以批大小为中心的方法通常专注于采用大的小批量训练以提高优化速度。从优化的角度来看,我们总是努力实现一个具有高稳定性的目标,这是以目标为中心的方法的主要关注点。这些方法专注于优化目标,提供关于数据分布和模型架构具有鲁棒性的泛化。综上所述,以优化为中心的方法研究了训练过程中的高效迭代计算,为高效训练提供了坚实的保证。
有预算的高效训练。预算训练是在实际训练期间考虑到可用资源的一种方法。它主要关注资源受限场景下的训练效率,在这些场景中,计算资源(如训练时间或计算量)是有限的。预算训练的主要目标是确保高效和稳定的训练,同时在给定的约束条件下最大化模型的潜力。这种方法可以在训练的早期阶段带来显著的收获。通过采用预算训练,研究人员和从业人员可以充分利用可用资源,避免将其浪费在低效的模型或训练程序上。这种方法还可以促进模型的开发,这些模型更实用,更适合于资源通常有限的现实世界应用程序。
以系统为中心的高效训练。以系统为中心的方法侧重于在硬件支持下的实际实现,能够将算法设计转化为真正的可执行项目。大规模模型训练通常采用多节点多设备环境实现并行计算。它主要关注设计底层逻辑,以解决跨设备通信中的瓶颈,并有效地协调整个训练过程。已经开发了几个开源框架来显著加速深度网络的训练。为了有效利用分布式训练,训练过程被分布为更小的计算任务,在不同的节点或设备上并行执行。这些节点相互通信以交换梯度更新并同步整个训练过程。这种分布式系统能够训练无法在单台机器上执行的大型数据集和复杂模型。已经开发了几个开源的分布式训练框架,如TensorFlow, PyTorch和Horovod。这些框架实现了在多节点多设备集群上进行高效的分布式训练,并显著减少了大规模深度学习模型的训练时间。
总而言之,本文综述了有效训练的一般训练加速。在“以数据为中心”、“以模型为中心”、“以优化为中心”和“预算训练”部分,我们主要从算法设计和方法论的角度进行综合研究;在“以系统为中心”部分,我们主要从范式创新和硬件支持的角度进行实际实施。本调查的主要贡献如下:
从“数据”、“模型”、“优化”、“预算训练”和“系统”的角度回顾了训练大规模模型的一般加速技术,总结了它们的技术路线和每个组件的实现,有助于为无任务和无模型的高效训练提供坚实的指导。
比较了训练加速中每个组件的优缺点,展示了它们的见解和互动,可以启发我们重新思考训练大规模深度学习模型的高效范式的设计。
对每条技术路线及其在实际场景中的主要挑战进行了全面的分析,这可以为它们未来的发展提供指导。
本调查的主要结构组织如下。在第2节中,介绍了一些初步工作,包括不同骨干中的基本模块,以及对大规模深度学习模型、数据集的预训练,以及本综述中采用的详细符号。在第3 ~ 6节中,基于迭代公式(3),从"数据为中心"、"模型为中心"、"优化为中心"、"预算训练"和"系统为中心"的角度详细介绍了它们不同的训练加速技术路线。还分析和评估了每种实现的优缺点。这种新的分类方法可以为现有的有效训练方法提供一个清晰和全面的指导。在第8节中,我们讨论和总结了本综述中的技术,并提出了一些有前途的研究方向。