Cramming:一天内在单个GPU上训练语言模型

Cramming: Training a Language Model on a Single GPU in One Day

https://arxiv.org/abs/2212.14034

https://github.com/JonasGeiping/cramming    

776 stars

28 Dec 2022

语言建模的最新趋势集中于通过扩展来提高性能,并导致了一种大多数研究人员和从业者无法获得训练语言模型的环境。当社区中的大多数人都在问如何突破极限计算时,我们却提出了相反的问题:一天之内,我们用一个GPU能走多远?我们研究了基于Transformer的语言模型在单个消费GPU上从零开始完全训练的下游性能。除了重新分析该场景中预训练管道的几乎所有组件,并提供性能接近BERT的修改管道外,我们还研究了为什么缩小规模很难,以及哪些修改实际上提高了该场景中的性能。我们提供的证据表明,即使在这种受约束的设置中,性能也严格遵循在大型计算设置中观察到的缩放规律。通过缩放定律的视角,我们对训练和架构的一系列最新改进进行了分类,并讨论了它们在有限计算环境下的优点和实际适用性(或不足)。

1放大和缩小

使用Transformer架构对机器学习模型进行大规模训练,在自然语言处理的许多子领域都取得了突破性的改进,包括语言理解和自然语言生成(Vaswani等人,2017年;Dosovitskiy等人,2021;Radford等人,2019年)。这些系统目前公认的(但历史上令人惊讶的)关键行为是它们可以可靠地扩展——当模型参数的数量和数据量增加时,它们会不断提高性能。Kaplan等人(2020)研究的各种幂律很好地描述了性能的提高。这建立了一个主导范式,其中扩展是性能改进的关键(Sutton,2019)。

规模的力量引发了一场生产超大模型的竞赛,这反过来又创造了一种环境,在这种环境中,很少有研究人员或从业者觉得自己有能力训练语言模型。最初的BERT模型Devlin等人(2019)成为自然语言理解中许多实际应用的基石Transformer,已经需要大量的计算来训练。然而,Liu等人(2019)的复制和改进进一步提高了其性能,将计算水平提高了几个数量级。随着这些预先训练的检查点在一系列下游应用中变得流行(Wolf等人,2020),最大语言模型的竞争成为了工业实验室的焦点。这导致了训练运行,以牺牲zettaFLOP量表(Raffel等人,2020;Yang等人,2020年;Zaheer等人,2021)和后来的超大yottaFLOP量表(Brown等人,2020)的计算为代价,提高了预处理语言模型的性能(Black等人,2022;Chowdhery等人,2021;Rae等人,2022.)。

我们的目标是扭转这一趋势,并研究如何最好地缩小语言模型训练规模,以及在这样做时会出现什么样的权衡:当一个普通的研究人员在一天内用单个GPU从头开始训练时,可以实现什么样的下游性能?用如此有限的资源将语言模型训练到BERT的性能水平的能力有几个有趣的含义。首先,如果缩小模型预训练是大型计算预训练的可行模拟,那么这将开启一系列目前难以实现的大规模模型的进一步学术研究。例如,关于现有和新的预训练任务之间差异的研究问题,将模型预测跟踪到数据点(伊利亚斯等人,2022年),安全问题,如成员推断(卡里尼等人,2021年)和数据中毒(盖平等人,2021),以及对训练期间出现的稳定性或泛化等主题的广泛实证调查(Nagarajan&Kolter,2019;Jiang等人,2019)。同时,我们可以想象这样的情况,即规律要求不清楚基于来源不确定的公共数据训练的模型是否允许,以及从业者有兴趣使用专业或可信的数据源重新训练其语言模型(Wilka等人,2017;Gold&Latonero,2017)。

此外,我们有动机对过去几年来该领域研究的总体概念进展进行基准测试,而不仅仅是简单地转动缩放旋钮。在2018年,利用适度的训练资源实现BERT般的绩效似乎是不可想象的,但随着现代进步和Transformer训练技术的发展,这一目标现在可能实现。

