通过在线蒸馏进行大规模分布式神经网络训练外文翻译资料

 2021-12-22 10:12

英语原文共 12 页

通过在线蒸馏进行大规模分布式神经网络训练

摘要

集成和精馏等技术在与几乎任何基本模型相结合时都有望提高模型质量。然而,由于测试时间成本的增加(对于整体而言)和训练管道的复杂性的增加(对于蒸馏而言),然而,由于测试时间成本的增加(对于整体而言)和训练管道的复杂性的增加(对于蒸馏而言),这些技术在工业环境中具有挑战性。在本文中,我们探讨了一种相对简单易行的蒸馏方法,它不需要复杂的多阶段设置或许多新的超参数。我们的第一个主张是,在线蒸馏使我们能够使用额外的并行性,以大约两倍的速度适应非常大的数据集。至关重要的是,即使我们已经达到了额外的并行性对同步或异步随机梯度下降没有任何好处的程度,我们仍然可以加速训练。两个训练在数据不相交子集上的神经网络可以通过鼓励每个模型同意另一个模型的预测来共享知识。这些预测可以来自另一个模型的旧版本,因此可以使用很少传输的权重安全地计算它们。我们的第二个主张是,在线蒸馏是一种成本效益高的方法,可以使模型的准确预测具有显著的可重复性。我们支持我们的主张使用Criteo显示广告的挑战实验数据集,ImageNet,和最大的实验数据集用于神经语言建模、包含6times;1011令牌和基于web的共同爬虫仓库数据。

1、引言

对于大规模的、具有商业价值的神经网络训练问题,如果能够显著加快训练时间或提高最终模型的质量,从业者将愿意投入更多的机器进行训练。目前,分布式随机梯度下降(SGD)的同步和异步两种形式(Chen et al., 2016)是跨多台互联机器进行大规模神经网络训练的主流算法。不幸的是,随着机器数量的增加,培训高质量模型所需的时间的改进越来越少,以至于增加工人不能进一步改善培训时间。基础设施限制和优化障碍的组合限制了分布式小批SGD的可伸缩性。通信权重更新的开销以及机器的长尾和网络延迟分布降低了执行速度,并产生了棘手的工程挑战。对于同步算法,增加有效批大小的收益迅速递减(LeCun et al., 2012;Keskar et al., 2017)。对于异步算法来说,权重不一致的梯度干扰会导致对thrash的更新,在某些情况下,甚至会导致最终精度下降或学习进度完全停滞。分布式SGD的精确可伸缩性限制将取决于算法的实现细节、基础设施的细节和硬件的功能,但是根据我们的经验,在实际设置中,要有效地扩展超过100个GPU工作人员是非常困难的。没有一种训练神经网络的算法可以无限扩展,但是即使扩展到稍微超过分布式SGD的限制,也将是非常有价值的。一旦我们达到了在分布式SGD中添加工人的极限,我们就可以使用额外的机器来培训模型的另一个副本,并创建一个集成来提高准确性(或者通过用更少的步骤来培训集成的成员,从而用这种准确性换取培训时间)。作为一个额外的好处,集成将提供更稳定和可重复的预测,这在实际应用中是有用的。但是,集成会增加测试时的成本,可能会违反延迟或其他成本约束。或者,为了在不增加测试时间成本的情况下获得几乎相同的集成好处,我们可以提取(Hinton et al., 2015;Bucila et al., 2006)使用两阶段过程将n路模型集合成一个单一的仍然可服务的模型:首先我们使用nM机器训练一个带有分布式SGD的n路集合,然后使用M机器训练可服务学生网络来模拟n路集合。通过向培训过程中添加另一个阶段并使用更多的机器,蒸馏通常会增加培训时间和复杂性,以换取接近于大型教师集成模型的质量改进。

我们认为,额外的培训成本,包括时间和管道复杂性,阻碍了从业者使用集成蒸馏,尽管它几乎总是能够提高结果。在这项工作中,我们描述了蒸馏的一个更简单的在线变种,我们称之为编纂蒸馏。编码静校正通过在第i个模型的损失函数中加入一项来匹配其他模型的平均预测,并行训练一个模型的n个副本。

通过大规模的实验,我们发现,与分布式SGD相比,编码静止可以提高准确性,并通过允许高效使用更多的计算资源来加速培训,甚至超过了添加更多的工作人员不会为SGD提供额外加速的情况。具体来说,编码蒸馏提供了在不增加培训时间的情况下提取模型集合的好处。与多相蒸馏训练程序相比,编纂蒸馏在实践中使用起来也相当简单。多阶段蒸馏倾向于鼓励人们在培训阶段之间进行干预,以决定何时停止培训,并开始将其提炼成一个单一的模型。我们还表明,编码死法并不会失去神经网络集合的可再现性优势,从而减少对同一模型的不同重复训练的预测。在现有服务中以一种非破坏性的方式测试和启动模型的新版本时,减少预测波动是非常重要的,尽管学术机器学习社区并没有对其进行充分的研究。

