文 | Yimin_饭煲
都1202年了,不会真有深度学习炼丹侠还没有训练/推理过大模型吧
“没吃过猪肉,还没见过猪跑吗?”在深度学习算力高度增长的今天,不论是学术界还是工业界的从业者,即使尚未达到从头预训练一个百亿级别参数模型的土豪程度,也必定尝试过在自己的科研/工作中使用大模型。训练大模型已经成为了刷排行榜SOTA、处理业务问题、提高工作受关注程度甚至是大厂“秀肌肉”的一个重要手段。如何高效地训练大模型,快速地推理大模型,方便地部署大模型也是产学研界所面临的关键挑战。
想刷SOTA想涨点,没有大模型,万万不行。可是,自己训练一个大模型,就一定能刷出SOTA和涨点么,那也未必?且不论数据质量、工程实现难度这些一个比一个令人头疼的问题,单单是大模型结构和训练方法的设计,就已经让人抓狂了。 作为一个训练大模型方面的小白,如果让我训练一个大模型,我最关心的问题是:
幸运地是,针对以上令小白无从下手的问题,训练大模型无数的工业界土豪Google/DeepMind/OpenAI热心地为大家分享了自己的经验。研究者们将研究模型大小、数据量、模型结构等因素如何影响模型性能这一领域称为深度学习的尺度定律,本文将为大家解析尺度定律这一领域的三篇经典工作,分析了在预训练、微调和跨域迁移三个常见的应用场景中的尺度定律,希望大家在读完这篇推送后,能更好地设计和训练自己的大模型~
论文题目:
深度学习模型种类和任务五花八门,不妨从大模型数量最多、数据最充足、任务相对简单的预训练语言模型开始研究。OpenAI的工作 Scaling Laws for Neural Language Models 是尺度定律领域最早的研究。从预训练语言模型入手,想必也有OpenAI对GPT系列工作情有独钟的因素。这篇文章的主要结论是:
OpenAI的工作告诉我们在预训练语言模型时,模型的参数量决定了模型的表现,而模型结构的影响很小。但是,OpenAI研究的因变量只有语言模型的交叉熵,而在实际应用中,预训练语言模型更多地是为了在下游任务上进行微调和应用。Google和DeepMind的研究者们,进一步探索了在微调语言模型时遵循的尺度定律,证明了模型的结构对下游任务微调的影响很大,并且发现了现有的T5模型并不是最优的结构。作者们还壕无人性地发布了100个T5的Checkpoint! 这篇文章的主要发现是:
模型在预训练阶段的表现基本仅依赖于模型的参数量,在微调阶段时的表现和模型结构关系很大。在预训练阶段表现更好的模型(NL12-XXL), 在下游任务上的表现却明显低于NL32-XL。
在不同的计算开销条件下(Small, Base, Large),所得到的最优模型配置是不相同的。因此,在较小尺度下得到的最优模型配置未必能在较大的尺度上也是最优的
模型的层数(NL)对下游任务上表现的影响很大,而注意力头的数目(NH)、前向传播层(FF)的维度对下游任务上表现的影响相对较小。
作者提出了DeepNarrow策略,也就是在“堆料”时提高模型的层数,而不需要将其他参数过于提高。按照此策略的模型相对于标准版的T5模型更加“瘦高”。从结果可以发现,尽管参数量和FLOPs更小,DeepNarrow策略的模型表现要优于T5标准模型(在Small,Base,Large,XL,XXL多个尺度上)
作者们在GLUE之外的多个和常识推理、自然语言生成任务有关的数据集上同样验证了DeepNarrow策略的有效性。
跨域迁移学习是大模型另一个极其重要的应用场景。例如,我想预训练一个Python数据上的大模型,然而Python数据的量毕竟是十分有限的。这时,可以先利用大规模的文本数据训练一个大模型,再利用Python数据进行迁移学习,就能够得到一个强大的Python语言模型。如下图所示,如果先在文本上预训练一个模型,之后在Python数据集上进行微调,就能够比从头训练的Python模型取得更好的效果(小数据场景下)。固定测试误差,定义从头训练Python模型所需要的数据量为 ,从预训练好的文本模型迁移学习Python模型所需要的数据量为 , 就是从预训练文本模型迁移的“数据量”研究者们采取了三种方式进行训练:直接在Python代码上训练/在文本上预训练在Python代码上微调/在文本和非Python的代码上预训练在Python代码上微调。通过大量地实验发现了尺度定律在迁移学习上的许多规律。
遵循和 以及模型参数量 的明确函数关系 , 其中 ,与预训练的语料分布无关,衡量了参数量对模型表现的影响。 和预训练的语料分布有关,预训练和微调的语料分布越接近, 越小。在文本到Python的迁移过程中 。
当下游的Python数据集较小时,从文本预训练模型迁移而来的Python模型有着更好的表现。由于Python数据集较小,当从头训练的模型参数量进一步扩大时会受到过拟合的影响,使得表现难以进一步提升,而预训练过的文本模型能够随着参数量的提高进一步提升性能。
预训练模型在少数据场景下更加的计算高效,也即仅需要更少的计算资源进行微调就能达到与从头训练相同的效果。
在小数据迁移场景下,作者发现微调模型的损失可以和前文中预训练模型的公式放在统一的框架中,得到公式这个公式可以通过将 替换为 得到。
了解完干货满满的尺度定律的三种应用后,大家会发现尺度定律的研究大多基于充分的实证实验和数据分析,往往需要耗费大量的算力资源,需要收集大量的数据以供实验。而作为学术界和工业界的普通炼丹师,也许无法获得如此充足的资源来研究如何训练自己的大模型。这里,我想谈谈我从这三篇“耗资巨大”的论文中学到的东西,顺便来回答文章开头提到的问题~
尺度定律并非是在深度学习中提出的概念,而是物理学中的一个常用名词。凡是可以用幂次关系表示的两个或多个物理量都称为满足尺度定律。最早研究预训练语言模型的尺度定律论文 Scaling Laws for Neural Language Models 的第一作者Jared Kaplan是一位来自约翰霍普金斯大学的物理学教授,因此在这篇论文中可以看到很多类似于物理学中的唯象的研究思路。深度学习和物理学都需要对实验现象进行观察并总结出规律,也许深度学习也可以被看成一种新的“物理学”分支。希望将来能看到更多物理学家参与的深度学习工作,能给深度学习带来更多的理论和实践Insights~
后台回复关键词【入群】
加入卖萌屋NLP/IR/Rec与求职讨论群
后台回复关键词【顶会】
获取ACL、CIKM等各大顶会论文集!
[1] Scaling Laws for Neural Language Models.https://arxiv.org/abs/2001.08361
[2] Scaling Laws for Transfer.https://arxiv.org/abs/2102.01293
[3] Scaling Efficiently: Insights from Pre-training and Fine-tuning.https://arxiv.org/abs/2109.10686