当前位置: 首页 > 科技观察

亚马逊:我们提取了BERT的一个最优子架构,CPU速度提升了7倍

时间:2023-03-18 23:33:57 科技观察

提取BERT子架构是一个非常值得探讨的问题,但是现有的研究在子架构的准确度和选择方面存在不足。近日,AmazonAlexa团队的研究人员对BERT子架构提取过程进行了细化,提取出一个最优子架构Bort。它的体积只有BERT-large的16%,但是在CPU上的推理速度却提升到了原来的八分之一。次。在自然语言处理领域,BERT是一个里程碑式的进步。只需加入一个单层线性分类器和一个简单的微调策略,就可以在多个任务中取得优异的性能。但另一方面,BERT的应用也面临着规模大、推理速度慢、预训练过程复杂等诸多问题。研究人员进行了多次尝试,提取出一个更简单的子架构,希望这个子架构能够保持原有BERT的优良性能,同时简化预训练过程,减少推理时间。这些研究取得了不同程度的成功。然而,他们提取的这些子架构在准确率上仍然低于原始架构实现,而且架构参数集的选择往往显得随意。虽然这个问题在计算上很棘手,但deWynter最近的一项研究表明,存在一种近似算法——更具体地说,是一种完全多项式时间近似方案(FPTAS)——可以有效地提取具有最优性保证的此类集合。在本文中,AmazonAlexa团队的研究人员将为BERT提取最佳子架构参数集的问题细化为三个指标:推理延迟、参数大小和错误率。该研究表明,BERT具有满足这些条件组合的强大AB^nC属性,从而使上述算法的行为类似于FPTAS。然后,研究人员从BERT的高性能变体Bort中提取了一个最佳子架构,它的大小是BERT-large的16%,并且在CPU上的推理速度提高了8倍。论文地址:https://arxiv.org/pdf/2010.10499.pdfGitHub地址:https://github.com/alexa/bort/虽然FPTAS可以保证找到性能最好的架构,但是它返回的在上面3指标性能最好的架构的参数集,没有输出训练到收敛的架构。因此,研究人员对Bort进行了预训练,发现与原来的训练相比,预训练速度有了显着提升:在相同的GPU和相同的数据集大小下,Bort训练了288小时,BERT-large训练了1153小时,而RoBERTa-large的训练时间为24,576小时。研究人员还在GLUE、SuperGLUE和RACE公共NLU基准测试中评估了Bort。结果表明,与BERT-large相比,Bort在所有这些基准测试中都实现了显着改进,范围从0.3%到31%。研究人员在GitHub上开源了训练模型和代码:https://github.com/alexa/bort/Bort:BERT的“最优”子架构Bert是一个基于transformer的双向全连接架构,其中包括一个依赖一个词汇表基于嵌入层(BERT的词汇表V=28,996个标记)、一个包含Transformer的D编码器层和一个输出层。首次引入BERT架构时,有两种变体:BERT-large(D=24个编码器层,A=16个注意力头,H=1,024个隐藏层大小,I=4,096个中间层大小);BERT-base(D=12,A=12,H=768,I=3072)。形式上,令Ξ表示包含四元组值(即模式参数)的有效组合的有限集。与deWynter(2020b)一致,该研究将BERT体系结构家族描述为函数的共域,如等式1所示。优化了速度i(b(X;))、参数p(b(;W)和错误率e(b(X;W^?),Y)。deWynter(2020b)表明,对于任何架构,这是一个NP-Hard问题。deWynter(2020b)中的FPTAS是一种近似算法,它依赖于i()、p()和e(,)代理函数的优化,表示为i^()、p^()和e^(,)。在执行过程中将它们表示为Ξ的函数,并通过选择参数最多、推理时间最长(T称为最大点、最大点)和W-系数索引的架构T∈B对它们进行标量化,如等式所示下图2:获取i(·)和p(·)的代理比较简单,实际上i(·)和p(·)的代理必须通过损失函数来获取。同样,保证运行时间和近似性取决于两个额外的输入参数:所选的最大训练步数n>0,以及预期区间大小1≤≤|Ξ|。ε的选择直接影响近似算法得到的解的质量。Pre-trainingwithKnowledgeDistillation虽然FPTAS可以确保我们获得一组描述最优子架构的架构参数,但如何有效地预训练参数化模型仍然是一个悬而未决的问题。根据之前的研究(详见论文第二章),可以得出结论,使用知识蒸馏(KD)预训练上述语言模型可以在上述评价指标上取得良好的性能。鉴于代理误差函数e^(,)是关于最大值的交叉熵,通过KD扩展上述评估是很自然的。该研究还将Bort架构的自我监督预训练与基于KD的预训练进行了比较,发现在学生模型和教师模型的最后一层之间使用简单的交叉熵足以找到一个优秀的模型,可以实现更高的掩码语言模型(MLM)准确率和更快的预训练速度。评估为了验证Bort在最优子架构提取过程后是否保留了BERT和RoBERTa的强大泛化性能,研究人员在GLUE、SuperGLUE基准测试和RACE数据集上对Bort进行了微调。结果表明,Bort比其他类似BERT的压缩模型要好得多,在多个任务上的表现都大大优于其他模型。GLUEGLUE(通用语言评估基准)包含一组通用的自然语言任务。它主要关注自然语言推理(NLI),由十个数据集组成。研究人员通过向除CoLA之外的所有任务添加单层线性分类器来微调Bort。在CoLA中,研究人员发现在Bort和分类器之间增加一个额外的线性层可以提高收敛速度。所有任务都使用Agora进行了微调。结果如表4.15所示。Bort在几乎所有任务上都表现出色,除了QQP和QNLI,它在这两个任务上的表现比其他等效的基于BERT的模型要好得多。与BERT-large相比,Bort的性能提升了0.3%-31%。研究人员将这一改进归功于Agora的微调,因为它可以让模型更好地学习每个任务的目标分布。SuperGLUESuperGLUE包含一组常见的自然语言任务,由十个数据集组成。研究人员通过添加单层线性分类器对Bort进行微调,并在所有任务上运行Agora以收敛。结果如表5所示:除ReCoRD外,Bort在所有任务中均取得了超过或媲美BERT-large的结果。RACERACE数据集是经过专业标注的文本阅读多选题数据集,分为两个数据集:RACE-H(从高中试题中提取的数据集)和RACE-M(从初中试题中提取的数据集)).提取的数据集)。与之前的实验一样,研究人员通过添加单层线性分类器对Bort进行微调,并运行Agora进行收敛。结果如表6所示。总体而言,Bort取得了不错的成绩,在两项任务上都比BERT-large高出9-10%。