由于与蒸馏有明显的关系,许多研究人员已经独立地描述了与编纂蒸馏非常相似的算法。例如,Zhang et al.(2017)描述了另一种同步精馏算法,但没有研究分布式训练案例的好处,只是将其作为一种相对于常规精馏的潜在质量改进。我们将规模化编纂蒸馏的实验验证视为我们工作的主要贡献。这项工作的另一个贡献是,我们探索了编纂死法的不同设计选择和实现考虑因素,我们认为这些考虑因素产生了具有重大实际用途的建议。

总的来说,我们认为在实践中,编码静止比经过良好调整的离线蒸馏获得的质量收益要小得多,更有趣的研究方向是将编码静止作为一种分布式训练算法进行探索,这种算法使用了一种额外的通信形式,这种通信形式具有更大的延迟容错能力。

1.1、相关工作

除了上文提到的Hinton et al.(2015)和Zhang et al.(2017)所做的密切相关工作外,扩大神经网络训练的策略也有很多。早期训练大型分布式神经网络的工作集中在多核网络划分方案上,通常称为模型并行(Dean et al., 2012)。随着内存增加了图形处理单元(gpu),大多数分布式训练转向数据并行性,在多台计算机模型复制和数据分布到不同的副本,与更新被参数合并服务器或一个allreduce一步Goyalet al。(2017)。即使没有高质量的allreduce原语,具有备份工作者的集中式同步SGD的变体也可以扩展到大量的机器(Chen et al., 2016)。

集成化和精馏等方法大多正交于较低层次的分布式培训基础设施。然而,混合专家模型具有特别自然的模型并行性,可以与数据并行性和同步训练方案相结合。Gross et al.(2017)和Shazeer et al.(2017)是这一领域近期工作的显著例子。

当研究人员试图将神经网络训练扩展到更大的数据集和模型时,优化算法本身也可以改变。同步SGD的收益迅速递减(LeCun et al., 2012;Keskar et al., 2017)随着工人数量的增加,有效批大小的增加,我们可能希望像KFAC (Ba et al., 2017)这样的算法能够更好的利用大批。虽然这是一个很有前途的研究方向,但在这项工作中,我们关注的应该是一种优化算法不可知的方法,以提高可伸缩性和可再现性。

2、蒸馏

精馏是一种元算法,它允许任何算法合并集成的一些模型质量优点。蒸馏的想法是先培训老师模型,通常是一个或另一个高容量模型,然后,一旦这个老师模型训练,训练学生在损失函数模型和一个额外的一项鼓励其预测是类似于老师的预测模型。

对于不同类型的教师模型、不同类型的损失函数以及学生模型所训练的数据集的不同选择,蒸馏有许多变体。例如,学生模型可以在一个大的未标记数据集上进行训练,也可以在一个已分发的数据集上进行训练,甚至可以在原始训练集上进行训练。

也许令人惊讶的是,即使教师模型和学生模型是同一神经网络的两个实例(参见第3节的经验证据),蒸馏也有好处,只要它们足够不同(例如,通过不同的初始化和以不同的顺序查看示例)。此外,即使在收敛之前,教师模型预测仍然对学生模型有益。最后,教师和学生之间的区别是没有必要的,两个或两个以上的模型相互提炼也可以是有用的。

在本文中,我们用蒸馏法来指代蒸馏过程:

1. 对所有模型使用相同的架构;

2. 使用相同的数据集来训练所有的模型;和

3.在任何模型完全收敛之前使用训练过程中的蒸馏损失。

为了简单起见,我们通常考虑所有模型在其损失函数中都有一个蒸馏项的情况,但是编纂静止的关键特征是同时训练模型及其教师。

算法1给出了编码静止算法。蒸馏损失项可以是模型逻辑之间的平方误差,预测分布之间的KL发散,或者是模型预测之间一致性的其他度量。本文采用交叉熵误差法,将教师预测分布作为软目标。一开始的训练,蒸馏的损失不是非常有用的或甚至可能适得其反,所以维护模式多样性长,为了避免复杂的损失函数的时间表我们只损失函数使蒸馏项一次培训已经离开地面。

2.1 编码静止作为一种分布式神经网络训练算法

为了超越分布式随机梯度下降的限制,我们需要一种通信效率高得多的算法。如算法1所示,使用编码静止更新一个网络的参数只需要其他网络的预测,这些预测可以通过其他网络权重的副本在本地进行计算。

有几个理由让我们相信,对于训练来说,陈腐的预测可能远没有陈腐的梯度那么成问题:

1. 权重的每一次变化都会导致梯度的变化,但是随着训练向收敛的方向发展,权重的更新只会显著地改变对一小部分训练数据的预测;

