训练10B的模型需要多大的数据?详解大模型中的Scaling Law

1c32fd876b8c2820438218b8110b81f0.gif

©作者 | nghuyong

单位 | 腾讯

在大模型的研发中,通常会有下面一些需求:

  1. 计划训练一个 10B 的模型,想知道至少需要多大的数据?

  2. 收集到了 1T 的数据,想知道能训练一个多大的模型?

  3. 老板准备 1 个月后开发布会,给的资源是 100 张 A100,应该用多少数据训多大的模型效果最好?

  4. 老板对现在 10B 的模型不满意,想知道扩大到 100B 模型的效果能提升到多少?

以上这些问题都可以基于 Scaling Law 的理论进行回答。本文是阅读了一系列  Scaling Law 的文章后的整理和思考,包括 Scaling Law 的概念和推导以及反 Scaling Law 的场景,不当之处,欢迎指正。

b8202f16734562c17dd4536961195e7c.png

核心结论

大模型的 Scaling Law 是 OpenAI 在 2020 年提出的概念 [1],具体如下:

1. 对于 Decoder-only 的模型,计算量 (Flops),模型参数量 ,数据大小 (token 数),三者满足:。(推导见本文最后)

2. 模型的最终性能主要计算量 ,模型参数量 和数据大小 三者相关,而与模型的具体结构(层数/深度/宽度)基本无关。

29aff184718873ba84d123f47cb02bcd.png

3. 对于计算量 ,模型参数量 和数据大小 ,当不受其他两个因素制约时,模型性能与每个因素都呈现幂律关系

4. 为了提升模型性能,模型参数量 和数据大小 需要同步放大,但模型和数据分别放大的比例还存在争议。

5. Scaling Law不仅适用于语言模型,还适用于其他模态以及跨模态的任务 [4]:

11a2995ec6d52cd1f291f25e5e82018f.png

这里横轴单位为 PF-days: 如果每秒钟可进行 次运算,就是 1 peta flops,那么一天的运算就是 ,这个算力消耗被称为 1 个 petaflop/s-day。

99e91b2d9b4e7c1ca1d20b1e34ef18d7.png

核心公式

b6b25ddd8d7d0b7d89b4df5fabf1a4b9.png

  • 第一项 是指无法通过增加模型规模来减少的损失,可以认为是数据自身的熵(例如数据中的噪音)

  • 第二项 是指能通过增加计算量来减少的损失,可以认为是模型拟合的分布与实际分布之间的差。

根据公式,增大 (例如计算量 ),模型整体 loss 下降,模型性能提升;伴随 趋向于无穷大,模型能拟合数据的真实分布,让第二项逼近 0,整体趋向于 。

99168ddfc189d2a77008ed0246cdfb98.png

大模型中的Scaling Law

3.1 GPT4

下图是 GPT4 报告 [5] 中的 Scaling Law 曲线,计算量 和模型性能满足幂律关系

5bcb9a424e58804b15d134effa86db8a.png

  • 横轴是归一化之后的计算量,假设 GPT4 的计算量为 1。基于 10,000 倍小的计算规模,就能预测最终 GPT4 的性能。

  • 纵轴是 “Bits for words”, 这也是交叉熵的一个单位。在计算交叉熵时,如果使用以 2 为底的对数,交叉熵的单位就是 “bits per word”,与信息论中的比特(bit)概念相符。所以这个值越低,说明模型的性能越好。

3.2 Baichuan2

下图是 Baichuan2 [6] 技术报告中的 Scaling Law 曲线。基于 10M 到 3B 的模型在 1T 数据上训练的性能,可预测出最后 7B 模型和 13B 模型在 2.6T 数据上的性能。

01e29bee75fc2010f452abd772b1f54a.png

3.3 MindLLM

下图是 MindLLM [7]技术报告中的 Scaling Law 曲线。基于 10M 到 500M 的模型在 10B 数据上训练的性能,预测出最后 3B 模型在 500B 数据上的性能。

ae37d45ab7bdaee15e736f54a2ffb78d.png

501cb3801d97e938212cf271250217be.png

Scaling Law实操:计算效率最优

根据幂律定律,模型的参数固定,无限堆数据并不能无限提升模型的性能,模型最终性能会慢慢趋向一个固定的值

d2a8c9e57c39f03dbd2e78c5b965b9b6.png

如图所示,如果模型的参数量为 (图中紫色的线),在数量达到 ,模型基本收敛。所以在数据量达到 后,继续增加数据产生的计算量,没有同样计算量下提升模型参数量带来的收益大(计算效率更优)。根据 ,可以进一步转换成模型参数与计算量的关系,即: 模型参数为 ,在计算量为 Flops,即 PF-days 时基本收敛。也就是右图中紫色线的拐点。

0910cef28091a25761677f9a3e9bf118.png

根据 Baichuan [6] 的实验,在中英场景下,7B 模型收敛时的算力是 FLOPS,对应的数据量应该是  。

按照上面的思路,下面进行 Scaling Law 的实操。

首先准备充足的数据(例如 1T),设计不同模型参数量的小模型(例如 0.001B-1B),独立训练每个模型,每个模型都训练到基本收敛(假设数据量充足)。根据训练中不同模型的参数和数据量的组合,收集计算量与模型性能的关系。然后可以进一步获得计算效率最优时,即同样计算量下性能最好的模型规模和数据大小的组合,模型大小与计算量的关系,以及数据大小与计算量的关系。

52d47b7d9b9d0f9b569340b4d33313ca.png

如图所示,根据左图可以看到计算量与模型性能呈现幂律关系(可以认为数据和模型都不受限制),根据中图和右图,可以发现 ,即计算效率最优时,模型的参数与计算量的幂次成线性关系,数据量的大小也与计算量的幂次成线性关系。

