1. 什么是Scaling Law
Having a sense of the capabilities of a model before training can improve decisions around alignment, safety, and deployment.
— GPT4 Technical Report
Scaling Law 定义:我们可以用模型大小、Dataset大小、总计算量,来预测模型最终能力。(通常以相对简单的函数型态, ex: Linear relationship)
其实在过去,DL的研究者、从业者应该多多少少就会从两个方面听过Scaling Law。
第一、很多论文在各种DL领域早就提出了Scaling Law:
Hestness et al.于2017发现在Machine Translation, Language Modeling, Speech Recognition和Image Classification都有出现Scaling law.
OpenAI Kaplan et al.于2020年从计算量、Dataset大小、跟参数量分别讨论了Scaling Law。
Rosenfeld et al.于2021年发表了关于Scaling Law的survey paper。在各种architecture更进一步验证Scaling Law的普适性。
除了以上论文,即便在过去没有关注到Scaling Law的研究发展,DL研究者、从业者也一定知道第二点(或是说具备代表性的图)。
第二、Scaling Behavior早就隐藏在研究员的潜意识中。
Andrew Ng早在2016、2017就在各种场合画出过以下这张图,在Deep Learning.ai的课程中也时常出现,这张图原本是用来说明NN跟传统ML的适用时机,但却也显现出,对于研究员而言,早就具备一些关于Scaling的直觉。像是:Model越大、Data越多,performance都会随之提升
如果你还是第一次接触这个概念,就拿摩尔定律来当类比,摩尔定律我们知道:晶片性能跟时间会呈现某种可预测关系(更精准的讲是电晶体密度会随时间成倍数增长) 。
DL的Scaling Law说的就是,模型的性能会跟:1. 模型参数、2. Dataset大小、3. 训练计算量,呈现某种可预测的关系。
2. 具体内容
对于Decoder-only的模型,计算量C(Flops)、模型参数量N(non-embedding parameter count)、数据大小D(token数)三者满足: C≈6ND (小模型不准)。在给定计算量下,最优参数

模型的最终性能主要与C, N, D相关,而与模型结构基本无关,2%的误差,计算公式为

这里

第一项是指无法通过增加模型规模来减少的损失,可以认为是数据自身的熵(例如数据中的噪音)。
第二项是指能通过增加计算量来减少的损失,可以认为是模型拟合的分布与实际分布之间的差。
在多模态的任务中,均表现出log-log linear的scaling law

