跳到正文
← 返回文章

技术分享

LLM Scaling Laws 论文摘录 - Scaling Laws for Neural Language Models

6 分钟读完1,601 字更新于 2024年6月23日

引用

BibTeX

@misc{llm-scaling-laws-scaling-laws-for-neural-language-models,
  author = {Jingxi Qiu},
  title = {LLM Scaling Laws 论文摘录 - Scaling Laws for Neural Language Models},
  howpublished = {Jingxi Qiu},
  year = {2024},
  url = {https://mouwumou.github.io/zh/blog/llm-scaling-laws-scaling-laws-for-neural-language-models/}
}

APA

Qiu, J. (2024). LLM Scaling Laws 论文摘录 - Scaling Laws for Neural Language Models. In Jingxi Qiu.

MLA

Qiu, Jingxi. “LLM Scaling Laws 论文摘录 - Scaling Laws for Neural Language Models.” Jingxi Qiu, 2024.

Chicago

Qiu, Jingxi. 2024. “LLM Scaling Laws 论文摘录 - Scaling Laws for Neural Language Models.” In Jingxi Qiu. Preprint.

✋ 许多人都认为大模型的性能和模型的结构、大小、训练计算量、数据集大小有关,但是究竟这些因素如何影响大模型的最终性能?了解这些可以帮助更好地决定究竟投入那些资源来训练所需的模型

背景和内容

OpenAI在2020年发布了《Scaling Laws for Neural Language Models》探讨Scaling Laws(缩放法则),在其中探讨了对于基于Transformerde的大模型的Training Loss与模型参数规模N,数据集大小D,计算量C之间的联系。

而在2022年四月谷歌DeepMind在文章《Training Compute-Optimal Large Language Models》中重新讨论了Scaling Laws,他们指出当前的大模型都明显缺乏足够的训练,在使用四倍的数据(相较于280B参数Gopher)训练70B的Chinchilla后取得了更好的成绩(SOTA average accuracy of 67.5% on the MMLU benchmark, 7% increasement)。

然而,在2023年二月由Thaddée Tyl发布的博客《Chinchilla’s Death》(Chinchilla之死)中,指出,只要训练足够长时间,小模型也能超过大模型。

论文

Scaling Laws for Neural Language Models

主要发现

  1. 模型性能随模型大小N,数据大小D和计算量大小C的增加而提高,和模型形状(深度宽度)与自注意力头弱相关
  2. 在其他因素不受限的情况下,模型大小N、数据大小D、计算量大小C与性能存在幂律关系
  3. 同时扩大模型大小N和数据大小D可以提升模型性能,但是文章研究认为当模型大小增加8倍时,数据大小只需要增加5倍,这种情况下不会受到性能惩罚
  4. 由于训练曲线遵从幂律关系,损失与模型大小无关,因此我们可以大致预测后续训练的损失
  5. ?在迁移到另一个与训练集不同的数据集上时存在一个惩罚(更大的误差),但是这一个惩罚是恒定的,这意味着其他的提升是共通的
  6. 大模型相对于小模型有更高的样本效率(sample-effcient),达到相同的水平只需要使用更少的训练(Figure 2)和更少的数据(Figure 4)

Untitled.png

Untitled.png

  1. 收敛是低效的,在计算量大小C固定时,可以在模型没完全收敛之前停止训练来获取最佳性能(Figure 3)。论文给出参考关系为DC0.27D\sim C^{0.27}

这张图体现了在相同的计算量大小C的情况下,来自于不同因素究竟有多少贡献。首先是模型大小,其次是数据(通过更大的batch size和减少复用),而Serial Steps(更多的训练次数)帮助并不大

  1. 训练的理想batch size应该是训练的幂,并通过梯度噪音尺度(gradient noise scale)继续确定

Scaling Law 总结

参数:

non-embedding parameters NN

the dataset size DD

optimally allocated compute budget CminC_{min}

在其他两因素不受限的情况下,测试损失可以由以下公式预测:

  1. N受限
L(N)=(Nc/N)αN\begin{equation} L(N)=(N_c/N)^{\alpha_N} \end{equation} αN0.076,Nc8.8×1013(non-embedding parameters)\alpha_N \sim 0.076,N_c \sim 8.8 \times 10^{13} \text{(non-embedding parameters)}
  1. D受限(with early stopping)
L(D)=(Dc/D)αD\begin{equation} L(D)=(D_c/D)^{\alpha_D} \end{equation} αD0.095,Dc5.4×1013(tokens)\alpha_D \sim 0.095, D_c \sim 5.4 \times 10^{13}\text{(tokens)}
  1. C受限
L(Cmin)=(Ccmin/Cmin)αmin\begin{equation}L(C_{min})=(C^{min}_c/C_{min})^{\alpha_{min}} \end{equation} αCmin0.050,Ccmin3.1×108(PF-days)\alpha_C^{min} \sim 0.050, C^{min}_c \sim 3.1 \times 10^8 \text{(PF-days)}

公式含义:

在以上三个公式中,αN,αD,αCmin\alpha_N, \alpha_D, \alpha_C^{min}给出了当我们提升N,D,CminN,D,C_{min}时性能提升的幂次。

举个例子,当我们将模型的参数量提升到两倍时,模型的损失将会减小,2αN0.952_{-\alpha_N}\approx 0.95,因此损失将会是此前的0.95倍。而NC,DC,CCminN_C,D_C,C_C^{min}的准确数字基于字典大小和tokenization因此没有实际意义,只代表数量级关系。

此外,文章还提到了batch size和loss的关系

Bcrit(L)=BL1/aB\begin{equation}B_{crit}(L)=\frac{B_*}{L^{1/a_B}} \end{equation} B2108tokens,αB0.21B_* \sim 2\cdot10^8 \text{tokens}, \alpha_B\sim0.21

根据此前公式(1)和公式(2)可以得出,当我们提升模型大小时,我们应相应地增加数据集的数量,可以根据计算得出DNαNαDN0.74D\propto N^{\frac{\alpha_{N}}{\alpha_D}} \sim N^{0.74}。他们还发现一个结合(1)和(2)的公式来控制N和D的依赖以及控制过拟合:

L(N,D)=[(NcNαNαD+DcD)]αD\begin{equation}L(N,D)=\left[\left(\frac{N_c}{N}^{\frac{\alpha_N}{\alpha_D}}+\frac{D_c}{D} \right) \right]^{\alpha_D}\end{equation}
  • 作者推测这个函数也能生成其他生成式任务的最大对数似然

训练的曲线也可以由训练step数得出,因此可以求得最佳训练step数

L(N,S)=(NcN)αN+(ScSmin(S))αS\begin{equation}L(N,S)=\left(\frac{N_c}{N}\right)^{\alpha{N}}+\left(\frac{S_c}{S_{min}(S)}\right)^{\alpha_S}\end{equation}

Sc2.1×103,αS0.76S_c \approx 2.1 \times 10^3,\alpha_S \approx 0.76 Smin(S)S_{min}(S) is the minimum possible number of optimization steps (parameter updates) estimated using Equation

在固定计算量C的情况下,又得出了以下关系公式

NCαCmin/αN,BCαCmin/αB,SCαCmin/αS,D=BS\begin{equation}N \propto C^{\alpha^{min}_C /\alpha_N}, B \propto C^{\alpha^{min}_C /\alpha_B}, S \propto C^{\alpha^{min}_C /\alpha_S}, D = B \cdot S\end{equation}

此处有

αCmin=1/(1/αS+1/αB+1/αN)\begin{equation}\alpha^{min}_C=1/(1/\alpha_S+1/\alpha_B+1/\alpha_N)\end{equation}

可得NCmin0.73,BCmin0.24, and SCmin0.03N \propto C^{0.73}_{min}, B \propto C^{0.24}_{min},\text{ and }S \propto C^{0.03}_{min},此处提出观点:

  1. 当计算量C预算提升的时候,应该主要将其用于更大的模型,而不是更多的训练时间和数据大小。
  2. 同时当模型变得更大时,他们变得更加sample efficient。

研究方法

研究在数据集WebText2及其拓展(2.29×10102.29\times 10^{10} tokens),tokenize方法为 byte-pair encoding,词汇大小nvocab=50257n_{vocab}=50257,性能指标(Loss)为在1024个token上下文的中的交叉熵损失。模型使用的是decoder-only的Transformer,同时训练了LSTM和其他类型的Transformer作为比对。

除特别说明外,模型的训练使用了Adam优化器和2.5×1052.5 \times 10^5步,batch size为512,上下文512 token。由于内存限制,最大的模型使用了Adafactor优化器。

除特别说明外,训练的学习率是一个3000步的热身和一个cosine decay余弦衰减到零。

模型的参数计算方法

为了计算模型参数和计算量,模型的超参数定义为:

nlayern_{layer} 层数 number of layers
dmodeld_{model} 残差流的维度 dimension of the residual stream
dffd_{ff} 前馈层(全连接)的维度 dimension of the intermediate feed-forward layer
dattnd_{attn} 注意力输出的维度 dimension of the attention output
nheadsn_{heads} 每层注意力头数量 number of attention heads per layer
nctxn_{ctx} 上下文词元数量,除另说明外为1024 input context

使用NN代表模型的参数大小,这里定义为除去embedding的参数:

N2dmodelnlayer(2dattn+dff)=12nlayerdmodel2\begin{aligned} N&\approx 2d_{model}n_{layer}(2d_{attn}+d_{ff}) \\ &= 12n_{layer}d^2_{model}\end{aligned} dattn=dff/4=dmodeld_attn=d_{ff}/4=d_{model}

这里省去了embedding层的nvocabdmodeln_{vocab}d_{model}nctxdmodeln_{ctx}d_{model}参数,向前传递大概需要计算量CC如下表示:

Cforward2N+2nlayernctxdmodelC_{forward} \approx 2N+2n_{layer}n_{ctx}d_{model}

Untitled.png

实验结果

实验变量:

  • 模型大小(非嵌入参数从768个到15亿个不等)
  • 数据集大小(从2200万到230亿个token)
  • 形状(包括深度、宽度、注意力头和前馈维度)
  • 上下文长度(1024,但也会尝试更短的上下文)
  • 批量大小(2192^{19},但也会改变它以测量临界批量大小)

Untitled.png

Untitled.png

结论:

  1. 在非嵌入模型大小NN固定的情况下模型的形状对性能的影响很小,调整很大也只影响几个百分点
  2. 如果计算嵌入的参数大小,那模型的性能和层数有较大关联(左图),但是如果去掉嵌入层的参数大小,则除了小于两层的模型,不同层数模型的性能基本在同一个趋势上(右图)。
  3. 在LSTM上同样适用,但是LSTM性能比Transformer差一点
  4. 幂律定理公式成立:
L(N)(Nc/N)αNL(D)(Dc/D)αDL(Cmin)(Ccmin/Cmin)αmin\begin{align}L(N)&\approx(N_c/N)^{\alpha_N} \\ L(D)&\approx (D_c/D)^{\alpha_D} \\ L(C_{min})&\approx(C^{min}_c/C_{min})^{\alpha_{min}} \end{align}

Training Compute-Optimal Large Language Models

参考

[1] https://arxiv.org/pdf/2001.08361.pdf

[2] https://arxiv.org/pdf/2203.15556.pdf

[3] https://espadrine.github.io/blog/posts/chinchilla-s-death.html

[4] https://arxiv.org/pdf/2109.10686.pdf

[5] https://self-supervised.cs.jhu.edu/sp2023/files/17.retrieval-augmentation.pdf

#LLM#NLP#AI#论文摘录

相关文章