2. 权重(和梯度)在统计上无法识别,因为权重的不同副本可能具有任意的缩放差异、排列的隐藏单元,或者以其他方式旋转或转换隐藏层特征空间,因此除非模型极其相似,否则平均梯度没有意义;

3.权重的足够不同步副本将具有完全任意的差异,这些差异会改变特征空间中单个方向的意义,而这些意义是无法通过测量训练集上的损失来区分的;

4. 相比之下,输出单元通过损失函数和训练数据具有清晰一致的含义。

此外,完全不同模型的预测分布仍然可以提供关于输入和输出之间关系的非常有用的信息。根据经验,我们发现对其他神经网络使用陈旧的预测而不是最新的预测对编码静止产生的最终训练模型的质量几乎没有负面影响。我们已经能够在异步情况下使用数万次更新的预测,或者在大批同步情况下使用800k次更新(即50次更新)的预测。

对陈旧教师预测的精馏容错表明,分布式培训策略远不如同步或异步SGD那么注重交流。

1. 每个worker在本地可用的训练数据子集上训练模型的独立版本。

2. 偶尔,工作人员会检查他们的参数。

3.一旦发生这种情况,其他工作人员就可以将最新可用的检查点加载到内存中,并执行编码静止。

当然,没有理由不将这种策略与标准的分布式SGD结合起来,从而产生一个过程,该过程使用独立的工人组来在组之间交换检查点,并在组内交换梯度信息。

在同步/异步分布式SGD的每次迭代中,每个worker都需要发送和接收与整个模型大小成比例的大量信息。当使用编码静止来分发培训时,每个工作人员只需要很少地从其他模型中读取参数检查点。

当结合分布式SGD和编码静止时,我们可以将工人添加到一个组中,直到我们看到分布式SGD的收益递减为止,然后在另一个组中部署额外的工人,偶尔在其他独立的工人组之间交换检查点。

此外,由于精馏过程对精馏损失项的准确预测值不是很敏感,因此不需要使用高精度浮点数来存储用于计算精馏损失项预测的参数。因此,分布式编码的额外计算成本不会比独立训练的成本高多少。

自参数模型的训练数据集可以被视为一个非常方面的数据集的压缩表示相关的学习问题,直观的意义,利用这些参数可能比发送所有数据点或梯度交流的更有效。

  1. 实验与结果

为了研究分布式训练的可扩展性,我们需要一个能够代表重要的大规模神经网络训练问题的任务。神经语言建模是一个理想的测试平台,因为web上有大量的文本,而且神经语言模型的培训非常昂贵。神经语言模型是机器翻译和语音识别等分布式SGD常用的重要问题的代表,但语言模型的评估更简单,使用的管道也更简单。为了尽可能清晰地显示任何潜在的可伸缩性改进,我们选择了一个足够大的数据集,这个数据集大到完全不可能通过训练表达模型来与现有的SGD并行化策略进行收敛。为了确认我们的结果并非特定于语言建模的某些特性,我们还在ImageNet上验证了我们的一些大规模编码静止结果(Russakovsky et al.,2015)。

为了证明编码静态化在减少预测波动方面的好处,并研究该算法的其他特性,我们可以使用更小的、执行成本更低的实验,但在研究可伸缩性时,真正达到分布式SGD的极限是很重要的。

3.1 数据集和模型

公共抓取是一个开放的web抓取数据存储库。我们下载了WET files2,并将其过滤为只包含包含长段落的英语文档,因为我们希望数据能够比LM1B这样随机排列句子顺序的数据集支持更大范围依赖关系的建模(Chelba et al.,2013)。经过预处理,大约有9.15亿份文档(20TB文本)保留下来。我们计划发布的文档id列表过滤以及代码后仍为可逆的记号赋予器供其他人使用这个数据集。我们训练有素的语言模型的所有我们共同的爬行实验是一个RNN语言模型和1024台每层的两层LSTM正常化(Ba et al .,2016)。我们使用了256维的输入嵌入和24006个单词块(Schuster amp; Nakajima, 2012),包括句子和段落的开始和结束标记、out of vocabulary(通常是非英语字符)和end of document。在转换成单词块之后,有6730亿个标记,比我们所知道的任何之前的神经语言建模数据集都要大得多。3 .在培训过程中,我们构建了批量32个单词块,每次从B个不同的文档中提取令牌,跨批保存隐藏状态。由于隐藏状态永远不会重置,因此模型必须学会使用文档标记的末端来重置自身。我们使用ADAM optimizer Kingma amp; Ba(2014)进行所有关于普通爬行的实验。

ImageNet是近年来最流行的图像分类基准。我们在ImageNet上的所有实验都尽可能接近Goyal et al.(2017)的设置,并使用全同步SGD。我们使用相同的学习速率扩展

资料编号:[3904]

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。