深度学习领域已经取得了阶段性重大进展,特别是在计算机视觉、自然语言处理和语音等方面,使用大数据训练得到的大规模模型对于实际应用、提高工业生产力和促进社会发展具有巨大的前景。
不过大模型也需要大算力才能训得动,随着人们对计算能力要求的不断提高,尽管已有许多研究探索高效的训练方法,但仍然没有对深度学习模型加速技术的全面综述。
最近,来自悉尼大学、中国科学技术大学等机构的研究人员发布了一篇综述,全面总结了大规模深度学习模型的高效训练技术,展现了训练过程中的各个组件内的通用机制。
论文链接:https://arxiv.org/pdf/2304.03589.pdf
研究人员考虑了最基本的权重更新公式,并将其基本组成部分划分为五个主要方面:
1、以数据为中心(data-centric),包括数据集正则化、数据采样和以数据为中心的课程学习技术,可以显著降低数据样本的计算复杂性;
2、以模型为中心(model-centric),包括基本模块的加速、压缩训练、模型初始化和以模型为中心的课程学习技术,侧重于通过减少参数计算来加速训练;
3、以优化为中心(optimization-centric),包括学习率的选择、使用大batch size、高效目标函数的设计、模型加权平均技术等;侧重于训练策略以提高大规模模型的通用性;
4、预算训练(budgeted training),包括一些在硬件受限的情况下使用的加速技术;
5、以系统为中心(system-centric),包括一些高效的分布式框架和开源库,为加速算法的实现提供足够的硬件支持。
最近,大规模模型的进展大放异彩,而其对数据集的要求却急剧增加。巨大的数据样本被用来驱动训练过程并取得出色的性能。因此,以数据为中心的研究对实际加速至关重要。
数据处理(data processing)的基本作用是在不额外增加标注成本的情况下,高效地增加数据样本的多样性;由于数据标注的成本往往过于昂贵,部分开发机构无法负担,也凸显了以数据为中心领域的研究的重要性;同时,数据处理还注重提高数据样本的并行加载效率。
研究人员将所有这些对数据的高效处理称为「以数据为中心」(data-centric)的方法,可以显著提高训练大规模模型的性能。
文中从以下几个方面回顾和研究技术:
数据正则化 Data Regularization
数据正则化是一种预处理技术,通过一系列的数据变换来增强原始数据样本的多样性,可以提高训练样本在特征空间中的等效表示,不需要额外的标签信息的要求。
高效的数据正则化方法在训练过程中被广泛使用,能够显著提高大规模模型的泛化性能。
数据采样 Data sampling
数据采样也是一种有效的方法,从大批量的样本中选择一个子集来对梯度进行更新,它的好处是以小批量的训练的方式,可以减少当前批次中那些不重要的或不好样本的影响。
通常情况下,采样出来的数据是更重要的,性能与使用全批次训练得到的模型相当;每次迭代的概率需要随着训练过程逐渐调整,以确保采样没有偏差。
以数据为中心的课程学习 Data-centric Curriculum Learning
课程学习在训练过程的不同阶段研究渐进的训练设置,以减少整体的计算成本。
在开始的时候,使用低质量的数据集训练足以学习低层次的特征;然后使用高质量的数据集(更多的增强和复杂的预处理方法)逐渐帮助学习复杂的特征,并达到与使用整个训练集相同的精度。
设计高效的模型架构始终是深度学习领域最重要的研究之一,一个优秀的模型应当是一个高效的特征提取器,可以投射到容易分离的高级特征中。
与其他特别关注高效、新颖的模型架构的工作不同,这篇论文在「以模型为中心」的研究中更加关注通用模块的等价替代方案,在具有可比性的情况下实现更高的训练效率。
几乎所有的大型模型都是由小模块或层组成的,所以对模型的调研可以为高效训练大规模模型提供指导作用,研究人员主要从以下几个方面研究:
架构效率 Architecture Efficiency
随着深度模型中参数量的急剧增加,也带来了巨大的计算消耗,所以需要实现一个高效的替代方案来近似原始版本的模型架构的性能,这个方向也逐渐受到学术界的重视;这种替换不仅仅是数值计算的近似,还包括深度模型中的结构简化和融合。
研究人员根据不同的架构来区分现有的加速技术,并展示了一些观察和结论。
压缩训练效率 Compression Training Efficiency
压缩一直是计算加速的研究方向之一,在数字信号处理(多媒体计算/图像处理)中起着关键作用。
传统的压缩包括两个主要分支:量化和稀疏,文中详细说明了二者现有的成就和对深度训练的贡献。
初始化效率 Initialization Efficiency
模型参数的初始化在现有的理论分析和实际场景中都是一个非常重要的因素。
一个不好的初始化状态甚至会导致整个训练在早期的训练阶段崩溃和停滞,而一个好的初始化状态则有助于在一个平滑的损失范围内加快整个收敛的速度,文中主要从模型初始化的角度研究评估和算法设计。
以模型为中心的课程学习 Model-centric Curriculum Learning
从以模型为中心的角度来看,课程学习通常从大规模模型中的一个小模型或部分参数开始训练,然后逐渐恢复到整个架构;在加速训练过程中显示了较大优势,并且没有明显的负面效应,文中回顾了该方法在训练过程中的实现和效率。
优化方法的加速方案一直是机器学习领域的一个重要研究方向,在实现最优条件的同时降低复杂性一直是学术界追求的目标。
近年来,高效、强大的优化方法在训练深度神经网络方面取得了重要突破,作为机器学习中广泛使用的基本优化器,SGD类的优化器成功地帮助深度模型实现各种实际应用,不过随着问题的日益复杂,SGD更容易陷入局部最小值,无法稳定地泛化。
为了解决这些困难,Adam及其变种被提出来,在更新上引入自适应性,这种做法在大规模的网络训练中取得了良好的效果,例如在BERT、Transformer和ViT模型中都有应用。
除了所设计的优化器的自身性能外,对加速训练技术的组合也很重要。
研究人员基于优化的角度,将目前对加速训练的思考总结为以下几个方面:
学习率 Learning rate
学习率是非凸优化的一个重要的超参数,在当前的深度网络训练中也是至关重要的,像Adam及其变种这样的自适应方法,已经成功地在深度模型上取得了卓越的进展。
一些基于高阶梯度的调整学习率的策略也有效地实现了加速训练,学习率衰减的实现也会影响到训练过程中的性能。
大批尺寸 Large batchsize
采用更大的批处理量将有效地提高训练效率,能够直接减少完成一个epoch训练所需的迭代次数;在样本总量固定的情况下,处理一个更大的批尺寸比处理多个小批尺寸的样本来说消耗更低,因为可以提高内存利用率和降低通信瓶颈。
高效的目标 Efficient objective
最基础的ERM在最小化问题上起到关键作用,使得许多任务得以实际运用。
随着对大型网络研究的深入,一些作品更加关注优化和泛化之间的差距,并提出有效的目标以减少测试误差;从不同的角度解释泛化的重要性,并在训练中对其进行联合优化,可以大大加快测试的准确性。
加权平均 Averaged weights
加权平均是一种实用的技术,可以增强模型的通用性,因为考虑的是历史状态的加权平均,有一组冻结的或可学习的系数,可以大大加快训练进程。
最近有几项工作专注于用较少的资源训练深度学习模型,并且尽可能地实现更高的精度。
这类问题被定义为预算训练(budgeted training),即在给定的预算(对可测量成本的限制)下进行训练,以实现最高的模型性能。
为了系统地考虑硬件支持以接近真实情况,研究人员将预算训练定义为在给定的设备和有限的时间内进行训练,例如,在单个低端深度学习服务器上训练一天,以获得具有最佳性能的模型。
对预算内训练的研究可以阐明如何制作预算内训练的训练配方,包括决定模型大小、模型结构、学习率安排和其他几个影响性能的可调整因素的配置,以及结合适合可用预算的高效训练技术,文中主要回顾了预算训练的几项先进技术。
以系统为中心的研究就是为所设计的算法提供具体的实现方法,研究的是能够真正实现高效训练的硬件的有效和实际执行。
研究人员重点关注通用计算设备的实现,例如多节点集群中的CPU和GPU设备,从硬件的角度解决设计算法中的潜在冲突是关注的核心。
文中主要回顾了现有框架和第三方库中的硬件实现技术,这些技术有效地支持了数据、模型和优化的处理,并介绍一些现有的开源平台,为模型的建立、有效利用数据进行训练、混合精度训练和分布式训练提供了坚实的框架。
以系统为中心的数据效率 System-centric Data Efficiency
高效的数据处理和数据并行是系统实现中的两个重要关注点。
随着数据量的快速增加,低效的数据处理逐渐成为训练效率的瓶颈,尤其是在多节点上的大规模训练,设计更多对硬件友好的计算方法和并行化可以有效避免训练中的时间浪费。
以系统为中心的模型效率 System-centric Model Efficiency
随着模型参数数量的急剧扩大,从模型角度看,系统效率已经成为重要的瓶颈之一,大规模模型的存储和计算效率给硬件实现带来巨大挑战。
文中主要回顾如何实现部署的高效I/O和模型并行的精简实现,以加快实际训练的速度。
以系统为中心的优化效率 System-centric Optimization Efficiency
优化过程代表了每个迭代中的反向传播和更新,也是训练中最耗时的计算,因此以系统为中心的优化的实现直接决定了训练的效率。
为了清楚地解读系统优化的特点,文中重点关注不同计算阶段的效率,并回顾每个过程的改进。
开源框架 Open Source Frameworks
高效的开源框架可以促进训练,作为嫁接(grafting)算法设计和硬件支持的桥梁,研究人员调查了一系列开源框架,并分析了每个设计的优势和劣势。
研究人员回顾了有效训练大规模深度学习模型的通用训练加速技术,考虑了梯度更新公式中的所有组件,涵盖了深度学习领域的整个训练过程。
文中还提出了一个新颖的分类法,将这些技术总结归类为五个主要方向:以数据为中心、以模型为中心、以优化为中心、预算训练和以系统为中心。
前四部分主要从算法设计和方法论的角度进行综合研究,而在「以系统为中心的高效训练」部分,从范式创新和硬件支持的角度总结了实际实现情况。
文中回顾并总结了与每个部分相对应的常用或最新开发的技术,每项技术的优势和权衡,并讨论局限性和有前景的未来研究方向;在提供全面的技术回顾和指导的同时,这篇综述还提出了当前高效训练的突破口和瓶颈。
研究人员希望能帮助研究人员高效地实现通用的训练加速,并为高效训练的未来发展提供一些有意义和有前景的影响;除了在每一节末尾提到的一些潜在的进展之外,更广泛的、有前景的观点如下:
1、 高效的Profile搜索
高效训练可以从数据增强组合、模型结构、优化器设计等角度出发,为模型设计预建的和可定制的profile搜索策略,相关研究已经取得了一些进展。
新的模型架构和压缩模式、新的预训练任务、对「模型边缘」(model-edge)知识的利用同样值得探索。
2、自适应调度器 Adaptive Scheduler
使用一个面向优化的调度器,如课程学习、学习速率和批次大小以及模型的复杂性,有可能实现更好的性能;Budget-aware调度器可以动态适应剩余预算,降低人工设计的成本;自适应调度器可以用来探索并行性和通信方法,同时考虑到更通用且实际的情况,例如在跨越多地区和数据中心的异构网络中进行大规模去中心化训练。
以上是训大模型讲究「化劲」!陶大程带队:一文打尽「高效训练」方案,别再说硬件是唯一瓶颈的详细内容。更多信息请关注PHP中文网其他相关文章!