为了回答这些问题,我们考虑了一个我们称之为“填鸭式”的挑战——在考试前一天学习一个完整的语言模型。我们的研究首先调查了训练管道的多个方面,以了解在缩减场景中哪些修改实际上提高了性能。我们提供的证据表明,即使在这种受约束的设置中,性能也严格遵循在大型计算设置中观察到的缩放规律。这些规律的一个不足为奇的结果是,缩小规模很难;虽然较小的模型架构能够加快梯度计算,但随着时间的推移,模型的总体改进率几乎保持不变。尽管如此,我们可以发现训练配方的变化,这些变化利用缩放法则,通过提高梯度计算的有效率而不影响模型大小,从而产生改进。最终,我们能够以微薄的预算训练出表现出色的模型——在GLUE任务上经常接近甚至超过BERT 1。

2将我们的双手绑在背后:计算有限的设置

在开始调查之前,我们想概述一下我们感兴趣的限制范围。填鸭式学习的规则如下:

•基于Transformer的任意大小的语言模型通过蒙面语言建模进行训练,完全从头开始。

•现有的预训练模型不能包含在管道的任何部分中。

•任何原始文本(不包括下游数据)均可用于训练。这意味着,只要采样机制不需要预先训练的模型,就可以通过明智地选择如何和何时采样数据来实现加速。

•原始数据的下载和预处理从总计算预算中免除。预处理可以包括基于CPU的标记器构造、标记化和过滤,但不能包括表示学习(例如,不允许预训练单词嵌入,除非将其计入最终运行时)。

•在单个GPU上进行24小时的训练。

•在GLUE上评估下游性能(Wang等人,2018)。GLUE的下游微调仅限于使用下游任务的训练数据(我们考虑5个或更少)进行的简短训练,并且需要使用全局设置的所有GLUE任务的超参数。总计算预算中不包括下游微调。

在我们的实现中,我们分析了使用经典rtx2080ti GPU的设置(2018年9月发布)和使用更现代的rtxa4000或rtxa6000 GPU的单独设置(2020年10月发布)。我们将每个单元与4个CPU核和32GB RAM配对。

为什么有这些限制?我们主要感兴趣的是重新研究Devlin等人(2019)的原始BERT设置。Transformer的最佳结构不是固定的,因为最佳尺寸和形状取决于缩放定律(Kaplan等人,2020)。现有模型的使用限制排除了对现有模型的蒸馏(Turc等人,2019年;Jiao等人,2020年;Sun等人,2020;Wang等人,2020b;Kaliamoorthi等人,2021)和基于现有大型模型的数据过滤(Golchin等人,2022年),这两种方法最终解决了关于压缩和传输已处理信息的问题。此外,我们不希望将数据局限于用于训练BERT的原始数据集,而是希望通过更好的数据管理和质量实现可能的改进。鉴于rtx2080ti GPU在Devlin等人(2019)之前发布,因此它是这项实验的一个自然候选,但最新的rtxa4000也很有趣,作为一种更新的消费级工作站变体。最后,我们还测试了rtxa6000,它可以说是单用户工作站的上限。在微调阶段,我们希望模拟原始BERT微调和评估设置,但提供额外的限制,以防止仅基于下游程序的调整而获得增益,例如通过计算上广泛的下游训练(Bahri等人,2021a),使用多个下游数据集(例如,在微调其他任务之前继续使用MNLI进行预处理(Izsak等人,2021)),并对每个GLUE任务进行扩展超参数优化(Devlin等人,2019年;Liu等人,2018年;Lan等人,2016年)。

3高效Transformer相关工作

训练BERT需要多长时间?

一般来说,这个问题很难回答,因为硬件和软件设置千差万别,效率衡量标准不同(Dehghani等人,2021)。训练运行的计算上限可以通过找到运行的挂钟预算内可用的(低精度)浮点运算的总数来确定。即使对于高度优化的模型(Chowdhery等人,2022),在实际计算中,给定时间间隔内总FLOP的峰值通常不会达到,但代表了实现训练运行所需的付费预算。我们在表1中总结了一些精选训练的预算。在TPU上对BERT进行最初的训练后,初步反应估计长达11天,以计算GPU上的可比结果(Dettmers,2018)。然而,持续的改进,特别是在软件方面,显著降低了上限(You等人,2019;Narasimhan,2019)。然而,配方和实现通常需要整个服务器节点(用于GPU)或TPU切片,并以更大的BERT架构为目标。

