大规模深度学习模型高效训练研究综述
近年来,深度学习领域在计算机视觉 (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 的参数规模。
- 模型初始化:注重寻找稳定性和通用性较好的初始状态,可以有效地加快收敛速度,防止训练过程在早期崩溃。
- :以模型为中心的方法为降低深度模型的计算复杂度以进行高效训练提供了一种有希望的方法,它具有很强的实用性,可以很容易地在任何深度学习框架中实现。