Chinchilla Scaling Law针对Return问题,提出了一个完整的Scaline公式如下。
LLM最终的Loss(Perplexity),会随着模型放大、数据量变多而下降,并且是跟他们呈现指数映射后线性关系。
这就像是开头OpenAI的图,找到了一个预估训练LLM回报的公式,依此,我们不用拿超大的模型跟数据,用几个月甚至几年的时间慢慢做实验,只要在小模型、小数据下验证、确认我们的公式,就可以设计一个更大型的训练,大幅度减少了实验成本。
Chinchilla最大的贡献更是在解决Allocation的问题,他们发现
数据量(Tokens数)应该要约等于模型参数量的20倍
并且数据量跟模型参数量要同比放大(Ex: 模型放大一倍,数据也要跟着增加一倍)
依据这个结论他们发现,当时很多公开的大模型,都只考虑参数量放大,而没有放足够量的Data。在同样计算量下,Chinchilla把模型缩小、但是加入更多Data,马上就训练出比当时其他模型都更好的模型。
3. 因应Scaling Law,我们要如何改变我们的工作模式与思考方式?
前面两个段落,我希望大家都已经理解并接受了Scaling Law,并且也发现了Scaling Law带来的各种优势。
接下来我想用一个小段落快速分享一下这一年,因应Scaling Law,我的工作模式与思考方式的改变。
Scaling Law的本质是:模型最终效能可以藉由模型参数量、Dataset大小、训练计算量来预测。因此我们可以藉由小模型、少量Data的训练,来快速验证我们的想法。
但是即便只是这一个简单的idea,背后最少也隐藏着3个重点。
A. 要能Scaling,意味着组织必须能够支援持续扩大(Scale)模型的infra跟GPU资源分配模式。
首先,我们来说infrastructure,以7B模型而言,粗估要占用15GB~20GB的GPU memory,也就是说如果你全参数训练,一张A100(80GB GPU memory)只能开Batch = 4,如果你想要Batch = 64, 128,那么必须先进行跨卡和跨机的训练环境设置。
同时为了加速训练,让memory使用率变的更高,每一两个月几乎就有新的技术、python package出来,Ex: Flash Attention 2, Zero 3, Vllm, Gradient Checkpoint, CPU offloading …等,随时追踪最新的训练优化技术,并且保持组织的Server要能够高频率做改变,如果一个组织对Server里面pip版本更新、各种packages更新的周期都是以月为单位,注定会在infra层面落后全世界半年到一年。
接着讲GPU的资源分配模式,传统实验室、公司的GPU资源模式不外乎两种:
平均分摊GPU给每个人
因应Project去申请更大型的GPU cluster
这两种模式在Scaling时代都有明显的弊端,平均分摊GPU会让公司不具备跑真正大型实验的能力,因应Project去申请则容易导致GPU资源过度浪费。例如:具备16张A100的团队大可以每个实验都直接跑7B的level,不必去验证3B、1B的可行性。
更好的方法应该是尽量让每个Project都具备在3B以下模型进行概念验证的能力,并设计正式的Scaling检查机制,只有通过Scaling检查的团队可以"By experiments" 去使用更大的GPU Cluster。
这边提到Scaling检查机制,核心就是,当我们想要跑7B甚至13B模型时,我们最好在3B以下的模型都有一致的Scaling Behavior。最好在BERT跟T5这两种大小先进行过概念验证。
如果在2023年,没有解决infra问题,也没有调整出适合LLM scaling的资源分配模式,很有可能在2024年会连其他公司车尾灯都看不到。
B. 思考、实验、讨论都要把Scaling当作核心
承接第一点以及原本对Scaling的理解,一个好的团队,在做跟Large XXX model相关专案时,一定要把Scaling当作一切的核心。
但Scaling其实也是一个复杂的过程,其中最少都会包含三个阶段:
Cold start:一开始模型太小、Data不够、问题太难时,会呈现怎么训练都没有帮助,好几个不同大小的模型、Dataset训练出来的结果都差不多烂,看不出Scaling的时期。
Scaling:正常的Scaling时期。
Plateau:撞到了某个隐形的天花板,可能是Dataset品质带来的天花板、本身任务的Irreducible Error、Architecture的能力天花板。
我们心中希望的其实是处理中间这段,但是实际上遇到的问题可能复杂很多。
而这就必须要辨识出几种Scaling常见的Patterns(如下图)
Ordinal Scaling:这是我们最理想的情况,从BERT base或是T5 small开始,随着模型变大,效果显著上升,因此我们可以画出一条很漂亮的Scaling Law,可以每天准时下班,晚上做梦都会笑。
Emergent Ability:专指那些只有参数量到一定大小(Ex: GPT4)后才做的好的任务,像是在2023年中普遍认为Reasoning跟Coding都是少说要30B才能做好。Emergent Ability我会在之后再更详细提。
Ran out of Data/Compute:确实出现了Scaling的情况,但是目前连GPT4都做不好。
Slow Scaling (Not fast enough):确实出现了Scaling的情况,但是成长速率明显过慢。
四种Pattern分别都有不同的实验方法、改进方法可以做,不过因应篇幅过长,我留到之后再详细说明我现在的Scaling流程,不过重点只是先放在,实验、思考都要时常思考Scaling 。
C. 一个好的idea,一定要具备Scale的潜能
这就又提到第三个重点,我们要依照「一个idea是否具备Scale的潜能」来找出能够长期执行的idea、判断实验的重要性。
举个例子,以大部分公司而言,常见的Data来源会有下面几种:
人工Label:依照任务难易度而变,很多NLP任务在公司能够Label的scale都在1,000上下,这显然就不是好的scale idea。
Crowd Source:依照我的经验,NLP的题目,Crowd Source普遍可以在一定的预算内做到10k~100k这个level,如果你的project scaling law在这个范围内是可行、可接受的那可以考虑。
Unsupervised Learning:如果公司有整理好的文本数据的话,可以快速估计一下文本的Scale,并且依照公司文本快速去画出Scaling law,判断公司内这个领域的文本数量是否足够。
Distill from GPT3.5 or GPT4:用GPT3.5跟GPT4生成synthetic data,并且快速画出这个project的Scaling law,预估最多需要多少token GPT4的request才能变成一个好的project,进而做成本跟时程控制。(Distillation会在我后面其他part占非常大的篇幅,之后会详谈。)
对于研究机构也可以基于Scaling快速评断一个idea有没有可能持续做大做强,以下就举一组例子(RLHF vs DPO):
RLHF (Reinforcement Learning from Human Feedback):理论上可以无限Scale,因为当我们reward model训练完后,我们可以让LLM跟Reward model self-play,所以关键是解决RL的instability跟Human preference的noise。其中instability又牵扯到需要多少Human Preference data,其实还是会回到Data scaling的问题。
DPO (Direct Preference Optimization):把RL从RLHF里面移除掉,变更稳定的优化,但是把self-play的优点也移除掉了,必须要回头考量Human Preference data的scalibility问题。
从这个角度就可以看出来,如果是可以快速收取Human Preference data的公司(有庞大的user base,ex: Google, Apple, FB),大可考虑DPO,但如果公司没办法快速Scale Human Preference,还是要回头思考RLHF的各种问题,藉由LLM跟Reward Model的Self-play来scale。
4. 2024年以前最重要的几个Scaling Law
Pretraining的Scaling Law:本篇重点的内容,必须要详读OpenAI的Scaling Law [2]跟DeepMind的Chinchilla Scaling Law [3]。
Over-train Pretraining的Scaling Law:主要由LLaMa [4]提出,Chinchilla找到的是Computational optimal,意思是在固定运算量下最好的配比。但是我们只有在训练超大模型才会考虑computation的限制,而像是7B, 13B这种level,我们就要思考如何把他们做的越强越好,所以大可以Over train他们,用更多的资料训练小模型,让他们比预期的更好,典型例子是LLaMa 1跟LLaMa 2 [5]。
藉由Data Quality提升Scaling Law斜率:典型是Microsoft的phi系列[6, 7],藉由更好的资料,来让模型在同样大小参数、Dataset的情况下得到更好的效果,而最终他们推出phi-2,用2.7B model赢过大量7B, 13B模型。
Instruction tuning的Scaling law:由Google提出,instruction tuning阶段也有scaling law,因此instruction tuning的data数量还是一个简单且重要的考量依据。[8]
Downstream performance跟LLM loss的scaling law:阿里巴巴发现model的SFT score跟ICL score,跟原始的loss也有scaling relationship,也就是说我们甚至在finetune前也可以一定程度预判最终downstream能力。[9]
Mixture of Expert LM的Scaling Law:由DeepMind提出,Language model如果做了MoE后,Expert count也会跟loss呈现Scaling关系,其中发现当我们有8个Experts的时候,一个模型大概可以跟两倍大小的模型有差不多的performance。[10]
Context Length的Scaling Law:今年,还有部份团队开法把重点放在加长LLM的context length,意思是可以看、生成更多token,LongLLaMa [11], LongLora [12]和LightSeq [13] 都试图提出针对context length的不同scaling law。
Data Repeat带来的不同Scaling Law:2023另一个大议题就是在可见的未来,网路上可见的Data数量可能会不够了,因此研究Data Repeatition就变的很重要,AI2发现repeat 4次都还可以给LM带来有效的improve [14],新加坡国立大学跟爱丁堡大学的研究者则提出11个针对data repeatition的insight [15],非常建议把这篇论文重复详读多次。
RLHF中Reward Model的Scaling Law:OpenAI讨论了在RLHF中Reward model的scaling以及使用proxy的reward model对scaling的帮助。[16]
结语
Scaling是LLM之所以能够成功的最重要因素之一,因此从目前重要LLM玩家(Ex: OpenAI, Google, Meta, …)对Scaling Law的理解学习,并把Scaling的概念带到日常工作、实验跟思考,是要跟上这波LLM发展的重大关键之一。
希望我这篇文章能够帮助大家更清晰理解Scaling Law,如果有相关问题也欢迎随时回复跟我讨论。同时我也持续有在接家教、演讲跟顾问,今年会加入很多LLM的新知识,也欢迎到我主页用email跟我联系。
Scaling Law必看学习清单:
Stanford cs224n课程影片:Scaling Language Model
Stanford cs324课程中scaling law的slides
Chinchilla Scaling Law的论文
OpenAI针对Scaling Law的论文
[进阶] Sasha Rush在Simon Institute的演讲:Scaling Data-Constrained Language Models
[进阶] Go smol or go home,这篇Blog讨论了Chinchilla的局限。
[进阶] Yasaman Bahri在Simon Institue的演讲:Understanding the Origins and Taxonomy of Neural Scaling Laws
Reference
GPT-4 Technical Report. OpenAI. 2023 https://arxiv.org/pdf/2303.08774.pdf
Kaplan, Jared, et al. “Scaling laws for neural language models.” arXiv preprint arXiv:2001.08361 (2020).
Hoffmann, Jordan, et al. “Training compute-optimal large language models.” arXiv preprint arXiv:2203.15556 (2022).
Touvron, Hugo, et al. “Llama: Open and efficient foundation language models.” arXiv preprint arXiv:2302.13971 (2023).
Touvron, Hugo, et al. “Llama 2: Open foundation and fine-tuned chat models.” arXiv preprint arXiv:2307.09288 (2023).
Gunasekar, Suriya, et al. “Textbooks Are All You Need.” arXiv preprint arXiv:2306.11644 (2023).
Li, Yuanzhi, et al. “Textbooks are all you need ii: phi-1.5 technical report.” arXiv preprint arXiv:2309.05463 (2023).
Chung, Hyung Won, et al. “Scaling instruction-finetuned language models.” arXiv preprint arXiv:2210.11416 (2022).
Yuan, Zheng, et al. “Scaling relationship on learning mathematical reasoning with large language models.” arXiv preprint arXiv:2308.01825 (2023).
Clark, Aidan, et al. “Unified scaling laws for routed language models.” International Conference on Machine Learning. PMLR, 2022.
Tworkowski, Szymon, et al. “Focused transformer: Contrastive training for context scaling.” arXiv preprint arXiv:2307.03170 (2023).
Chen, Yukang, et al. “Longlora: Efficient fine-tuning of long-context large language models.” arXiv preprint arXiv:2309.12307 (2023).
Li, Dacheng, et al. “LightSeq: Sequence Level Parallelism for Distributed Training of Long Context Transformers.” arXiv preprint arXiv:2310.03294 (2023).
Muennighoff, Niklas, et al. “Scaling Data-Constrained Language Models.” arXiv preprint arXiv:2305.16264 (2023).
Xue, Fuzhao, et al. “To Repeat or Not To Repeat: Insights from Scaling LLM under Token-Crisis.” arXiv preprint arXiv:2305.13230 (2023).
Gao, Leo, John Schulman, and Jacob Hilton. “Scaling laws for reward model overoptimization.” International Conference on Machine Learning . PMLR, 2023.

