5.4 大语言模型与Scaling Law

1.什么叫大语言模型

说起来,前面几章我们陆陆续续讲了词向量、注意力、Transformer这些东西,每一块单独看都已经不算简单。可把它们拼到一起、再放手放大,就到了今天这一章的主角,大语言模型(Large Language Model,常简写成LLM)。

我先说规模这件事。一个语言模型有多大,最直观的衡量就是参数量。早期那些做语言模型的工作,参数量动辄几百万、几千万就算不小的了。可到了大模型这一代,参数量直接从几十亿、几百亿一路涨到几千亿甚至上万亿。比如GPT-3,参数量大约是175B(这里B是billion的缩写,十亿,175B就是1750亿),这数字放在十年前几乎是不可想象的。除了参数量,训练用的数据量也跟着暴涨,动辄几千亿个token(token可以理解成模型读进来的一个文本片段,可能是一个词,也可能是半个词)。

说穿了,大语言模型最核心的特征,其实就是大。这个大体现在参数多、数据多,也体现在训练它要花的算力多。我记得第一次看到GPT-3那篇论文的时候,最让我震撼的是它没什么花哨的结构创新,就是老老实实地把一张Transformer堆到96层、参数喂到175B,事情就这么成了。这种朴素的力量感,是大模型最迷人的一面。

不过光说大还不够,得知道大到底换来了什么。这就引出了下一节要讲的Scaling Law。

2.Scaling Law:规模带来的可预测进步

Scaling Law翻译过来叫规模法则,说的是这么一件事:模型的损失,会随着参数量、数据量和计算量,按一种幂律的方式往下降。说得更具体一点,损失 LL 和参数量 NN、数据量 DD 之间,大致满足下面这种关系:

L(N,D)=E+ANα+BDβL(N, D) = E + \frac{A}{N^{\alpha}} + \frac{B}{D^{\beta}}

这里头符号不少,我一个一个说清楚。 LL 是模型的最终损失,可以理解成它在预测下一个token时出错的程度,越低越好。 NN 是模型参数量, DD 是训练数据量(一般用token数来衡量)。 EE 是一个常数项,代表损失降到一定程度后再也压不下去的部分,有点像学习的天花板,对应数据本身固有的不确定性。 AABB 是两个正的系数, α\alphaβ\beta 是两个正的指数,它们的具体数值都是通过大量实验拟合出来的。

这条式子看上去朴素,但它告诉我们的东西非常实在。其一,规模越大,损失越低,这一点是确定的,不会因为任务一变就翻脸。其二,这种下降是大致可预测的,你想知道花十倍算力能把损失压到多少,式子里算一算心里就有数了。这一点对工程实践意义极大,大厂在动辄几千万美元的训练预算面前,最怕的就是钱砸下去听不到响,而Scaling Law恰好给了他们一个相对靠谱的预估工具。

不过Scaling Law还有一段特别重要的后续,叫Chinchilla。DeepMind在2022年提出这个工作,主要指出了一件让大家都愣了一下的事:以前很多人其实是参数喂得太多、数据喂得太少了。Chinchilla给出的结论是,要让损失最低,参数量和数据量应该按大致相当的比例一起放大,每增加一份参数,就要配上一份差不多规模的新数据。具体到算力最优的配比,大约是每个参数配20个token。这个数字一出来,整个圈子的训练配方都跟着调整了。LLaMA系列就是这种思路的代表,它选择把数据量大大加厚,参数反而压得比GPT-3小很多,照样能拿出很有竞争力的效果。

说起来这一节其实和5.1 节预训练那一章是连着的。预训练阶段本质上就是在海量文本上压损失,Scaling Law告诉我们的,就是这个损失到底会怎么变化、又该怎么分配算力去压它。

3.涌现能力:量变到质变的那一刻

讲完了损失曲线的平稳下降,我们再聊一件更玄乎、也更迷人的事,叫涌现能力(emergent abilities)。

