大规模深度学习模型高效训练研究综述
近年来,深度学习领域在计算机视觉 (CV)、自然语言处理 (NLP) 和语音识别等方面取得了重大进展。大规模模型在实际应用、提高工业生产力和促进社会发展方面具有巨大前景。然而,其训练过程极不稳定,对计算资源的要求非常严格。随着计算能力适应性需求的不断提高,大量研究探索了高效训练领域,但对通用的大规模深度学习模型训练加速技术的总结和指导仍有待深入研究。
背景与挑战
随着人工智能技术的快速发展,深度模型的参数以百万级甚至数十亿级的速度迅猛增长。Kaplan 等人将模型大小、数据集大小和用于训练的计算量之间的关系研究为幂律,表明更大的模型本质上需要大量的数据,在学习上的样本效率明显更高。大型模型的部署已成为最重要的研究领域之一。例如,ViT-22B 展示了计算机视觉社区中'类 LLM(大型语言模型)'扩展的潜力。GPT-3 在 45TB 数据样本上训练了 175B 参数,并在各种自然语言处理任务上成功取得了最先进的结果。MT-NLG 则快速迭代到具有 530B 参数的规模较大的模型,这在几个任务中远远领先于 GPT-3。
尽管从这种快速增长中获得的收益令人震惊,但为了保持实际效率,人们迫切期待在探索新技术和训练方面取得实质性进展。就目前而言,训练如此庞大的模型的巨大而昂贵的成本通常是不可接受的。具体来说,训练 GPT-3 消耗大约 355 GPU 年,成本为 460 万美元。在如此庞大的参数和数据样本下,传统的从零开始训练显然无法承受巨大的费用,特别是在扩展到下游任务时,这将引入额外的架构和过多的参数。因此,预训练 - 微调模式在深度学习领域日益受到关注。
预训练的主题是继承迁移学习的范式,在一个通用的数据集上训练一个通用的基础模型,以获得一个出色的特征提取器(从优化的角度来看也是一个良好的初始状态),帮助在另一个特定的任务上实现和稳定训练过程。许多研究领域都受益于预训练方法。通过应用恢复的随机掩码图像,有助于训练 CV 社区中的大型 transformer 模型。掩码自编码器 (MAE) 开发了一种非对称编码器 - 解码器架构来耦合自监督重建和后端训练。在 NLP 社区,Radford 等人提出了生成式预训练 (GPT),通过在无标签文本的不同语料库上采用生成式预训练来实现巨大的收益。最近的进展表明,从具有巨大容量的预训练模型中获得了实质性的收获,特别是在任务不可知和少样本的场景中。这一令人振奋的进展有效地降低了深度学习对真实值的依赖,极大地启发了大数据的应用。同时,它对计算和训练效率也提出了更加严格的要求。昂贵的成本,包括时间和金钱,严重阻碍了它的发展。
高效训练分类体系
本文对解决一般的基本最小化问题很感兴趣,可以很容易地扩展到训练基础模型或预训练任务。与之前的工作不同,本文解构了通用的基于梯度的下降公式作为本文的架构。考虑了公式中的所有组件,这些组件可以覆盖深度学习中的整个训练过程。通过将它们吸收到 f 中,省略了额外的近端项。在不损失通用性的情况下,使用更新向量 G 而不是梯度来包含广泛的方法。我们认为基本更新公式如下:
$$ \theta_{t+1} = \theta_t - G(f, \theta_t, \mathcal{D}) $$
基于上述公式,通过提炼和拆分组件的不同角色,将前人工作按照其固有的启发式见解和理论场景划分为 5 大类。每一类对应分类后的分组下计算效率的优化目标。对上述组件进行细粒度分析,以对当前用于训练大规模模型的通用加速技术进行分类,并结合实际实现的可行性。
1. 以数据为中心的有效训练
在深度学习中,全局期望与训练样本分布之间经常存在差距。这可以导致在训练的中期和后期阶段的测试准确性的提高,尽管在早期阶段表现有效。为了解决这个问题并提高泛化性能,以数据为中心的方法通过有效的数据增强和正则化策略来扩展训练集的样本容量。它需要额外的预处理计算来增强多样性并保持更高的稳定性,从而在实际应用中具有更好的泛化性能。
- 数据采样:为了实现有效加速并进一步提高模型的通用性,以数据为中心的方法研究了随机优化过程中有效的采样技术以选择关键子集。它有效地减少了计算梯度所需的样本数量。
- 课程学习:最近的研究表明,课程学习是一个循序渐进的过程,可以产生有效的训练。在训练初期使用正则化程度较低的低分辨率样本,逐步恢复到高质量的样本。
- 核心目标:以数据为中心的方法的核心考虑是如何在不影响性能的情况下减少数据处理需求。
2. 以模型为中心的高效训练
深度模型是一个从数据域到真实值的精细映射函数。过去的工作探索了许多成熟的架构来构建一个高效训练的网络,例如基于卷积的神经网络 (CNN),多层感知器 (MLP) 和 transformer 模型。以模型为中心的方法通过高效的架构近似、压缩和高效的初始化,更多地关注 DNNs 的计算复杂性,以获得更好的通用性。
- 架构近似:侧重于采用简化的算子组合,以减少训练中的计算成本。它期待着探索用于一般加速的基本模块的表达性替代方案。
- 模型压缩:关系到低精度计算和稀疏训练的效率,也需要在硬件实现上得到充分支持。这些方法侧重于在保持良好性能的同时减小 DNN 的参数规模。
- 模型初始化:注重寻找稳定性和通用性较好的初始状态,可以有效地加快收敛速度,防止训练过程在早期崩溃。
- 核心价值:以模型为中心的方法为降低深度模型的计算复杂度以进行高效训练提供了一种有希望的方法,它具有很强的实用性,可以很容易地在任何深度学习框架中实现。
3. 以优化为中心的高效训练
为提高优化效率,总结了三个主要因素,即学习率、批量大小和优化目标。不同阶段学习率和衰减策略的合理选择是深度网络训练的关键问题。然而,要找到一种适用于不同模型和优化器的通用方法是具有挑战性的。
- 学习率策略:以学习率为中心的方法旨在开发高效和灵活的策略,以高效和稳定地训练模型。
- 批量大小:第二个因素,批量大小,在优化中也起着关键作用。借助 GPU 设备的并行计算能力,特别是在计算资源充足的情况下,通过增加单个 minibatch 中的样本数量可以提高训练效率。因此,以批大小为中心的方法通常专注于采用大的小批量训练以提高优化速度。
- 优化目标:从优化的角度来看,我们总是努力实现一个具有高稳定性的目标,这是以目标为中心的方法的主要关注点。这些方法专注于优化目标,提供关于数据分布和模型架构具有鲁棒性的泛化。
- 实施保证:综上所述,以优化为中心的方法研究了训练过程中的高效迭代计算,为高效训练提供了坚实的保证。
4. 预算训练
预算训练是在实际训练期间考虑到可用资源的一种方法。它主要关注资源受限场景下的训练效率,在这些场景中,计算资源(如训练时间或计算量)是有限的。预算训练的主要目标是确保高效和稳定的训练,同时在给定的约束条件下最大化模型的潜力。
- 资源利用:这种方法可以在训练的早期阶段带来显著的收获。通过采用预算训练,研究人员和从业人员可以充分利用可用资源,避免将其浪费在低效的模型或训练程序上。
- 实际应用:这种方法还可以促进模型的开发,这些模型更实用,更适合于资源通常有限的现实世界应用程序。
5. 以系统为中心的高效训练
以系统为中心的方法侧重于在硬件支持下的实际实现,能够将算法设计转化为真正的可执行项目。大规模模型训练通常采用多节点多设备环境实现并行计算。它主要关注设计底层逻辑,以解决跨设备通信中的瓶颈,并有效地协调整个训练过程。
- 分布式框架:已经开发了几个开源框架来显著加速深度网络的训练。为了有效利用分布式训练,训练过程被分布为更小的计算任务,在不同的节点或设备上并行执行。这些节点相互通信以交换梯度更新并同步整个训练过程。
- 主流工具:这种分布式系统能够训练无法在单台机器上执行的大型数据集和复杂模型。已经开发了几个开源的分布式训练框架,如 TensorFlow, PyTorch 和 Horovod。这些框架实现了在多节点多设备集群上进行高效的分布式训练,并显著减少了大规模深度学习模型的训练时间。
- 通信优化:以系统为中心的方法还涉及通信优化技术,如梯度压缩和异步更新,以进一步减少网络开销。
总结与展望
总而言之,本文综述了有效训练的一般训练加速。在'以数据为中心'、'以模型为中心'、'以优化为中心'和'预算训练'部分,我们主要从算法设计和方法论的角度进行综合研究;在'以系统为中心'部分,我们主要从范式创新和硬件支持的角度进行实际实施。本调查的主要贡献如下:
- 从'数据'、'模型'、'优化'、'预算训练'和'系统'的角度回顾了训练大规模模型的一般加速技术,总结了它们的技术路线和每个组件的实现,有助于为无任务和无模型的高效训练提供坚实的指导。
- 比较了训练加速中每个组件的优缺点,展示了它们的见解和互动,可以启发我们重新思考训练大规模深度学习模型的高效范式的设计。
- 对每条技术路线及其在实际场景中的主要挑战进行了全面的分析,这可以为它们未来的发展提供指导。
未来的研究方向可能集中在如何更好地协同这五个维度,例如在系统层面实现更智能的资源调度以配合优化策略,或者在数据层面利用合成数据来缓解标注成本。通过理解有效训练加速技术背后的一般原理,研究人员可以开发更快、更有效的模型,而不受特定架构或任务的限制。本研究对大规模深度学习模型的通用训练加速技术进行了全面的综述,为机器学习领域做出了重大贡献。