其他工作讨论了BERT目标的改进,计算设置更接近原始BERT,例如SquezeBERT(Iandola等人,2020)使用了8张Titan RTX卡四天。Sellam等人(2022)注意到,原始BERT训练运行是一个异常值,将其训练时间加倍更可靠地再现原始结果。

我们对资源有限的BERT训练的中心比较点是Izsak等人(2021)的工作,他们也尝试在24小时内以类似的总体限制训练BERT,但使用具有8个V100 GPU的完整服务器节点。Izsak等人(2021)选择一种BERTLARGE架构变体,训练序列长度为128,包括一系列调整,如修改的学习速率计划、大批量、稀疏预测和压缩序列。我们将此设置重新评估为我们自己计算预算的基线设置(大约小15倍)。

高效Transformer的研究

近年来,大量研究致力于改进和修改Vaswani等人(2017)提出的Transformer架构,我们参考Treviso等人(2022),了解该领域研究的最新分类和综述。几项元研究调查了拟议的改进和修改:Narang等人(2021)评估了Raffel等人(2020年)在语言理解和翻译任务中应用于T5模型管道的大量建筑修改。T5的编码器-解码器结构在精神上更接近于原始Transformer设置,但被理解为在使用编码器组件时表现类似于BERT(Liu等人,2021a)。在TPU切片上用1.75天的计算评估修改后,他们发现大多数改进并不能可靠地实现最终精度的提高。Tay等人(2021)在相同的环境下工作,评估T5衍生架构的最佳形状及其在模型缩放时对下游性能的相对影响。Tay等人(2022a)对各种架构改进的缩放行为的进一步探索发现,只有少数修改在所有尺度上都优于Vaswani等人(2017)的原始架构,尤其是在评估下游精度时。Scao等人(2022)的元研究调查了极端规模训练准备的改进。该研究侧重于对自回归模型的布局、位置嵌入和数据源的微小修改,而其他超大规模训练运行迄今为止在其设置中也同样保守(Brown等人,2020;Black等人,2022;Rae等人,2022)。然而,一般来说,这些评估针对的是比我们打算使用的更大的计算环境,并且关注的是改进(通常来自学术来源,并在小规模评估中提出)是否会转化为更大的规模。在这项工作中,我们抛开了缩放的问题,只关注有限的计算。

缩放定律

Kaplan等人(2020年)的比例定律也反映了发现明显改善的困难。在广泛的Transformer模型形状范围内,Kaplan等人(2020)发现只有模型大小(作为非嵌入层中的参数数量)能够强烈预测性能。此外,对于固定的计算预算,可以导出最佳模型大小,但性能与模型大小仅略有关联-较大的模型每计算单位处理的数据较少,但改进速度几乎相同。尽管这些缩放定律的精确系数和形状继续迭代(霍夫曼等人,2022),并适用于相关设置(Bansal等人,2022;克拉克等人,2022年;Bahri等人,2021b),但它们的总体逻辑似乎很难逃脱,即使幂律在小尺度上不太适合观察。

4项调查

对于我们的实验评估,我们对Devlin等人(2019)的设置进行了大量拟议修改,并对其在第2节所述的有限计算设置中的优点进行了测试。我们首先阐明了常见的实现和初始数据设置,然后研究了体系结构、训练和数据集的改进。

4.1实施细节

