正在翻开……

规模法则:AI 的经济学地基

Kaplan, McCandlish, Henighan, Brown, Chess, Child, Gray, Radford, Wu, Amodei · OpenAI 2020 · arXiv:2001.08361

2020 年初,OpenAI 内部有一个几百万美元的问题:把模型做大十倍,到底能换来什么?这篇论文的回答,改变了之后整个行业的花钱方式。别担心——α、N、D、幂律、双对数,这些符号你一个都不用记。你只需要带一样东西进来:想象自己手里握着预算。整篇文章只回答一个问题——钱砸下去,能买回多少聪明?

先押一注

先弄清楚我们在量什么。语言模型的成绩单上只有一个数字:损失(loss)——它预测下一个词时错得有多离谱。损失越低,模型越聪明。就这一个数,全文我们只看它。

现在你是 2020 年的实验室主任。手里有一个训练好的模型,董事会问:算力加到十倍,损失能降多少?凭直觉押一注——没什么大不了的,反正在这篇论文之前,谁也说不准:

先押注,再揭牌 · 纵轴 = 损失(越低越聪明)

换一副坐标,魔术现形

上一节的图用的是普通坐标:横轴每格加一。可算力的世界不是"加一"的世界,是"乘十"的世界——从 1 到 10,和从 100 万到 1000 万,花的钱同样是十倍。把横轴纵轴都改成"每格乘十",这叫对数坐标。点「对数坐标」,看那条奄奄一息的曲线变成什么:

同一批数据 · 普通坐标下,曲线看起来快要撞地板了

一条笔直的线。弯曲、饱和、快到头——全是坐标轴造成的错觉。在"乘十"的世界里,损失每次都降同样的比例:×10、再 ×10、再 ×10,每次都是 −11%,七个数量级从不失约。数学里管这个叫幂律(power law),白话版:对数坐标下的直线——每翻十倍,降固定的百分比。

直线有个普通曲线没有的特权:可以用尺子延长。这个性质值几十亿美元,我们留到第七节兑现。但先等等——刚才只拧了"算力"这一个旋钮。

「幂律」和「指数增长」不是一回事(可跳过)

指数律:只把纵轴换成对数时是直线——细菌繁殖、复利,快得吓人也停得突然。幂律:横轴纵轴换成对数时才是直线——地震能量、城市人口,以及本文的损失曲线。幂律降得慢,但降得倔:只要你肯再乘十倍,它就再降那个固定的百分比,没有尽头写在公式里。

三条直线:脑子、书、电

论文其实拧了三个旋钮,各给一个白话名字:N · 参数量——模型的脑容量;D · 数据量——它读过的字数(按 token「词元」计,一个 token 大约是大半个词);C · 算力——训练烧掉的计算总量。论文把上千次训练的结果铺在对数坐标上:三个旋钮,各自一条直线。切换标签页,拖动滑块沿每条直线走一走,盯住右下角"每 ×10"的降幅:

三个旋钮 · 三条直线 · 同一个纵轴(损失)

三条直线,三个斜率:数据最陡(每 ×10 约 −20%),参数其次(约 −16%),算力最缓(约 −11%)——因为算力这张支票要同时买脑子和买书,被摊薄了。斜率不同,脾气一样:没有一个旋钮会突然失灵,也没有一个会突然开挂,每个都诚实得像物理定律。

然而论文在这句话前面挂了一个沉重的前提:每条直线成立的条件,是另外两样管够。要是不管够呢?

短板决定天花板

给一口越换越大的锅,配同一把米——锅再大,粥就那么稠。参数是锅,数据是米。按住数据量不动,把参数一路拉到底,看损失从哪一刻开始不再理你:

数据固定为:
虚线 = 数据管够时的理想直线 · 实线 = 数据固定时的现实

在 10 亿 token 上,参数拉过一亿,实线就和蓝色虚线分道扬镳,趴平在 3.0 附近——之后参数再翻一百倍,损失纹丝不动,钱全打了水漂。换成 1 万亿 token,墙还在,只是退到了很远的右边。反过来按住参数、猛灌数据,也会撞上参数的墙——论文给的公式是对称的。三条幂律是三块木板,损失这只桶的水位,永远由最短的那块决定。

这就把问题逼成了一道经营题:一笔预算,该往哪块木板上花?动手分钱之前,论文先递来一个意外的事实。

意外:越大的模型,越省数据

直觉说:小模型便宜、好养活,先让小模型把数据吃干榨净,才叫精打细算。论文说:恰恰反了。下面是两个模型的学习曲线——1 亿参数100 亿参数,横轴是各自读过的数据量。拖动滑块,把目标损失往下压,看两者各自要读多少字才够到目标线:

虚线 = 你的目标损失 · 圆点 = 两个模型到达目标所需的数据量

目标定得宽松(3.4 以上),两边需要的数据差不太多;压到 2.90,小模型要多读 4 倍;压到 2.84,差距拉开到几十倍;再往下——小模型的曲线永远碰不到目标线了:2.83 是它的天花板(§4 那堵墙换了个方向出现),多少数据都救不了。同一个成绩,模型越大,需要的数据越少——大模型是更高效的学习者。这个反直觉的事实,直接决定了下一节的分钱方式。

一笔预算:买脑子,还是买书