根据 ,可以推算出 ,但是 分别是多少存在分歧。

OpenAI [1] 认为模型规模更重要,即 ,而 DeepMind 在 Chinchilla 工作 [2] 和 Google 在 PaLM 工作 [3] 中都验证了 ,即模型和数据同等重要。

所以假定计算量整体放大 10 倍,OpenAI 认为模型参数更重要,模型应放大 (5.32)倍,数据放大 (1.86)倍;后来 DeepMind 和 Google 认为模型参数量与数据同等重要,两者都应该分别放大 (3.16)倍。

836b14ec32ea264d78235a58c6f12b6c.png

例如在 PaLM 的实验中,计算量从 放大 10 倍到 , 模型参数也提升了 3.2 倍,3.35B->10.7B。

例如在 PaLM 的实验具体最好在自己的数据上做实验来获得你场景下的 和 。

8ef6a5b6192cedc5689bee57ccfc0658.png

LLaMA: 反Scaling Law的大模型

假设遵循计算效率最优来研发 LLM,那么根据 Scaling Law,给定模型大小,可以推算出最优的计算量,进一步根据最优计算量就能推算出需要的 token 数量,然后训练就行。

但是计算效率最优这个观点是针对训练阶段而言的,并不是推理阶段,实际应用中推理阶段效率更实用。

Meta 在 LLaMA [8] 的观点是:给定模型的目标性能,并不需要用最优的计算效率在最快时间训练好模型,而应该在更大规模的数据上,训练一个相对更小模型,这样的模型在推理阶段的成本更低,尽管训练阶段的效率不是最优的(同样的算力其实能获得更优的模型,但是模型尺寸也会更大)。根据 Scaling Law,10B 模型只需要 200B 的数据,但是作者发现 7B 的模型性能在 1T 的数据后还能继续提升。

61292982aa27313d39777371e5b4fc9b.png

所以 LLaMA 工作的重点是训练一系列语言模型,通过使用更多的数据,让模型在有限推理资源下有最佳的性能

具体而言,确定模型尺寸后,Scaling Law 给到的只是最优的数据量,或者说是一个至少的数据量,实际在训练中观察在各个指标上的性能表现,只要还在继续增长,就可以持续增加训练数据。

98c227164ea5576bd31501184016c81b.png

b22410507cc3c4d878ddb8a0559a1ddd.png

计算量、模型和数据大小的关系推导

对于 Decoder-only 的模型,计算量 (Flops),模型参数量 (除去 Embedding 部分),数据大小 (token 数),三者的关系为: 

推导如下,记模型的结构为:

decoder 层数: 

attention 隐层维度: 

attention feedforward 层维度:, 一般来说  

首先推导模型的参数量 (忽略 embedding,norm 和 bias)计算如下:

transformer 每层包括:self-attetion 和 MLP 两个部分:

self-attention 的参数为 ,每个矩阵的维度均为 ,整体参数量: 

MLP的层数的参数为 ,整体参数量: 

所以每层的参数量为:,全部的 层的参数量为:,即  

继续推导模型的前向推理的计算量:

计算量的单位是FLOPs,floating point operations 对于矩阵 , 相乘的计算量为 ,一次加法一次乘法。

假设 Decoder 层的输入 , 为 batch size, 为序列长度, 为模型维度。

self-attention 部分的计算:

输入线性层:,计算量为: 

atention 计算:,计算量为: 

socre 与 V 的计算:,计算量为: 

输出线性层:,计算量为: 

MLP 部分的计算

升维:,计算量为: 

降维:,计算量为: 

所以整个 decoder 层的计算量为:,全部 层为: 

反向传播计算量是正向的 2 倍,所以全部的计算量为: 

平均每个 token 的计算量为  

所以对于全部包含 个 token 的数据集: 

outside_default.png

参考文献

outside_default.png

[1] Scaling Laws for Neural Language Models:https://arxiv.org/abs/2001.08361

[2] Training Compute-Optimal Large Language Models:https://arxiv.org/abs/2203.15556

[3] PaLM 2 Technical Report:https://arxiv.org/abs/2305.10403

[4] Scaling Laws for Autoregressive Generative Modeling:https://arxiv.org/abs/2010.14701

[5] GPT-4 Technical Report:https://arxiv.org/abs/2303.08774

[6] Baichuan 2: Open Large-scale Language Models:https://arxiv.org/abs/2309.10305

[7] MindLLM: Pre-training Lightweight Large Language Model from Scratch, Evaluations and Domain Applications:https://arxiv.org/abs/2310.15777

[8] LLaMA: Open and Efficient Foundation Language Models:https://arxiv.org/abs/2302.13971

[9] 人工智能中的算力单位Petaflop/s-day - 套牌神仙的文章:https://zhuanlan.zhihu.com/p/106406433

[10] 李开复带队零一万物发布开源大模型 Yi,如何解读?- 黄文灏的回答:https://www.zhihu.com/question/629230332/answer/3278779348

[11] 介绍一些Scaling Laws - cingti的文章:https://zhuanlan.zhihu.com/p/631357320

[12] 分析transformer模型的参数量、计算量、中间激活、KV cache - 回旋托马斯x的文章:https://zhuanlan.zhihu.com/p/624740065

更多阅读

4e5b02736bbfd6ecd725cf0fd4197471.png

3c6524b92a9e616e93631cb37c9d209c.png

f61c9a02ca05f460917eab9f1f02d5fc.png

c79962e683e7611d51912925146bae45.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

e1be33960e95a9da18ea1c86dde1951f.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

261fd6ad7f7e15653cfcde0b4d49d21c.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值