AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


揭开OpenAI Scaling Laws面纱
发布日期:2024-04-16 06:52:04 浏览次数: 2023 来源:李rumor


《倚天屠龙记》中有一传说:“武林至尊,宝刀屠龙,号令天下,莫敢不从” ,为了得到屠龙刀江湖血雨腥风。但最后张无忌方知,所谓“武林至尊”,不在宝刀本身,而在刀中所藏的武穆遗书,以此兵法临敌,定能战必胜,攻必克,最终自是“号令天下,莫敢不从”。


同样,在 scaling laws 这个方向,似乎有一把屠龙刀的魅力,掌握 scaling laws 到底对大模型训练有什么帮助。


近期,美团发布的一项关于 scaling laws 的研究引起了不少关注。本文旨在解读该论文,感兴趣的同学可以将该论文和 OpenAI 原始论文一起研读,同时也期待更多 scaling laws 的研究。


Scaling laws 在大型模型训练的众多方面扮演着关键角色,诸如 GPT-4、Gemini 等模型的成就,都有 scaling laws 的深刻影响。尽管 OpenAI 在其早期的关于 scaling laws 的论文 [1] 中提出了基础理论,但该文缺乏一些具体的求解过程,且未能在更大规模的模型上进行验证。与此同时,后续研究,例如 DeepMind 的 ChinChilla [2] 还提出了不同的结论。 


针对这一点,该论文着手探究了原始 scaling laws 研究所遗漏的细节,力求复现一套可靠和精确的 scaling laws 公式。同时,它还揭示了 ChinChilla 研究结果与 OpenAI 理论不一致的根本原因(数据分布和长下文长度不同),以期为大模型训练领域提供更深入的洞察。


论文题目:
Unraveling the Mystery of Scaling Laws: Part I


论文地址:

https://arxiv.org/abs/2403.06563


论文作者:

Hui Su, Zhi Tian, Xiaoyu Shen, Xunliang Cai

作者单位:

Meituan Inc.




概述

1.1 Take-away


超参,例如批处理大小(batch size)、学习率(learning rate)和学习率调度器(learning rate scheduler),在模型的收敛速度上起着显著作用。然而,只要这些参数设置在一个合理的范围之内,并结合充足的训练步数与大量数据进行训练,它们对于最终的收敛损失(loss)值的影响可以忽略不计。 


调整 batch size 大小的主旨在于找到训练时间与计算资源消耗(也就是成本)之间的最佳平衡点。我们能够基于 loss 值确定一个关键的批处理大小(critical batch size),以实现时间和计算成本的相对最优。采用这一 critical batch size 进行训练,相较于使用无限大的 batch size(以实现最小训练步数),需要双倍的训练步数来达到同样的 loss 值。


上下文长度、tokenization、数据分布和模型架构本身,对于 scaling laws 公式中的系数有着显著的影响。然而,这些因素并不改变 scaling laws 的基本形式。这也解释了为何 ChinChilla 研究得出了不同的结论,因为它们在上下文长度和数据集方面有所不同。


当给定固定的上下文长度、tokenization、数据分布和模型以及 learning rate scheduler 时,我们发现,只要 lr 设置得当,训练步数、batch size 以及模型规模与 loss 之间存在着一种精确且可预测的幂律(power-law)关系。


通过对小于 60M 参数的模型进行训练,能够准确估计 scaling laws 公式中的各个系数,进而在训练高达 33B 参数的模型之前,预测以下几点:
  • 可能达到的最低 loss 值;
  • 达到特定 loss 所需的最少训练步数和数据量;
  • 在任何 loss 值下的 critical batch size;
  • 给定任意 batch size 下对应的完整 test loss 曲线。 


这种方法有助于我们在训练大型模型之前预设多个关键设置,如在固定计算预算内最优的模型规模和训练步数、所需的数据量,确保资源的高效利用。


1.2 Methods


本研究的核心目标在于深入探讨 OpenAI 最初提出的 scaling laws,这些理论内容非常广泛。然而,本文选择集中研究以下三个公式,因为它们对于大型模型的训练具有至关重要的指导作用。


