最近一系列大型语言模型 (LLM) 正在崛起,其中最大的语言模型已经拥有超过 5000 亿个参数。这些大型自回归 transformer 通过使用各种评估协议(例如零样本、少样本和微调),在许多任务中表现出令人印象深刻的性能。
然而训练大型语言模型需要消耗巨大的计算和能源,并且这种消耗随着模型的增加而增加。在实践中,研究者事先分配的训练计算预算通常是预先知道的:有多少加速器可用以及我们想要使用它们多长时间。通常这些大模型只训练一次是可接受的,因此准确估计给定计算预算的最佳模型超参数至关重要。
Kaplan 等人研究 (2020) 表明,自回归语言模型 (LM) 中的参数数量与其性能之间存在幂律关系。结果是该领域一直在训练越来越大的模型,期望性能得到改善。Kaplan 等人(2020) 得出的一个值得注意的结论是,不应该将大型模型训练到其可能的最低损失,以获得计算的最佳化。
来自 DeepMind 的研究者得出了相同的结论,但他们估计大型模型可以训练的 token 数应该比作者推荐的更多。具体来说,假设计算预算增加 10 倍,其他研究者建议模型的大小应该增加 5.5 倍,而训练 token 的数量应该只增加 1.8 倍。相反,DeepMind 发现模型大小和训练 token 的数量应该以相等的比例扩展。
论文地址:https://arxiv.org/pdf/2203.15556.pdf
继 Kaplan 等人和 GPT-3 的训练设置研究之后,近期大型模型的训练 token 大约为 3000 亿个(表 1),这与增加算力时,主要采用增加模型大小结论一致。
在这项工作中,DeepMind 重新审视了这个问题:给定固定的 FLOPs 预算,应该如何权衡模型大小和训练 token 的数量?为了回答这个问题,DeepMind 将最终的预训练损失 𝐿(𝑁, 𝐷) 建模为模型参数数量 𝑁 和训练 token 数量 𝐷 的函数。由于计算预算 𝐶 是所见训练 token 和模型参数数量的确定性函数 FLOPs(𝑁, 𝐷),因此可以在约束 FLOPs(𝑁, 𝐷) = 𝐶 下最小化𝐿:
DeepMind 根据 400 多个模型的损失估计了这些函数,参数范围从 70M 到 16B 以上,并在 5B 到 400B 多个 token 上进行训练——每个模型配置都针对几个不同的训练范围进行训练。结果表明 DeepMind 方法得出的结果与 Kaplan 等人的结果大不相同,如下图 1 所示:
基于 DeepMind 估计的计算最优边界,他们预测用于训练 Gopher 的计算预算,一个最优模型应该是模型大小比之前小 4 倍,而训练的 token 应该是之前的 4 倍多。
为了证明这一点,DeepMind 训练了一个更优计算的 70B 模型 Chinchilla,具有 1.4 万亿个 token。Chinchilla 不仅性能优于模型更大的 Gopher,而且其减小的模型尺寸大大降低了推理成本,并极大地促进了在较小硬件上的下游使用。大型语言模型的能源成本通过其用于推理和微调的用途来摊销。因此,经过更优化训练的较小模型的好处,超出了其性能改善的直接好处。
特斯拉人工智能和自动驾驶视觉总监 Andrej Karpathy 表示:Chinchilla 是一个新的语言模型(70B),它优于 Gopher (280B), GPT-3 (175B), Jurrasic-1 (178B), MT-NLG (530B) 大模型。这是关于语言模型(LM)新的扩展定律非常重要的论文。
估计最优参数 / 训练 tokens 分配
研究者提出三种不同的方法来解答推动本项研究的问题:给定固定的 FLOPs 预算,应该如何权衡模型大小和训练 tokens 的数量?在所有三种情况下,研究者首先训练了一系列参数和训练 tokens 都不同的模型,并使用得出的训练曲线来拟合模型扩展的经验估计器(empirical estimator)。
三种方法的预测结果类似,表明模型参数和训练 tokens 的数量应该随着计算量的增加而增加,比例如下表 2 所示。这与以前有关该主题的工作形成鲜明对比,值得进一步研究。
方法 1:固定模型大小,改变训练 tokens 数量
对于第一种方法,研究者改变了固定参数模型(从 70M 到 10B 参数)的训练步数,为每个模型训练了 4 个不同数量的训练序列。运行之后,他们能够直接提取给定训练 FLOPs 所达到的最小损失的估计值。训练曲线如下图 2 所示。
方法 2:IsoFLOP
在第二种方法中,研究者针对 9 种不同的训练 FLOP(从 6 × 10^18 到 3 × 10^21 FLOPs)改变模型大小,并考虑到了每个点的最终训练损失。与方法 1 整个训练运行中考虑点(𝑁, 𝐷, 𝐿)形成了对比,这使得直接回答以下问题:对于给定的 FLOP 预算,最优参数数量是多少?下图 3 为 IsoFLOP 曲线。
方法 3:拟合一个参数损失函数
最后,研究者将方法 1 和 2 中实验的所有最终损失建模为一个包含模型参数和可见 tokens 数量的参数函数。遵循经典的风险分解,他们提出了如下函数形式:
为了估计(𝐴, 𝐵, 𝐸, 𝛼, 𝛽),研究者使用 L-BFGS 算法来最小化预测和观察到对数损失(log loss)之间的 Huber 损失。
他们通过从初始化网格中选择最佳拟合来考虑可能的局部最小值。Huber 损失(𝛿 = 10^−3)对异常值具有鲁棒性,这点对于留出数据点实现良好预测性能非常重要。
此外,研究者在下图 4(左)中展示了拟合函数的等值线,并以蓝色代表闭合形式(closed-form)的高效计算边界。
最优模型扩展
研究者发现,以上三种方法尽管使用了不同的拟合方案和不同的训练模型,但对有关 FLOPs 的参数和 tokens 的最优扩展产生了可比较的预测。它们都表明了,随着计算预算的增加,模型大小和训练数据量应该以大致相同的比例增加。其中,第一种和第二种方法对最优模型大小的预测非常相似,第三种方法在更多计算预算下能够最优地预测更小模型。
在下表 3 中,研究者展示了 FLOPs 和 tokens 的估计量,以确保给定大小的模型位于计算最优边界上。结果表明,考虑到各自的计算预算,当前一代的大规模语言模型「过于大了」。
新模型 Chinchilla
根据上文的分析,Gopher 模型的最优模型大小介于 40B 到 70B 参数之间。出于数据集和计算效率的考虑,研究者训练了一个 70B 参数、1.4T tokens 的模型,称之为 Chinchilla,并与 Gopher 和其他大规模语言模型进行了比较。注意,Chinchilla 和 Gopher 的训练 FLOPs 相同,但模型大小和训练 tokens 不同。
由于 Chinchilla 的参数量为 Gopher 的 1/4,因而它的内存占用和推理成本更小。
模型参数
Chinchilla 的训练超参数及其与 Gopher 的比较如下表 4 所示。两者使用了相同的模型架构和训练设置,但在 head 数量、批大小等方面有所不同。
实验结果
研究者对 Chinchilla 进行了广泛的评估,与各种大规模语言模型在 Rae et al. (2021)提出的很多任务上展开了比较。这些任务包括语言建模(LM)、阅读理解、问答、常识、MMLU 和 BIG-bench,具体如下表 5 所示。
语言建模任务。如下图 5 所示,Chinchilla 在 The Pile 的所有评估子集上均显著优于 Gopher。
多任务语言理解(MMLU)任务。大规模 MMLU 基准测试包含一系列与学科类似的考试问题。在下表 6 中,研究者展示了 Chinchilla 在 MMLU 上的平均 5-shot 性能。可以看到,尽管规模小得多,但 Chinchilla 明显优于 Gopher,平均准确率为 67.6%,比 Gopher 提高了 7.6%。并且,Chinchilla 的准确率甚至超过了 2023 年 6 月专家预测的 63.4% 。
在图 6 中,DeepMind 展示了按任务细分结果与 Gopher 的比较。总的来说,研究发现 Chinchilla 提高了绝大多数任务的性能。在四个任务(college_mathematics、econometrics、moral_scenarios 和 formal_logic)上,Chinchilla 的表现不如 Gopher,并且在两个任务上的表现没有变化。
阅读理解。在单词预测数据集 LAMBADA 上,Chinchilla 达到了 77.4% 的准确率,而 Gopher 和 MT-NLG 530B 的准确率分别为 74.5% 和 76.6%(见表 7)。在 RACE-h 和 RACE-m 上,Chinchilla 的性能大大优于 Gopher,两种情况下的准确率都提高了 10% 以上。
BIG-bench。DeepMind 在 BIG-bench 任务上评估了 Chinchilla,与 MMLU 中观察到的情况类似,Chinchilla 在多项任务上优于 Gopher。
其他更多实验结果详见论文。