我们在PyTorch中实现了所有功能(Paszke等人,2017年),为了限制我们从“软件彩票”(Hooker,2021)中获得的收益,我们不使用专门的实现,这会进一步将结果偏向于成熟的组件。我们将所有内容都保持在PyTorch框架的实现级别,只允许自动操作员融合(Sarofeen等人,2022),可应用于所有组件。只有在选择了最终的架构变体之后,我们才重新启用Dao等人(2022)中描述的高效注意力内核。我们使用相同的自动化混合精度设置(Micikevicius等人,2018)运行所有实验和消融研究,以实现标准16位和32位浮点精度(超过32位浮点,缩放16位(Rasley等人,2020)和纯bfloat16(Wang&Kanwar,2019)。在我们的环境中,我们发现卸载没有任何好处(Ren等人,2021;Rasley等人,2020年)。

初始数据设置

我们从与Devlin等人(2019)的原始原始文本来源密切相似的地方开始调查,使用最近的英语维基百科(20220301.en)和英语语料库,注意到Tan(2019)评论;Bandy&Vincent(2021)。我们将所有文本强制转换为小写、带重音符号和非ascii字符,并仅基于这些数据从头开始创建一个英语标记器。我们选择词汇大小为215=32768的WordPiece(Wu等人,2016)。我们发现BPE(Sennrich等人,2016)或Unigrams(Kudo,2018;Kudo&Richardson,2019)的句子片段的表现没有显著变化。较小的词汇量(2 12,2 13,2 14)会导致较差的成绩,而较大的词汇量(1 16)并不能保证更好。我们将标记化的数据打包成长度为128的随机序列,并通过<sep>分离不相关的片段。删除此分隔符对性能的影响很小。在预训练中加入<cls>标记未观察到任何影响。较短的序列长度足以用于我们所瞄准的下游应用程序,并简化注意力计算。将数据打包成完整序列限制了我们更简单的序列丢失,但使用了可用的计算优化Liu等人(2019);Izsak等人(2021)。对于目标计算设置,对于gtx2080ti上的基本BERT架构的大多数变体,此序列长度导致64到96的微批量大小,我们将累积为更大的批量大小。由于我们有限的计算预算,这产生了足够的样本来运行单epoch训练(Komatsuzaki,2019;Hernandez等人,2022),其中没有重新访问数据点。

4.2修改架构

有效缩小训练规模的最明显方法是修改模型架构;从直觉上看,在填鸭式模式中,较小/较低容量的模型似乎是最佳的。在本节中,我们研究了模型类型与训练效率之间的关系。我们看到,缩放定律为缩小比例设置了强大的障碍。训练的每令牌效率很大程度上取决于模型大小,而不是Transformer类型。此外,较小的模型学习效率较低,这在很大程度上减少了吞吐量的提高。幸运的是,在相同大小的模型中,训练效率几乎是恒定的,这意味着我们可以通过找到架构修改来提高性能,从而加快梯度计算,同时保持参数计数几乎恒定。这使得架构选择相当简单,因为我们可以主要基于它们如何影响单个梯度步骤的计算时间来进行设计选择。

低资源制度下的比例法则

近年来的大量研究已经开发了架构改进,以加快原始Transformer的速度。许多这些方法都没有被发现可以改进大型T5架构的训练Narang等人(2021);Tay等人(2022a)。但是,在数据吞吐量至关重要的低计算环境中,也许这就是前进的方向?Kaplan等人(2020)在高资源制度中观察到了比例定律,并且随着资源的增长,比例定律似乎在一定范围内。令人惊讶的是,这些定律还限制了计算的极限缩减,并为低成本训练创造了障碍。

我们从图1中的文献中举例说明了许多Transformer变体的缩放法则的效果,其中我们使用优化的训练超参数训练每个架构变体,如下文第4.3节所述。我们将这些架构变体应用于包含预标准化和旋转嵌入的共享基线模型。图1显示了MLM损失的进度与总摄入的令牌数量以及所有架构在相同时间预算下运行的情况。

我们观察到,改变Transformer类型和尺寸对24小时后的最终损耗影响很小。具有更多参数的模型学习效率更高,因为它们的MLM损失在每个梯度的基础上减少得更快。然而,较小的架构通过更高的吞吐量来弥补其较慢的学习效率,从而在有限的预算内处理更多令牌。图1显示,在训练的初始阶段(前1B个令牌),不同的体系结构是不可预测的,之后每个令牌的效率仅相差一个乘法常数(由于对数轴的水平偏移)。这个常数几乎完全取决于模型大小,而不是模型类型,因此所有选择在训练结束时MLM损失约为1.9。

利用缩放定律。

缩放定律似乎阻止了我们通过对Transformer大小和类型进行重大更改来获得巨大收益,因为每个令牌的性能都与模型大小紧密相关。因此,我们发现在使用漏斗Transformer架构(Dai等人,2020;Nawrot等人,2022)、丢弃FFN层(Sridhar等人,2021)或使用递归层(Lan等人,2019)时,即使像Schwarzschild(2021)那样接受BPTT训练,也没有任何改进。将架构重新调整为深度箭头(Tay等人,2021;Wies等人,2021)没有带来任何好处。虽然这一原则关闭了一扇有效缩小的门,但却打开了另一扇;因为对于相同大小的所有模型,每梯度效率几乎保持不变,所以我们可以通过快速搜索架构选择来利用缩放规律,从而加快计算速度,同时保持模型大小大致不变。许多明显的优化都属于这一类,我们将在下面对它们进行描述,此外还有一些其他调整,这些调整提供了边际但值得/免费的收益。

注意块:

我们禁用所有QKV偏置(Dayma等人,2021)。这通过删除一层计算来利用缩放定律,使向前和向后的过程稍微更快,同时保持模型大小几乎不变。我们发现,我们可以通过减少注意力头部的数量来降低梯度成本(Merity,2019;Araabi&Monz,2020;Liu等人,2021b;Javaheripi等人,2022),因为这可以在GPU上更好地并行化,并略微提高性能。然而,减少注意力头数量也会降低微调性能,因此我们最终保留了所有12个注意力头。我们发现,更换softmax操作没有好处(Richter&Wattenhofer,2020)。我们进一步保持了最初的多头自我注意机制。大量工作集中于有效注意力(Sukhbaatar等人,2019;Beltagy等人,2020;Wang等人,2020a;Liu等人,2021c)和有效注意力研究(Tay等人,20220a;b)。但是,因为我们将最大序列长度设置为128,所以注意力复杂性在我们的设置中不太重要。为了验证这一点,我们实施了最近提出的FLASH机制(Hua等人,2022),但没有发现任何好处。我们进一步实验了Lee-Thorp等人(2021)提出的Fourier注意,但没有发现任何改进。我们发现旋转嵌入(Su等人,2021;Black等人,2022年)带来的好处很小,但由于速度下降,这些都被抵消了,所以我们最终决定不这样做。

前馈模块:

我们发现禁用所有线性层偏差的经验收益(Dayma等人,2021)。与关注层一样,这通过加速梯度计算而利用了缩放定律,而不会对模型大小产生明显影响。因此,我们在不影响模型改进速度的情况下获得了更高的吞吐量。我们在很大程度上保持了原始前馈块的不变,发现换成另一种激活方式比GELU没有好处。我们确实看到了将块重新排序为门控线性单元的微小改进(Dauphin等人,2017)。与其他工作相比,例如(Black等人,2022),我们没有增加FFN块中的参数数量,以补偿由于选通导致的隐藏维度减半。

嵌入:

我们实现了Hua等人(2022)中描述的缩放正弦位置嵌入,发现了比学习或未缩放正弦嵌入更大的好处。我们没有看到解耦输入和输出嵌入的改进(Chung等人,2020)。Lan等人(2019)提出的对输入嵌入进行因子分解的建议在我们的设置中没有任何好处。我们在嵌入块的末尾包括一个层规范化。

层结构:

正如在许多研究中观察到的,我们发现,使用层规范的预规范化优于后层规范(Baevski&Auli,2018;熊等人,2020)。我们看不到这种修改的其他变体带来的额外好处,例如(Liu等人,2020b;Shleifer等人,2021)。此外,用RMS归一化代替层归一化不会带来任何收益(Zhang&Sennrich,2019)。我们注意到,预正常化的关键作用是稳定训练,提高学习率并减少热身,我们认为单独使用它的好处有限。我们没有看到如(Zhang&He,2020)中所述的整个层的随机下降带来的好处。

主机座:

我们发现我们可以去除非线性头部而不会产生不良影响。我们可以进一步降低解码器偏差(Radford等人,2019年),并使用稀疏令牌预测获得内存(Liu等人,201九年;Izsak等人,2021)。我们添加了一个最终的层规范,以进一步稳定训练。

4.3修改训练设置

我们研究了训练超参数对BERT基础架构的影响。可以理解的是,最初的BERT训练配方的结果是在填鸭式环境中模型表现不佳,因此我们重新审视了一些标准选择。

目标:

我们只在完全填鸭的令牌块上使用掩码语言建模进行训练,掩码率为15%,Devlin等人(2019)的原始设置中,所有掩码的10%填鸭了随机单词,10%保持不变。我们发现,在更大的速率下,如(Wettig等人,2022)中所建议的40%,掩蔽没有改善,见附录。我们认为启用或禁用上述20%规则没有区别。我们评估了掩盖语言目标的其他功能,如均方误差(Hui&Belkin,2021)或L1损失,但没有发现任何益处。

优化器的选择:

我们选择Adam(Kingma&Ba,2015)作为优化器,权重衰减为0.01,如(Loshchilov&Hutter,2017)所述,β1=0.9,β2=0.98,ε=10−12。为了在不增加额外成本的情况下稳定训练,我们在截断值为0.5的情况下包括梯度截断。我们发现,以合理的数量改变这些参数没有明显的变化,例如ε=10−6,β1=0.9,β2=0.999。我们测试了其他一阶自适应优化器(Shazeer&Stern,2018;Liu等人,2020a),但在我们的设置中没有发现任何优势。我们进一步发现使用高阶优化器没有任何优势(Yadav,2020;Anil等人,2021),但注意到,特别是对于高阶优化器,在实现中存在较大的可变性。

学习率计划和峰值:

根据Izsak等人(2021)的建议,我们重新调整了学习率计划,使其与我们的预算挂钩,并且随着预算降至零,学习率会下降。有趣的是,我们在图2中观察到,虽然在全球范围内,大量的学习率形状会导致类似的损失减少,但我们发现,通过选择时间表,我们可以获得一些收益。我们发现,峰值学习率为10−3的简单单周期学习率(Smith&Topin,2018)在我们的预算范围内导致最小的预训练损失。

批量计划:

我们的设置的一个特殊性是,由于限于单个GPU,找到该GPU的微批处理大小(大多数实验为96)比最佳批处理大小小几倍。我们发现,对于最小的预训练损失,此设置中的最佳批处理大小约为1536,而对于2080ti的最大下游性能,则为4032,即我们累积梯度,并且仅分别每16次和42次向前/向后通过一次更新。对于较大的A4000和A6000卡,这对应于128/256的微批量大小和4096的最终批量大小,我们再次累加。

幸运的是,我们可以通过使用积极的批量计划找到小的加速;我们在训练过程中线性增加平均微批量的数量。这会在训练的早期取得更大的进步,并对绩效带来一点好处。我们还试验了自动和自适应批处理规则(De等人,2017;Bollapragada等人,2018a;b),但发现这些自适应调度的最佳结果类似于固定的线性调度。为了简单起见,我们只使用更简单的线性计划。

正在删除Dropout

Devlin等人(2019)的原始BERT模型包括Vaswani等人(2017)中的丢弃,这防止了训练数据相对于总计算预算较小时的过度拟合。虽然它作为正则化器很有用,但丢弃有效地减少了每个参数看到的渐变更新的数量,因为在丢弃相关特征时不会发生更新。同时,更新运行时不会受到丢失的强烈影响,因此丢失会导致每秒更新的净减少。

在填鸭式设置中,与计算相比,训练数据很大。由于单epoch计划,过度拟合是不可能的,我们在预训练期间禁用了丢弃(Brown等人,2020),以最大化参数更新的数量。我们在下游微调期间重新启用压降,压降值为0.1。此外,我们实验了长度课程(Li等人,2022)(见附录)和令牌丢弃(Hou等人,2022年),但在我们的设置中没有发现任何收获。

4.4优化数据集

我们在上面发现,缩放定律阻碍了通过架构修改获得重大收益(超出计算效率)。然而,缩放法则并不排除我们对更好数据的训练。一旦我们耗尽了每秒训练更多代币的能力,我们应该寻求训练更好的代币。

我们考虑两种基于数据的方法来更好地缩小规模。首先,我们可以以各种方式过滤、处理或排序现有数据。第二,我们可以交换数据源。为此,我们对《堆》的几个子集进行了实验(Gao等人,2020),其中仅包含古腾堡、Books3和维基百科(en)的原始文本。从这些Pile数据集中,我们标记了前4×106个条目,以生成足够的令牌用于我们的单次传递。另一个流行的数据源是C4,即庞大的清理版Common Crawl(Raffel等人,2020),我们从中流式传输前20×106个条目的数据。对于每个数据源,我们重新生成其自己的WordPiece标记器,如第4.1节所述。

在这四个来源中,我们发现桩在下游MNLI性能方面表现最好。然而,事实证明,我们可以通过额外的处理进一步改进C4数据集。我们首先通过精确的子串重复数据消除来评估Lee等人(2022)所述的重复数据消除,但发现这对我们的下游性能没有帮助。然后,我们测试不可压缩数据的过滤。我们使用标记器本身从C4集合中移除所有不能很好压缩的训练序列;我们只需设置一个阈值t,例如t=0.3,并从数据集中删除所有条目,其中条目中的令牌数量大于原始字符数量的t倍。例如,这会删除由难以压缩的HTML或markdown代码组成的序列。令人惊讶的是,这导致了C4的显著改善,总结在表2中。

然后,我们从两个方面看到了一些进一步的改进。首先,按照某种度量对所有标记化序列进行排序,其次,增加最终批处理大小。对于过滤,我们根据平均(unigram)令牌流行率对所有令牌化序列进行排序,以便可能的序列首先出现。这有一些积极的影响,并且可以通过从更大的语料库中提取来稍微加强,因为不太可能的序列永远不会到达。最后,在训练结束时将批量大小增加到4032/4096(如第4.3节所述),对C4的效果不成比例,但对维基百科的影响较小。我们认为,这两种修改最终都降低了数据分布波动阻碍训练的可能性。

词汇大小

我们还检查了(Devlin等人,2019)中描述的32768个原始词汇大小是否在填鸭状态下是最佳的。先验地,这可能不成立:词汇越大,在训练过程中必须学习的唯一标记和唯一标记之间的关系就越多。另一方面,增加词汇大小将进一步压缩数据(尽管在某一点之后会消失),这将允许将更多的信息压缩为固定数量的令牌,这些令牌可以在拥挤的训练过程中摄入。在图3中,我们发现,对于语料库维基百科数据,较大的词汇大小与较大的平均GLUE分数相关,尽管MNLI任务的影响在最初的32768个词汇大小左右趋于稳定。因此,我们继续保持这个词汇量。

5GLUE微调性能

最后,我们系统地评估了Wang等人(2018)的GLUE基准,减去Devlin等人(2019)的WNLI。我们注意到,在前面的章节中,我们只使用MNLI(m),并没有基于完整的GLUE分数调整超参数。我们在第2节规定的相同约束条件下,对预训练的BERT基础检查点和模型进行了微调。对于BERT库,我们对5个时期的所有数据集进行了微调,批量大小为32,学习率为2×10−5。对于填鸭模型,我们发现这不是最优的,可以从16的批量大小和4×10−5的学习率以及余弦衰减中获得微小的改进(这种设置不会改进预训练的BERT检查点)。

表3和表4描述了该设置在GLUE下游任务上的性能(作为5个下游试验的中值)。在这里,我们比较了原始BERT基本检查点、预算达到后停止的BERT预处理设置的复制、(Izsak等人,2021)中描述的设置和修改后的配方,每个GPU设置只训练一天。总的来说,性能出奇地好,尤其是对于MNLI、QQP、QNLI和SST-2的较大数据集,其中下游微调可以消除完整BERT模型和填鸭变体之间的剩余差异。此外,我们发现,在预算有限的朴素BERT训练和(Izsak等人,2021)中所述的配方方面,都取得了显著成效。对于(Izsak等人,2021),所述配方最初是为全8 GPU服务器刀片设计的,在本实验中,将其中的BERT-大型模型挤压到较小的GPU上是我们场景中该配方性能下降的主要原因。

总的来说,即使对于较小的数据集,填鸭模型也大多有效。然而,CoLA(语言可接受性语料库)的显著下降降低了平均值(Warstadt等人,2019)。这种行为很有趣,我们提供了两个假设。首先,可以想象,用于微调的所选全局超参数特别不适合CoLA。CoLa性能相对于超参数而言可能是脆弱的,Jiao等人(2020)仅在CoLa上训练更长,或Joshi等人(2020年)仅在CoLa上训练更少。然而,对于BERT,存在一组全局超参数,指出了填鸭模型的缺陷。作为第二个假设,可以想象,这些模型需要处理更多的文本,然后才能记住足够的数据,从而在CoLA上表现良好。这将与Liu等人(2021d)形成对比,Liu等人发现,在探测中间BERT检查点时,与其他下游任务相比,CoLA学习速度相对较快。另一方面,在将BERT提取为较小体系结构的方法中,CoLA的缺陷尤其常见(Sun等人,2019年;Turc等人,201九年;Mukherjee等人,2021),这可能会限制语言可接受性

5.1消融——哪些变化真正重要?

在表5中,我们提供了本工作中讨论的所有变化的消融研究总结。如前几节所述,我们将修改分为架构、训练和数据三组,并通过将所有修改重置为原始BERT配方来消除每组。在这里,我们发现,在任何情况下,我们首先必须进行最小的修改,因为对架构的修改(如PreNorm层结构)也反过来允许训练设置中描述的更积极的学习率计划。考虑到这一点,我们最终发现,通过架构更改,平均GLUE得分提高了约两个百分点,数据更改提高了一个百分点,训练修改提高了半个百分点。

5.2训练时间长了会发生什么?

我们还验证了如果目前讨论的填鸭食谱被更多预算使用会发生什么。为此,我们在8台A6000 GPU上对模型进行了48小时的训练,最终达到208 exaFLOP,参见表1。我们直接应用到目前为止所描述的设置,只需缩放学习率计划以覆盖48小时的新预算。在表6中,我们发现所讨论的方法确实立即推广到更大的计算预算。这是令人惊讶的,尤其是现在,数据集(在第4.4节中排序)现在太小,重复了多次。新训练的模型具有强大的性能,尤其是在MNLI和SST-2上,它们显著优于原始BERT检查点,并落入与Liu等人的roBERTA基础检查点类似的范围。(2019),这是经过更多计算训练的。然而,在其他任务中,例如(再次)CoLA,即使在更大的计算范围内,新模型也几乎没有改进。

6个限制

在这项工作中,我们将研究局限于经过MLM目标训练的基于Transformer的架构。然而,我们确实认为,即使在放松这些限制时,第2节中提出的填鸭式学习的一般任务也很有趣。特别是对该目标提出了许多修改(Joshi等人,2020;Bao等人,2020年;Bajaj等人,2022年;Tay等人,2022b)。虽然Artetxe等人(2022年)和Wang等人(202二年)发现MLM仍然可以很好地作为预训练目标,但也可以采用其他建议,如ELECTRA(Clark等人,2019年;2020年;He等人,2021),这可能有利于拥挤的模型。此外,最佳架构可能不是基于Transformer的(Merity,2019;Fusco等人,2022;Peng,2021)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容