通过这三个精选的公式,我们可以在训练过程启动之前,准确地预测大模型的训练行为。具体来说,这些公式的意义如下: 


1. L(N):预测训练参数数量为 N 的模型理想情况下的最终收敛损失(converged loss)。也就是说,当模型在无限量的训练数据上训练至完全收敛时,能够达到的 loss 极限值。


2. L(N, Smin):预测在特定的最小训练步数 Smin 下(此时假设 Batch Size 无限大),参数数量为 N 的模型每一步的 loss 值。这里的 Smin 是指在无限大的 Batch Size 情况下,达到特定 loss 值所需的最少训练步数。 


3. L(N, S, B):预测在给定训练步数 S 与任意 Batch Size B 下,参数数量为 N 的模型的测试 loss。显然基于此公式,我们可以绘制出 loss 值随训练步数变化的曲线。


1.2.1 如何确定L(N):给定参数量为N的模型,预测最终能达到的收敛loss


公式其中 是通过统计拟合得到的常数标量,N 是模型的参数量,L(N) 指模型能达到的收敛 loss。

前提条件:为了准确预测 L(N),首先假设模型能够接触到无限量的训练数据。在这样的假设下,模型将不会遇到过拟合问题,从而训练 loss 与测试 loss 趋势高度一致。实际上,对于很小的模型而言,一旦训练数据量达到数亿 tokens,便可视为接近无限数据。


求解方法:
  • 如何估计常数 为了获得这两个常数的估计值,我们可以训练一系列不同参数量的模型(比如,从 1M 到 60M),并在假设的无限数据量下训练至真正收敛,记录下每个模型的最终测试 loss。然后,利用这些模型的参数量(N)与对应的测试 loss(L)数据,通过线性回归方法来拟合出常数
  • 超参的容忍度:实验表明,只要超参(如 batch size、learning rate 和 learning rate scheduler)的设置处于合理的范围内,它们主要影响的是模型的收敛速度,而对最终的收敛 loss 影响不大。这意味着在估计 L(N) 时,无需对超参数进行细致调整,仅需采用一组固定的超参数设置即可。

1.2.2 如何确定L(N, Smin):模型参数量为N,在无限大batch size下,模型训练过程中每一步对应的loss


前提条件:为了准确预测 L(N, Smin),必须建立在无限大的 batch size 下训练模型的假设之上。在此条件下,随机梯度下降(SGD)演变为梯度下降(GD),此时,每一步的更新都基于整个数据集的梯度。此时的 Smin 指的是达到指定损失值所需要的最少训练步数。


求解方法:


公式,其中是前面确定的参数项,而 需要通过估计获得。

如何模拟无限 batch size?:实际上,我们无法进行真正的无限大 batch size 训练。但是,我们可以通过试验方法找到一个足够大的 batch size,使得进一步增加 batch size 不会减少达到特定 loss 值所需的训练步数,此时 loss 曲线将不再发生变化。此时,该足够大的 batch size 可以视为无限 batch size。

如何估计常数 :通过对一个很小参数量的模型(如 10M 参数量的模型)在无限大 batch size 下进行训练,并采用最优学习率设置。通过这种方式,能够收集到多个数据点。对公式两边取对数,并利用线性回归方法来估计

1.2.3 如何确定L(N, S, B):模型参数量为N,batch size B情况下,模型在训练步数S时的loss

前提条件:我们知道,对于达到到某个特定的 loss 值,当 batch size 越小,所需要的训练步数 S 就越多,当 batch size 无限大时,需要的最小训练步数就是 Smin。那么 Smin 与 batch size B 以及训练步数 S 之间的关系该如何建立?


