在一块消费级 GPU 上只用一天时间训练,可以得到什么样的 BERT 模型?
最近一段时间,谈话模型再次带火了 AI 领域。预训练谈话模型的无监督训练属性使其可以在海量样本基础上从事训练,并获得大量语义语法知识,不论分类还是问答,似乎没有 AI 解决不了的问题。
然而,大模型既带来了技术突破,也对算力提出了无穷无尽的需求。
最近,来自马里兰大学的 Jonas Geiping、Tom Goldstein 讨论了任何关于扩大估计范围的钻研,深入探讨了缩小估计范围的改良方向。他们的钻研引发了机器进修社区的关注。
在新钻研中,作家对于单块消费级 GPU(RTX 2080Ti)能训练出什么样的谈话模型从事了讨论,并获得了令人兴奋的结果。让我们看看它是如何实现的:
模型范围的扩展
在自然谈话处理(NLP)领域,基于 Transformer 架构的预训练模型已经成为主流,并带来诸多突破性进展。很大程度上,这些模型机能强大的原因是它们的范围很大。随着模型参数量和数据量的增长,模型的机能会不断提高。因此,NLP 领域内掀起了一场增大模型范围的竞赛。
然而,很少有钻研职员或从业者认为他们有能力训练大型谈话模型(LLM),通常只有行业内的科技巨头拥有训练 LLM 的资源。
为了扭转这一趋势,来自马里兰大学的钻研者从事了一番探索。
论文《Cramming: Training a Language Model on a Single GPU in One Day》:
论文链接:https://arxiv.org/abs/2212.14034
这个问题对于大多数钻研职员和从业者来说具有重要意义,因为这将成为模型训练成本的参考,并有望打破 LLM 训练成本超高的瓶颈。该钻研的论文迅速在推特上引发关注和讨论。
IBM 的 NLP 钻研专家 Leshem Choshen 在推特上评价道:「这篇论文总结了任何你能想到的大模型训练 trick。」
马里兰大学的钻研者认为:如果按比例缩小的模型预训练是大型预训练的可行模拟,那么这将开启一系列目前难以实现的大范围模型的进一步学术钻研。
此外,该钻研尝试对过去几年 NLP 领域的整体进展从事基准测试,而不仅仅局限于模型范围的影响。
该钻研创建了一项称为「Cramming」的挑战 —— 在测试前一天进修整个谈话模型。钻研者首先分析了训练 pipeline 的方方面面,以了解哪些修正可以实际提高小范围模拟模型的机能。并且,该钻研表明,即使在这种受限环境中,模型机能也严格遵循在大型估计环境中观察到的扩展定律。
虽然较小的模型架构可以加快梯度估计,但随着时间的推移,模型改良的总体速度几乎保持不变。该钻研尝试利用扩展定律在不影响模型大小的情况下通过提高梯度估计的有效益获得机能提升。最后,该钻研成功训练出机能可观的模型 —— 在 GLUE 任务上接近甚至超过 BERT—— 而且训练成本很低。
资源有限
为了模拟普通从业者和钻研职员的资源环境,该钻研首先构建了一个资源受限的钻研环境:
一个任意大小的基于 transformer 的谈话模型,完全从头开始使用掩码谈话建模(masked-language modeling)从事训练;pipeline 中不能包含现有的预训练模型;任何原始文本(不包括上游数据)都可以包含在训练中,这意味着可以通过明智地选择如何以及何时对数据从事采样来实现加速,前提是采样机制不需要预训练模型;原始数据的下载和预处理不计入总预算,这里的预处理包括基于 CPU 的 tokenizer 构造、tokenization 和 filtering,但不包括表征进修;训练仅在单块 GPU 上从事 24 小时;上游机能在 GLUE 上从事评估,GLUE 上的上游微调仅限于仅使用上游任务的训练数据从事简单训练(5 个 epoch 或者更少),并且需要使用为任何 GLUE 任务配置的全局超参数,上游微调不估计在总预算中。
该钻研与一些经典大模型的具体训练配置比较如下表所示:
改良办法
钻研职员实施并测试了已有工作提出的一些修正方向,包括通用实现和初始数据配置,并尝试了修正架构、训练以及改动数据集的办法。
实验在 PyTorch 中从事,不使用特质化的实现以尽量公平,任何内容都保留在 PyTorch 框架的实现级别上,只允许可应用于任何组件的自动运算符融合,另外只有在选择了最终的架构变体之后,才会重新启用高效注意力内核。
图 1:不同 transformer 架构变体 MLM 损失函数与 token 对比的情况。左:全局视图。右图:放大到 10e8 和更多 token 情况下。任何模型都用相同算力成本训练,我们可以看到:通过架构重塑实现的改良微乎其微。
有关提升机能,我们最先想到的办法肯定是修正模型架构。从直觉上,较小 / 较低容量的模型似乎在一日一卡式的训练中是最优的。然而在钻研了模型类型与训练效益之间的关系后,钻研职员发现缩放法则为缩小范围配置了巨大的障碍。每个 token 的训练效益在很大程度上取决于模型大小,而不是 transformer 的类型。
此外,较小的模型进修效益较低,这在很大程度上减缓了吞吐量的增加。幸运的是,在相同大小的模型中,训练效益几乎保持不变这一事实,意味着我们可以在参数量类似的架构中寻找合适的,主要根据影响单个梯度步骤的估计时间来做出设计选择。
图 2:进修率 Schedule。尽管在全局范围内行为相似,但在中间的放大图里可以看到差异确实存在。
在该工作中,作家钻研了训练超参数对 BERT-base 架构的影响。可以理解的是,原始 BERT 训练办法的模型在 Cramming 式训练要求中的表现不佳,因此钻研职员重新审视了一些标准选择。
作家也钻研了优化数据集的思路。扩展法则阻碍了通过架构修正取得重大收益的方式(超出估计效益),但缩放定律并不妨碍我们在更好的数据上从事训练。如果想在在每秒训练更多的 token,我们应该寻求在更好的 token 上训练。
图 3:在 bookcorpus-wikipedia 数据的 Cramming 式训练中训练的模型的词汇量与 GLUE 分数和 MNLI 准确性。
在 GLUE 上的表现
钻研职员系统地评估了 GLUE 基准的机能和 WNLI,并注意到在前面的部分中只使用了 MNLI (m),并且没有根据完整的 GLUE 分数调整超参数。在新钻研中对于 BERT-base 作家微调了 5 个 epoch 的任何数据集,batch size 为 32,进修率为 2 × 10-5。对于 Cramming 训练的模型这不是最优的,其可以从 16 的 batch size 和 4 × 10−5 的进修率以及余弦衰减中获得微小的改良(此配置不会改良预训练的 BERT check point)。
表 3 和表 4 描述了此配置在 GLUE 上游任务上的机能。作家比较了原始的 BERT-base check point、在达到算力上限后停止的 BERT 预训练配置、Izsak 等人 2021 年钻研中描述的配置和修正后的配置,为每块 GPU 配置训练一天。总体而言,机能出奇地好,尤其是对于 MNLI、QQP、QNLI 和 SST-2 等较大的数据集,上游微调可以消除完整 BERT 模型和 Cramming 配置变体之间的剩余差异。
此外,作家发现新办法与算力有限的普通 BERT 训练及 Izsak 等人描述的办法相比都有很大改良。对于 Izsak 等人的钻研,其描述的办法最初是为一个完整的 8 GPU 刀片服务器设计的,并且在新的场景中,将其中的 BERT-large 模型压缩到较小的 GPU 上是导致大部分机能下降的原因。
表格 3:基线 BERT 与 Cramming 版本模型的 GLUE-dev 机能比较。其中任何任务的超参数都是固定的,epoch 限制为 5 个,缺失值为 NaN。是为 8 GPU 刀片服务器设计的,而在这里,任何估计被塞进了一块 GPU。
表格 4:基线 BERT 与填充模型的 GLUE-dev 机能比较。
总体而言,使用论文中的办法,训练结果已经非常接近原版 BERT,但要知道后者使用的总 FLOPS 是新办法 45-136 倍(在 16 块 TPU 上要花费四天时间)。而当训练时间延长 16 倍时(在 8 块 GPU 上训练两天),新办法的机能实际上比原始 BERT 提高了很多,达到了 RoBERTa 的水平。
总结
在该工作中,人们讨论了基于 transformer 的谈话模型在估计量非常有限的环境中可以实现多少机能,值得庆幸的是,几条修正方向可以让我们在 GLUE 上获得不错的上游机能。钻研职员表示,希望这项工作可以为进一步的改良提供一个基线,并进一步给近年来为 transformer 架构提出的许多改良和技巧提供理论支撑。
参考内容:
How good of a BERT can one get in ONE DAY on ONE GPU?
With all the recent studies about scaling compute up, this paper takes a refreshing turn and does a deep dive into scaling down compute.
It's well written, stock full of insights. Here is my summary and my opinions.
🧶 1/N pic.twitter.com/QkhyHFJbg1
— Lucas Beyer (@giffmana) December 29, 2022
[R] Cramming: Training a Language Model on a Single GPU in One Day
by u/stonkttebayo in MachineLearning
原创文章,作者:机器之心,如若转载,请注明出处:https://www.iaiol.com/news/32595