现在给你一笔固定的算力预算:10²¹ 次浮点运算。有个很好用的近似:算力 ≈ 6 × 参数量 × 数据量(每个 token 在每个参数上大约要走 6 步运算)。所以这笔钱是零和的——脑子买大一号,书就得少买一摞。拖动滑块,把预算在两头之间滑动,找到损失最低的谷底:

预算固定 · 左端 = 小模型读海量书 · 右端 = 巨模型没书读

谷底不在中间,明显偏向"买脑子"的一侧——在最优点上,每个参数只分到几个 token,模型远没被"喂到饱"就该停了。这正是论文最惊世骇俗的结论:给定算力,训一个更大的模型、提前停下,好过把一个小模型喂到收敛。GPT-3 就是按这张配方单造的:1750 亿参数,只读了 3000 亿 token。

点一下「2022 年复检」:两年后 DeepMind 的 Chinchilla 论文用更干净的实验重测了这道题,发现 Kaplan 的实验设置低估了数据的价值,真实的谷底更靠中间——参数和数据应当一比一同步放大。方向没错,配比修了。诚实地说:上图用的是 Kaplan 自己的公式,它当然会替 Kaplan 说话;历史最终站在了中间那个标记一边。

「算力 ≈ 6 × 参数 × 数据」是从哪来的?(可跳过)

每个 token 在前向传播时,大约要在每个参数上做 2 次运算(一乘、一加);反向传播回来算梯度,账单约是前向的 2 倍。加在一起,每个 token × 每个参数 ≈ 6 次运算,所以总算力 C ≈ 6ND。这也顺带解释了 §3 里算力的直线为什么最缓:C 是 N 和 D 的乘积,一张支票天生要拆成两份花,单独看它,降幅自然被摊薄。

分钱的问题解决了。还剩最后一件事——也是这篇论文真正值钱的地方。

组装时刻:训练前就知道结果

把这一路的零件拼起来:三条幂律(§3)+ 不撞短板的配方(§4、§6)= 一个胆大包天的推论——小模型的实验结果,可以外推出大模型的成绩。你不需要训练一个巨型模型来知道它的损失,你只需要一把尺子。

尺子现在交给你。下面是一排已经训完的小模型(实心点),右上角那个空心圈是一个大一亿倍的模型——它还没训练,几千万美元还没花。拖动滑块,改变你"训练过的最大规模",用手里的点拟合直线、延长过去,看预测偏了多少:

实心点 = 已训练的小模型 · 空心圈 = 未训练的大模型 · 虚线 = 你的外推

只用最小的 3 个点,预测偏了约 4%——在几千万美元的赌桌上还不够稳;窗口拉宽到 6 个点,误差缩进 1% 以内,成绩单在花钱之前就写好了。这不是思想实验:OpenAI 训练 GPT-4 之前,正是用一批算力不到它万分之一的小模型,提前准确预测了它的最终损失——依据就是你手里这条直线。

最后一个挑战留给你:这条外推什么时候会骗人?回想§4——只要有一块木板变短(数据不够、参数不配、电跟不上),直线就会当着你的面弯掉。能答上这一题,说明你真的懂了。

杠精角落:四个最常见的反驳(欢迎对号入座)

"降 11% 也太寒酸了,值得砸十倍钱?"——损失是被压到对数刻度上的量:它每降一小截,模型的下游表现常常跳一大级。在这条曲线上,"会写通顺句子"和"会写代码"之间,也不过隔着几个 11%。

"七个数量级之外还灵吗?"——论文只担保它测过的范围。事实是此后几年、又向外好几个数量级,直线大体没弯——但请注意,这是后人验证出来的运气,不是论文给过的承诺。

"损失低 = 聪明,这个等号可靠吗?"——不完全可靠。损失量的是"预测下一个词",我们真正在意的很多能力与它强相关,但不等价。这条缝隙至今是前沿争论。

"Chinchilla 都修正它了,这论文岂不是错了?"——被修的是 §6 里那个谷底的位置(分配系数),三条幂律本身安然无恙。地基还是这块地基,家具挪了个位置。

从曲线到支票

回想你这一路亲手做过的事:押注十倍算力、结果只换来一成降幅,又看着它在对数坐标里变成一条从不失约的直线;沿三条斜率不同的直线走了几个来回;把参数拉到撞墙;把目标损失压到小模型永远够不着的深度;在预算的 U 形谷里找到偏向大模型的谷底;最后用三个点的直线,预测了一亿倍之外的成绩。

这就是这篇论文改变的事情。在它之前,"要不要砸钱做大模型"是一场赌博,董事会得到的答案是"训完才知道";在它之后,这句话变成了一道算术题——曲线的斜率就是投资的回报率,外推的直线就是立项书上的依据。GPT-3 敢一次做大一百倍,此后的公司敢把数据中心当成实验设备来建,底气都来自你刚才拖过的那几条直线。技术和钱,第一次被一条可以用尺子延长的线连在了一起。

当然,法则不是终点:Chinchilla 修了配比,后来的人还在追问数据会不会耗尽、幂律的尽头在哪里——但所有这些追问,都是站在这条直线上往前看的。这,就是"地基"的意思。

想看看这块地基上盖起来的楼?《注意力,就是你所需要的一切》讲的正是被规模化的那个架构——本文三条直线上跑的每一个模型,骨架都是它;而 GPT-3 那篇《语言模型是少样本学习者》,就是 §6 那张配方单的第一次千亿级试车。两条路都从你刚才拖过的直线出发。