涌现这个词,说穿了就是量变引起质变。模型小的时候,损失可以一路降,但能力上看起来就是个越来越顺的鹦鹉,能接话,能写点东西,可稍微复杂点的任务它就接不住。可模型一旦大到某个临界点,某些能力会突然冒出来,比如少样本学习(few-shot learning,给模型几个例子它就能照葫芦画瓢地完成新任务)、思维链推理(chain-of-thought,让模型一步一步把推理过程写出来再给答案)。

研究这事情的人常用的比喻,是水温烧到一百度突然沸腾。你从二十度烧到八十度,水还是水,看着没什么本质变化,可一旦跨过那个临界点,整个状态就变了。大模型的涌现也很像这样,参数量、数据量堆到某个量级,那些小模型怎么也做不好的任务,它突然就会了,而且像模像样地会。

我记得有一阵子这个话题特别热,大家纷纷去找新的涌现能力,比如多位数算术、复杂的符号操作、跨语言的迁移。也有人冷静地指出,这些所谓的涌现,可能和我们怎么测量能力有关,换个更连续的指标,曲线说不定就平滑了。这个讨论本身就特别有意思,不管结论倒向哪一边,它都在提醒我们,规模到了一定阶段,带来的变化可能超出我们最初的想象。

不过这里要补一句,涌现到目前为止,更多是被观察到的现象,我们很难主动去设计它,也很难提前断言某个具体能力会在多大的模型上突然出现。这也是为什么训大模型的人对结果总是有点开盲盒的感觉。

4.训练大模型到底难在哪里

讲完了原理层面,我们再来看看工程上的难处。把一个模型训到几百亿、几千亿参数,真的不是把显卡堆够就能成的事,难处一抓一大把。

头一件就是数据质量。前面Chinchilla已经说了数据要够多,可多还不够,还得干净。训练数据里要混进来大量机器生成的垃圾文本、广告、乱码,模型学到的就是这些东西。小明之前做过一个实验,同一套结构,换一份清洗过的数据,损失直接降了一截,效果比加几层网络还明显。所以现在大厂在数据这块下的功夫,有时候比调结构还重,从去重、过滤、配比,到用小模型先打分筛样本,每一道都不能省。

第二件是算力。一个上千亿参数的模型,完整训练一次,少则几千张显卡,多则上万张,跑上几个月。电费、显卡折旧、集群维护,加起来是一个相当吓人的数字。这也就解释了为什么Scaling Law那么重要,它让你在砸这笔钱之前,能大致估算到底能换来多少损失下降,不至于一上来就出岔子。

第三件是训练稳定性。我们在3.10 节专门讲过训练稳定性,那会儿还只是几十层的网络,到了大模型这边,事情被放大得更夸张。梯度一抖动,几百亿参数里只要有一处数值溢出,整个训练就崩了,损失突然变成NaN(NaN是Not a Number的缩写,表示数值溢出,已经不是一个合法的数了),前功尽弃。所以大模型的训练要特别小心地控制学习率、初始化、归一化、精度,1.4 节概率信息论里讲过的方差和数值范围,在这里全都用得上,还要随时监控各种指标,稍有异常就要赶紧处理。

这些工程上的细节,常常被论文一笔带过,可真正训过大模型的人都知道,它们才是能不能成事的关键。小张去年参加过一个开源大模型的训练,跑了快两个月,最后崩在了一次罕见的数值溢出上,那次之后他对训练日志的迷信程度高了不少。

5.脉络:GPT和LLaMA是怎么一路放大的

最后我们顺着两条最典型的线索,看看大模型到底是怎么一路走大的。

一条线是GPT系列。GPT-2参数量大约1.5B,那时候已经能写出相当通顺的段落,让圈外人第一次感觉到语言模型有点东西。GPT-3直接跳到175B,少样本学习的能力一下子冒出来,论文一发整个社区都热闹起来。GPT-4 OpenAI没公布具体参数,但从能力表现看,规模显然又上了一个台阶,而且开始显出明显的思维链推理。这一路走来,脉络很清楚,结构基本不变,参数和数据一路放大,能力就跟着一步一步往前走。

