shanwenkang 2019-04-14
当下,神经网络的发展一路高歌,突飞猛进。过去的十年中,神经网络已经在各种预测任务中取得了先进的成果,如图像分类 、机器翻译 和语音识别 。这些成功中有一部分是由神经网络训练的硬件和软件改进所驱动的。训练速度的加快直接导致模型质量的显著提高,使模型能处理更多的训练数据,也使研究人员能更快地尝试新的想法和配置。
今天,像 Cloud TPU Pods 这样的硬件开发正在迅速增加可用于神经网络训练的计算量,这提高了利用额外计算的可能性,使神经网络训练更快,并促进了模型质量的进一步提高。但是我们究竟应该如何利用这种前所未有的计算量,是否应该寄希望于利用更多的计算来促进更快的训练?
一种最常用的利用大量计算能力的方法是在不同处理器之间分配计算并同时执行这些计算。在训练神经网络时,实现这一目标的主要方法是模型并行性 ,即涉及在不同处理器之间分布神经网络; 数据并行性 ,即涉及跨处理器分发训练样例且并行地计算神经网络的更新。
虽然模型并行性使得训练能够支持多处理器的神经网络成为可能,但通常需要将模型架构定制为可用硬件。相比之下,数据并行性是模型不可知的,并且适用于任何神经网络体系结构,它是用于并行化神经网络训练最简单和最广泛使用的技术。对于最常见的神经网络训练算法(同步随机梯度下降 及其变体),数据并行度的大小对应于批量大小,用于计算神经网络每次更新的训练样本的数量。但是这种并行化的限制是什么,什么时候能够看到大幅提速?
通过一篇论文,我们用三种不同的优化算法(“优化器”),在七个不同数据集上运行六种不同类型的神经网络的实验,来研究批量大小和训练时间之间的关系。 总的来说,我们在约450个工作负载上训练了超过100K的单个模型,并观察到测试的所有工作负载中批量大小和训练时间之间看似普遍的关系。我们还研究了这种关系如何随数据集、神经网络架构和优化器而变化,并发现工作负载之间的差异非常大。
论文地址:
https://arxiv.org/pdf/1811.03600.pdf
原始数据 :
https://github.com/google-research/google-research/tree/master/batch_science
原始数据包括超过71M的模型评估,以构成训练的所有100K +个体模型的训练曲线,并可用于重现论文 中的24个图。
在理想化的数据并行系统中,处理器之间的同步时间可以忽略不计,训练时间可以通过训练步骤的数量来测量(神经网络参数的更新)。在此假设下,我们在批量大小和训练时间之间的关系中观察到三种不同的缩放方法: 一是“完美缩放”,即将批量大小加倍,并使目标样本 误差 所需的训练步骤数减半,其次通过“收益递减”方法,最后是“最大数据并行”方法,即使假定理想化的硬件,进一步增加批量大小也不会减少训练时间。
对于测试的所有工作负载,我们观察到批量大小和训练速度之间的一般关系,具有三种不同的方案:完美缩放(沿着虚线)、收益递减(从虚线偏离)和最大数据并行性(趋势平稳)。在不同的工作负载之间,这些机制之间的转换点有很大的差异。
虽然批量大小和训练时间之间的基本关系似乎是普遍的,但我们发现不同缩放方式之间的转换点在神经网络架构和数据集之间变化很大。这意味着虽然简单的数据并行可以在现有硬件(例如 Cloud TPU Pods )的限制下为某些工作负载提供较大的速度提升,甚至可能超越。但是一些工作负载需要超越简单的数据并行,以便从如今存在的最大规模硬件中受益,更不用说尚未建立的硬件。例如,在上图中,CIFAR-10 上的ResNet-8 无法从大于1,024的批量大小中受益,而ImageNet 上的 ResNet-50 因为批量大小增加至至少65,536而继续受益。
如果可以预测哪些工作负载从数据并行训练中受益最多,那么可以定制其工作负载以最大限度地利用可用硬件。但是,结果表明这通常不是直截了当的,因为最大有用批量大小至少在某种程度上取决于工作负载的每个方面:神经网络架构、数据集和优化器。例如,某些神经网络架构可以从比其他架构更大的批量大小中受益,即使在使用相同优化器对相同数据集进行训练时也是如此。虽然这种影响有时取决于网络的宽度和深度,但它在不同类型的网络之间是不一致的,并且一些网络甚至没有明显的“宽度”和“深度”概念。
我们发现,虽然某些数据集可以从比其他数据集更大的批量大小中受益,但这些差异并不总是由数据集的大小来解释——有时较小的数据集从较大的批量大小中获益比较大的数据集更多。
左图:与LM1B数据集中的LSTM神经网络相比,变换器神经网络可扩展到更大的批处理大小。
右图:与LM1B数据集相比,更大的批处理大小并不能使普通抓取数据集受益,即使前者的大小是后者的1,000倍。
目前最有前景的发现是,即使是优化算法的微小变化,也可以随着批量大小的增加显著提高训练的规模。例如允许随机梯度下降的动量 。这提高了设计新优化器或测试我们未考虑的优化器的缩放属性的可能性,以找到可以最大限度地利用增加的数据并行性的优化器。
通过增加批量大小来利用额外的数据并行性是在一系列工作负载中产生有价值的加速简单方法。但是,对于我们尝试的所有工作负载,优势在最先进的硬件限制内减少。然而,结果表明,一些优化算法也许能够在许多模型和数据集中一致地扩展完美的缩放方法。未来的工作可以与其他优化器一起执行相同的测量。除了尝试过的几个密切相关的优化器,来查看现有的优化器是否在许多问题上实现了完美扩展。