定义 critical batch size Bcrit(L):Critical batch size 是指在给定 loss 值 L 下,在训练步数 S 与计算资源 E 两者之间权衡所对应的 batch size, Bcrit(L) = Emin / Smin。除了拥有平衡时间和金钱的物理意义,Bcrit(L) 还有一个非常奇妙的性质,它的值和对应的 loss 存在 power law 的关系
估计 Bcrit(L) 的关键常数 通过对固定大小模型使用不同的 batch size 进行训练,获得对应的 Emin 与 Smin 的估计值。通过相除估计 Bcrit(L) 的值,并通过线性回归求解
的转换:原文中通过推导,发现 和 S 可以通过 B 和 Bcrit(L) 进行转换, 将 Smin 替换后,我们能够得到有限 batch 大小 B 和损失值 L(N, S, B) 的具体公式。

数值估计 L(N, S, B):显然公式里损失值 L 无法直接求解,可以采用二分法来计算,这是因为它一定存在一个确定解。




实验详情
2.1 In-domain Data预测结果


1. 左半部分(Left):2B 参数的模型在 C4 测试数据上的 loss 曲线。图中比较了实际测试 loss (Actual Test Loss)和预测测试 loss (Predicted Test Loss)随着训练步数(Step)的变化。可以看到,在 warm-up stage 之后,实际 loss 和预测 loss 非常接近,预测的准确性很高。 


2. 右半部分(Right):33B 参数的模型在代码测试数据(code test data)上的 loss 曲线。同样地,除了在训练初期的 warm-up 阶段外,实际 loss 和预测 loss 在整个训练过程中也保持了很好的一致性。


2.2 Power项分析


Table 1 展示了在 C4 训练数据上,通过实验估计得到的 scaling laws 公式中的常数值。这些常数包括 αN、αS、αB、Nc、Sc 和 B∗, 表中列出了两组数据: 


1. C4 Value:第一行提供了在 C4 数据集上,通过本研究估计得到的常数值。这些值是通过训练最大参数量为 60M 的小型模型,并使用这些模型来估计 scaling laws 公式中的常数项得到的。 


2. [KMH+20]:第二行显示了 OpenAI 原始的 scaling laws 论文中在 WebText 训练数据上估计的常数值。 


这里可以重点关注 αN、αS、αB 这些 power 项,尽管这里和 OpenAI 使用了不同的数据集,但因为 C4 数据集与 WebText 数据集都是网页清洗的数据,两者的分布非常相似,于是可以看到在 C4 数据集上计算的 power 项与 WebText 数据集上的 power 项是非常相近的。


这反应出数据本身对 power 起到很大的影响。同时两个实验的长下文窗口长度也都是 1024,如果以 ChinChilla 使用的 2048 窗口大小去实验,则会导致 power 项非常不同。


2.3 Out-of-Domain Data 预测结果



相比于前面使用同分布的测试数据,这里的测试数据使用私有的中文数据,这类数据在训练数据中罕见因此可以认为是 Out-of-Domain(OOD) 的数据。


实验包括了三个不同规模的模型,分别是 500M、2B 和 33B 参数的模型,对于领域外数据,预测的 loss 曲线在训练初期与实际 loss 曲线存在波动,但整体趋势和最终的收敛 loss 值与预测值仍然相当接近。


这说明即使在领域外数据上,scaling laws 也能够提供很好的预测,这个实验结果反应了 oai scaling laws 在不同数据集和模型规模下的普适性,甚至是在处理不同分布的数据时。



一些讨论


1. 降低大模型试验成本:不仅仅是预测 loss,还可以帮助确定最佳的实验配置,大幅减少试验成本,使大模型的训练从试错过程转变为基于科学的方法。 


2. 确定模型大小 N 和训练步数 S:给定固定的计算资源的情况下,可以选择最优的模型大小和训练步数,这有助于避免资源浪费,并确保在预算限制下达到最佳性能。 


3. 确定数据混合比例:可以通过预测不同数据源上的测试 loss 曲线走势帮助确定最佳的数据混合比例,从而优化模型的预训练质量。 


4. 上下文长度的影响:上下文长度对公式中的 power 项有显著影响,需要针对不同的上下文长度重新计算系数。 


5. 探索新的结构:例如 MoE 等结构也有自己的 scaling laws,掌握 dense 模型的 scaling laws 可以帮助举一反三。




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询