另一条线是LLaMA系列。Meta做的这套,思路和GPT稍有不同,更倾向于走Chinchilla指出的路子,参数压得比较克制,数据却喂得特别厚。LLaMA、LLaMA 2、LLaMA 3一路下来,参数规模从7B、13B、65B(LLaMA 2起改为70B)到更大的版本,每一代都在数据配比上做文章,效果紧追闭源的大模型,还把权重开放出来,给整个研究社区省了大家很多事。说起来,这两条线代表了大模型时代两种很典型的打法,一种是一路放大求极致,一种是精打细算求性价比,各有各的道理。

我记得有本讲科技史的书里提到过,一项技术从实验室走到千家万户,靠的往往是一群人把它一点点做厚做稳的漫长积累,单凭某一次天才的灵感很难走完这条路。大语言模型大概也在这条路上,GPT和LLaMA只不过是其中最显眼的两个路标。

大语言模型这一章,我们顺着规模这条主线,从Scaling Law的可预测进步,到涌现能力的量变引起质变,再到训练大模型的工程难处,最后串了一遍GPT和LLaMA的脉络。下一章我们继续往下走,看看训完一个这么大的模型之后,又要拿它做什么。

练习

Q1. Scaling Law公式 L(N,D)=E+ANα+BDβL(N,D)=E+\frac{A}{N^\alpha}+\frac{B}{D^\beta} 里,EE 这一项代表什么?为什么损失不能无限降下去?

EE 是一个常数项,代表损失降到一定程度后再也压不下去的部分,对应数据本身固有的不确定性,有点像学习的天花板。哪怕模型再大、数据再多,语言里总有些不可预测的成分(比如下一个词本来就模棱两可),这部分损失永远在,所以总损失会趋近于 EE 而不是 00

Q2. Chinchilla给出的"算力最优配比"大约是每个参数配多少个token?基于这个结论,如果参数量 N=70N=70 亿,大致需要多少训练token?

Chinchilla给的配比大约是每个参数配20个token。所以 N=70N=70 亿(7B)时,数据量 DD 大致要 7×109×20=1.4×10117\times10^9 \times 20 = 1.4\times10^{11},也就是大约1400亿token。LLaMA系列就是按这种思路,参数压得比GPT-3小很多,数据却喂得特别厚,照样拿出有竞争力的效果。

Q3. 易错点:涌现能力是不是只要把模型训得足够大就一定能"设计"出来?给一个具体任务,能提前断言它要多大模型才会涌现吗?

不能。涌现到目前为止更多是被观察到的现象,我们很难主动去设计它,也很难提前断言某个具体能力会在多大的模型上突然出现。研究者常用的比喻是水温烧到一百度突然沸腾,可这"临界点"具体在哪、为什么在那里,目前还没有可靠的预测方法。还有人指出,所谓涌现可能和测量指标有关,换个连续的指标曲线说不定就平滑了。所以训大模型对结果有点开盲盒的感觉。

Q4.(面试题) 请解释 Scaling Law 中损失 L(N,D)=E+ANα+BDβL(N,D)=E+\frac{A}{N^\alpha}+\frac{B}{D^\beta} 各项含义,并说明 Chinchilla 的结论如何改变了大模型的训练配方。

LL 是模型最终损失(越低越好),NN 是参数量,DD 是训练数据量(token数),EE 是损失下界(数据固有不确定性)。AABB 是正的系数,α\alphaβ\beta 是正的指数,都靠大量实验拟合出来。公式告诉我们损失会随 NNDD 按幂律下降,且这种下降大致可预测——花十倍算力能换多少损失下降,可以估算,这对动辄几千万美元的训练预算是救命的工具。Chinchilla 的关键结论是:以前很多人参数喂太多、数据喂太少,并不划算;要损失最低,参数量和数据量应按大致相当的比例一起放大,算力最优配比约是每个参数配20个token。这一下改变了整个圈子的配方——LLaMA系列就是典型代表,它把数据量大大加厚、参数压得比GPT-3小,效果却紧追闭源大模型。简单说,Scaling Law给了可预测性,Chinchilla给了最优配比,两者合起来让"堆规模"从蛮力变成了有章法的工程。

相关标签
深度学习大语言模型Scaling Law