AI 文摘

LLM训练指南-Token及模型参数准备





作者: AINLP 来源: AINLP

引言

在当今AI领域,大型预训练语言模型已成为一种关键技术,推动了自然语言处理领域的进步。本文旨在提供一个辅助指南,如何准备预训练模型大小、数据集大小,以及帮助读者了解如何提升预训练模型的表现。本文将分析模型表现的依赖因素,以及预训练Token是否需要重复和SFT模型所需数据量等问题。

本文得出的结论如下,详细过程见下文分析:

预训练模型表现影响因素:

  • 模型表现强依赖于模型规模(模型参数量N(Embedding除外)、训练Token数D、训练总计算量C);

  • 平滑幂定律:模型表现与三个因子均遵循幂定律,不受另外两个因子限制;

  • 在给定计算量预算下,模型参数量以及训练Token数应该同比提升,对应模型参数量需要的训练Token数如下:

ParametersFLOPsFLOPs (in Gopher unit)Tokens

400 Million 1.92e+19 1//29,968 8.0 Billion

1 Billion 1.21e+20 1//4,761 20.2 Billion

10 Billion 1.23e+22 1//46 205.1 Billion

67 Billion 5.76e+23 1 1.5 Trillion

175 Billion 3.85e+24 6.7 3.7 Trillion

280 Billion 9.90e+24 17.2 5.9 Trillion

520 Billion 3.43e+25 59.5 11.0 Trillion

1 Trillion 1.27e+26 221.3 21.2 Trillion

10 Trillion 1.30e+28 22515.9 216.2 Trillion

预训练数据Token重复的影响:

  • 多轮epoch的训练会降低模型性能;

  • 更大规模的数据集会缓解重复epochs对模型性能下降的影响;

  • 提高数据集的质量也无法挽救重复训练带来的过拟合;

  • 小计算量模型的过拟合趋势与大计算量的差不多;

  • 多样的训练目标不一定减轻多Epoch的性能下降;

  • Dropout是一个被大语言模型忽视的正则技术,虽然慢,但是可以降低多epochs的影响;

  • 在训练过程中逐渐使用dropout是有效的策略;

SFT需要训练Token数:

  • 少量高质量、多样性的数据,也可以训练出效果优秀的SFT模型

预训练模型表现的影响因素

该部分将通过OpenAI和DeepMind的两篇文章介绍影响模型性能的因素,以及在给定预算下如何准备模型、训练数据。有意思的是OpenAI先提出的观念在后来被DeepMind证伪,二者的观念对比如下:

OpenAIDeepMind

结论(假设计算预算增加10倍) ,根据该公式,模型大小增加倍,训练Token增加倍 模型大小及训练Token同比增加倍

参数设置 模型大小768~1.5B;Token数22M~23B;大部分参数量在100M 模型大小70M-10B;Token数1B~100B;大部分参数量超过500M

实验设置 固定学习率设置方法 cosine余弦学习率循环长度与Token一致

原文对应如下:

Specifically, given a 10× increase computational budget, they suggests that the size of the model should increase 5.5× while the number of training tokens should only increase 1.8×. Instead, we find that model size and the number of training tokens should be scaled in equal proportions.

DeepMind指出OpenAI得出错误结论的原因可能源于以下几点:

  1. 对于不同训练Token数,OpenAI采用了同样的学习率调度策略;

  2. OpenAI实验的模型参数量普遍较小;

原文对应如下:

For a fixed learning rate cosine schedule to 130B tokens, the intermediate loss estimates (for 𝐷 0 « 130B) are therefore overestimates of the loss of a model trained with a schedule length matching 𝐷 0 . Using these intermediate losses results in underestimating the effectiveness of training models on less data than 130B tokens, and eventually contributes to the conclusion that model size should increase faster than training data size as compute budget increases. In contrast, our analysis predicts that both quantities should scale at roughly the same rate. Secondly, we include models with up to 16B parameters, as we observe that there is slight curvature in the FLOP-loss frontier (see Appendix E)—in fact, the majority of the models used in our analysis have more than 500 million parameters, in contrast the majority of runs in Kaplan et al. (2020) are significantly smaller—many being less than 100M parameters.

OpenAI:语言模型缩放法则

论文标题 :Scaling Laws for Neural Language Models

论文链接 :https://arxiv.org/pdf/2001.08361v1.pdf

研究背景 :论文将从模型架构、模型大小、训练时所用的计算能力和可用于训练的数据等方面,以Transformer架构为重点,实证研究语言模型损失与这些因素之间的关系。

首先,让我们来介绍文章中展示的三张图,随后将概述文章的核心观点:

图1表明,语言模型表现与模型参数量N(Embedding除外)、训练Token数D、训练总计算量C都呈现幂定律。

图2表明,模型大小从768~1.5B在不同Token数(22M-23B)上训练的过程。

图3表明,随着计算量增加需要了解计算资源如何高效的分配。论文中以计算能力增加10亿倍为例,对于最优效率训练,大部分计算资源用于增加模型大小,小部分用于数据增加,同时数据增加大部分用于增加batch大小,很少用于增加模型串行训练的step数。

关键结论:

  • 模型表现强依赖于模型规模(模型参数量N(Embedding除外)、训练Token数D、训练总计算量C);

  • 平滑幂定律:模型表现与三个因子均遵循幂定律,不受另外两个因子限制;

  • 过拟合的通用性:当同时提升N/D时,模型性能提升;但如果固定其中一个,模型表现取决于比例N^{0.74}/D.(与下文DeepMind工作冲突)

  • 训练的通用性:训练曲线遵循可预测的幂律,其参数独立于模型大小。通过推断训练曲线的早期部分,可以大致预测如果训练更长时间会达到的损失。

  • 迁移学习表现与测试性能相关:当在不同于训练分布的文本上评估模型时,结果与训练验证集上的结果强相关,并且损失大致上存在一个恒定的偏差。换句话说,将模型迁移到不同的分布会产生一个恒定的偏差,模型在训练集上的表现越好,迁移学习的效果也越好。

  • 样本效率:大模型比小模型更具样本效率,可以通过更少的优化步骤和更少的数据达到相同的性能水平。

  • 收敛效率低:在固定的计算预算C下,但没有其他限制的情况下,通过训练非常大的模型并在收敛之前显著停止,可以获得最佳性能。因此,最大计算效率的训练将比基于更多样本训练小型模型收敛的效率高得多,随着训练计算的增加,数据需求增长非常缓慢,即 D ∼ C ^{0.27}。

  • 最佳的batchsize:这些模型的理想batchsize仅与损失的幂指数相关,并且可以通过测量梯度噪声尺度[MKAT18]来确定;对于可以训练的最大模型,在收敛时Token数大约为1-2百万。

总体来说,这些结果表明,随着适当地提高模型大小、数据和计算能力,语言建模性能会平稳、可预测地提高。更大的语言模型将比其他模型表现更好,并且更具样本效率。

论文中缩放定律总结如下:

  1. 当训练Token数足够,模型参数量有限情况下,模型性能与模型参数的关系如下:

  2. 当模型参数量足够,训练Token数有限情况下,模型性能与模型参数的关系如下:

  3. 当模型参数量、训练Token足够,计算量预算有限的情况下,模型性能与模型参数关系如下:

文中表明上述三个关系在多个数量级上均成立,他们的幂指数含义代表当对应参数成倍增加时,loss性能变化的幅度。比如当模型参数量提高两倍对应Loss缩放到:

  1. 模型训练的batch_size与模型性能也呈现如下幂律关系:

比如当L变一半的时候,batch_size变化如下:

  1. 当提升模型大小后,为保证模型性能,需要提升训练Token数:

根据模型性能与模型参数量N、训练Token数D的关系,可以得到模型性能与二者的联合关系:

图4中左边小图对应模型性能与模型参数量N、训练Token数D的关系,右边小图对应模型性能与给定模型、训练步数的关系,对应公式见上下文。

  1. 模型性能与给定模型、训练步数的关系如下:

is the minimum possible number of optimization steps (parameter updates)

  1. 给定固定的计算量预算C,根据上述计算等式,模型参数量N、训练batch_size B、训练步数S、训练Token数D的增长关系如下:

其中,经过拟合之后,各参数值如下:

这也意味着,当计算预算增加时,模型参数增加带来收益最大。

DeepMind:大模型训练计算优化实证分析

论文标题 :Training Compute-Optimal Large Language Models

论文链接 :https://arxiv.org/pdf/2203.15556.pdf

核心问题 :给定训练参数量的情况下,如何配置模型参数量以及训练Token数。

Given a fixed FLOPs budget, how should one trade-off model size and the number of training tokens?

在文中,作者探讨了三种不同的策略来评估和确定在给定训练参数量的情况下,最佳的模型参数量与训练 Token 数的配比:

  • 方法一:固定模型大小,改变训练Token数;

  • 方法二:等值浮点运算能力剖析(IsoFLOP profiles);

  • 方法三:拟合参数损失函数;

图1的含义介绍如下:

  • 横坐标代表训练的总计算量;

  • 纵坐标代表模型的参数量;

  • 黑色虚线代表Kaplan等人提出的缩放法则;

  • 3条Approach方法代表本文预测的三条线;

  • Chinchiilla和Gopher是有着相同的横坐标,即拥有相同的训练计算量,而Chinchiilla在模型参数上是Gopher参数的1/4,在训练Token数是Gopher的4倍;

这三种方法都得出了一致的结论,但这个结论与 OpenAI 提供的观点有所不同。

下面同样通过几幅图介绍三种方式的结论:

图2的含义介绍如下:

  • 实验方式:固定模型大小(模型大小70M到10B),改变训练Token数;

  • 第一个图横坐标代表训练的总计算量,纵坐标代表训练的Loss,曲线表示不同模型参数;

  • 第二个图横坐标代表训练的总计算量,纵坐标代表训练Loss最低的模型参数量;

  • 第三个图横坐标代表训练的总计算量,纵坐标代表训练Loss最低的训练Token数;

  • 绿色的线表示在给定训练总计算量(5.76x10^23)情况下,最优的模型参数量及训练Token数;

图3的含义如下:

  • 实验方式:固定训练总计算量,改变模型大小;

  • 第一个图横坐标代表模型参数量,纵坐标代表训练的Loss,曲线表示不同训练总计算量;

  • 第二个图横坐标代表训练的总计算量,纵坐标代表训练Loss最低的模型参数量;

  • 第三个图横坐标代表训练的总计算量,纵坐标代表训练Loss最低的训练Token数;

  • 绿色的线表示在给定训练总计算量(5.76x10^23)情况下,最优的模型参数量及训练Token数;

方案三:根据上述两个实验结果进行数学建模,拟合LOSS与模型参数量和训练Token数的关系

公式介绍:

  • E为数据分布上的理想Loss,对应自然文本的熵;

  • N对应模型参数量,第二项表示模型参数量N低于理想loss,参数量越大该项损失越小;

  • D对应数据集Token数,第三项表示模型未被训练收敛,Token数越多该项损失越小;

损失函数如上,通过L-BFGS算法优化,Hubert损失具有良好的外推性。

为了估计模型参数量与训练Token数的关系,假设约束条件为FLOPs(N,D)=6ND

图4的含义如下:

  • 第一个图横坐标代表不同训练总计算量,纵坐标代表模型参数量,曲线表示拟合的Loss曲线,每一个点是前两个数据中的L(N,D),蓝色的线是拟合的参数量与训练Token函数;

  • 第二个图横坐标代表模型参数量不同,纵坐标代表训练的Loss,曲线表示训练总计算量,每一个点是前两个数据中的L(N,D);

模型参数估计

这三个实验得到了相同的结论:计算量增加后,模型参数量大小与训练Token数应该同比增加。根据方法1,预测的模型大小需要的训练Token数如下表:

ParametersFLOPsFLOPs (in Gopher unit)Tokens

400 Million 1.92e+19 1//29,968 8.0 Billion

1 Billion 1.21e+20 1//4,761 20.2 Billion

10 Billion 1.23e+22 1//46 205.1 Billion

67 Billion 5.76e+23 1 1.5 Trillion

175 Billion 3.85e+24 6.7 3.7 Trillion

280 Billion 9.90e+24 17.2 5.9 Trillion

520 Billion 3.43e+25 59.5 11.0 Trillion

1 Trillion 1.27e+26 221.3 21.2 Trillion

10 Trillion 1.30e+28 22515.9 216.2 Trillion

局限性:

  • 由于资源有限,只对比了两个模型(Chinchilla VS Gopher),没有在中间规模进行测试;

  • 假设的是在计算预算、模型大小和训练 token 数之间的有效计算边界可以用幂律关系来描述。然而,在高计算预算下,观察到log(N_{opt})的凹性,这表明仍有可能高估大型模型的最优规模;

  • 训练运行均在少于一个epoch的数据上进行,未来可以考虑多个epoch数据。

疑问点:

  1. 所得到的拟合公式,在更大规模的数据及模型上,是否有效?即公式的泛化性是否足够;

  2. 模型Loss能否很好的反馈模型性能,在下文也提及PPL无法正确反应模型生成质量。

重复Token对模型性能的影响

参考链接 :https://mp.weixin.qq.com/s/DBP_eafGeKMEuSIma9Z9Tg

论文名称 :To Repeat or Not To Repeat: Insights from Scaling LLM under Token-Crisis

论文链接 :https://arxiv.org/pdf/2305.13230.pdf

在传统的深度学习模型训练中,epoch的设置可以类似于传统机器学习模型训练的迭代次数,一般认为越多的epoch会让模型拟合得越好。

然而,在LLM时代,很多模型的epoch只有1次或者几次。例如,2022年谷歌的PaLM模型,其训练的epoch数量只有1。而MetaAI训练的LLaMA模型,在不同数据集上训练的epoch设置都是1-2。这似乎与我们之前理解的模型训练充分有不一致。那么,为什么这些大语言模型的epoch次数都很少。如果我们自己训练大语言模型,那么epoch次数设置为1是否足够,我们是否需要更多的训练?该部分介绍的大纲如下:

  • 为什么要考虑在重复的数据集上做多次训练?

    • 1、Token危机
  • 预训练数据集重复的影响是什么?

    • 1、模型参数规模与tokens数量需要匹配

    • 2、多轮epoch的训练会降低模型性能

  • 影响多次Epochs训练效果下降的原因是什么?

    • 3、更大规模的数据集会缓解重复epochs对模型性能下降的影响

    • 4、提高数据集的质量也无法挽救重复训练带来的过拟合

    • 5、参数数量和FLOPs在重复训练上的影响

    • 6、小计算量模型的过拟合趋势与大计算量的差不多

    • 7、多样的训练目标可以减轻多Epoch下降吗?

  • 正则化可以降低多epochs的影响吗

    • 8、Dropout是一个被大语言模型忽视的正则技术,虽然慢,但是可以降低多epochs的影响

    • 9、在训练过程中逐渐使用dropout是有效的策略

    • 10、dropout对不同规模模型的影响不同

    • 11、通过MoE扫描确定稠密模型的最佳超参数

  • 多epochs训练对大语言模型性能影响的总结

为什么要考虑在重复的数据集上做多次训练?

在此前的研究中,大家发现大语言模型的规模和训练数据集中tokens的数量对模型的性能有很大的影响。大模型缩放定律都认为模型的规模与训练数据的规模必须同时扩大才能让模型产生更好的性能。但是,tokens数量似乎并不是很足够,如下图所示是作者研究的模型参数规模增长和目前互联网是可用的数据集tokens数量增长情况:

在这幅图中,蓝色的虚线是互联网上数据集中tokens数量预估结果,高质量文本中tokens数量每年增长只有4%-5%,与世界经济增长率差不多,但是显著慢于模型规模的增长。例如,MetaAI训练的LLaMA-65B模型用了1.4万亿tokens,而2023年全球的tokens估计只有9万亿!按照目前模型规模的发展情况,在2023年-2027年几年的时间里,我们的模型将把全球所有数据集的tokens都训练完成,此后,我们很可能陷入缺少tokens训练的地步,这被作者称为tokens危机。

这就很自然的让大家想到,我们是否可以通过增加训练的epochs来做重复的训练,以提高模型的效果?在如Vision Transformers这样的模型中,模型训练的epochs高达300次,而大语言模型的训练epochs通常都是1-2次,多的也都是个位数。2022年,Hoffmann的论文中提出用重复的tokens训练大语言模型会让模型降低性能,而Taylor在训练Galactica模型时候发现epochs次数达到4次也可以提升模型效果。显然,在重复数据集上训练多次对模型的影响目前还没有一个相对完善的研究。但是这个问题很重要!

因此,新加坡国立大学的研究人员做了这项研究,系统性分析了大语言模型epochs的设置影响,从3个方面得出了11个结论!本文将主要总结一下这些结论。

预训练数据集重复的影响是什么?

1. 模型参数规模与tokens数量需要匹配

首先是模型参数规模的增长与模型需要的tokens数量基本是呈线性的。可以参见第一部分:

这意味如果你要充分训练一个LLM,需要根据它的参数数量来收集足够的tokens。

2. 多轮epoch的训练会降低模型性能

作者分别使用C4数据集的子集,然后只是用了其中一部分数据集,并通过设置多次epochs来让模型总的训练过的tokens差不多水平,观察模型的性能。

如下图所示,可以看到,数据集重复的次数越多,模型的性能越差:

此外,如果tokens数量不够,模型参数规模越大,越容易出现过拟合的现象!

影响多次Epochs训练效果下降的原因是什么?

3、更大规模的数据集会缓解重复epochs对模型性能下降的影响

在这个实验中,作者将重复的次数固定,然后看模型在不同规模数据集上重复训练的性能影响。如下图所示:

可以看到,当在个tokens和个tokens上重复训练次之后发现,前者更容易出现过拟合,而tokens的数据集上重复训练,模型性能下降不明显。

4、提高数据集的质量也无法挽救重复训练带来的过拟合

Taylor在训练Galactica模型时候认为他之所以用4epochs能提高训练效果可能是因为他的数据集质量更好。然而,本文的作者发现,相对更高质量的数据集并不能降低重复训练带来的影响。

作者用相同的重复策略在C4数据集和Wikipedia数据集上分别训练模型,发现二者都会因为重复训练带来模型性能的下降。这里的Wikipedia数据集质量相对C4更好一点。说明相对提高数据集质量可能不会影响重复训练的负面效应。

5、参数数量和FLOPs在重复训练上的影响

模型规模的增长其实表现在2个方面,一个是模型参数,一个是模型所需要的计算量。模型参数相同的情况下,采用不同的模型架构所需要的FLOPs是不同的。作者对比了MoE架构,并采用ParamShare方法降低相同参数模型的FLOPs。

经过测试发现,FLOPs较大的模型性能会更好一点,但是依然无法有效降低重复训练带来的模型损失。

6、小计算量模型的过拟合趋势与大计算量的差不多

这是一个有趣的发现,尽管在前面的实验中,相同参数规模不同计算量的模型都会受到重复数据集训练的影响。但是二者在模型性能表现的趋势上类似。

7、多样的训练目标可以减轻多Epoch下降吗?

目前大语言模型的训练目标有很多,例如预测下一个单词是什么的生成式目标,也有把单词masked之后用来判断是什么单词的判别式目标。如果语言模型的训练目标多样化,那么实际上更加可能受到多epoch带来的性能损失。

例如,UL2这种模型就不适合多Epoch的训练,MLM这种模型受到的影响反而更小。

正则化可以降低多epochs的影响吗

正则技术,如dropout、droppath、weight decay等都是常用的防止过拟合的技术。而多Epochs的负面影响也都是过拟合。因此,作者研究了这些正则技术是否可以降低多epochs的影响。

8、Dropout是一个被大语言模型忽视的正则技术,虽然慢,但是可以降低多epochs的影响

在目前超过100亿参数规模的大语言模型中,如GPT-3、PaLM、LLaMA等,都没有使用dropout(可能是因为太慢了)。而前面说的Galactica训练使用了,这是Galactica能够训练4Epochs提升性能的最重要的原因。

9、在训练过程中逐渐使用dropout是有效的策略

在前面的讨论中,作者已经发现dropout可以降低多epochs的影响,但是dropout会降低模型的性能。因此,作者考虑不在全部训练中使用dropout,而是逐渐引入。

最终发现,如果前期训练不用dropout,在后续的迭代中使用dropout也是有效的!

10、dropout对不同规模模型的影响不同

尽管前面已经证明dropout使用可以降低多epochs的影响,但是在不同规模模型下是不同的。对于规模较大的模型,dropout不能有效降低多epochs带来的坏处!

11、通过MoE扫描确定稠密模型的最佳超参数

最后一个结论其实与epoch关系不大,作者强调的是MoE的模型表现与大模型真正的训练有类似的趋势,因此用MoE去提前预估大模型的性能,做参数调优是一个非常好的思路。

多epochs训练对大语言模型性能影响的总结

根据前面的实验我们知道,如果在tokens数量一定的数据集上做多epochs的模型训练,会影响模型的性能,降低模型的效果。这在预训练和下游任务都会产生影响。但是,随着模型的发展,高质量数据集的tokens数将很快用完。而采用正则技术虽然会影响模型训练效率,但是会降低这种影响。

SFT需要的数据量

参考链接 :https://mp.weixin.qq.com/s/DVH-vlOpGik8iwW4KnPlkw

大型语言模型的训练分为从原始文本中进行无监督的预训练,以学习通用的表征、大规模的指令调整和强化学习,以更好地适应最终任务和用户偏好两个阶段。

有一种假设认为,大型语言模型中的几乎所有知识都是在预训练中学习的,只需要有限的指导微调数据就可以教会模型产生高质量的输出。

因此, 关于微调数据使用量,具体对微调的性能有怎样的影响,这个话题十分有趣。

最近包括《LIMA:Less Is More for Alignment》、《MAYBE ONLY 0.5% DATA IS NEEDED》则在说明小数据量上,提出了更新颖的结论。

《LIMa:Less Is More for Alignment》一文的消融实验显示,当扩大数据量而不同时扩大提示多样性时,收益会大大减少,而在优化数据质量时,收益会大大增加。

《MAYBE ONLY 0.5% DATA IS NEEDED》一文的实验表明,特定任务的模型可能从固定的任务类型中获益,以获得更高的性能;指令格式的多样性可能对特定任务模型的性能影响很小;即使是少量的数据(1.9M tokens)也能为特定任务模型的指令调整带来可喜的结果。

LIMa:Less Is More for Alignment

论文标题 :LIMa:Less Is More for Alignment

论文链接 :https://arxiv.org/pdf/2305.11206.pdf

论文提出浅层对齐假说,即一个模型的知识和能力几乎完全是在预训练中学习的,而对齐则是教它在与用户交互时应该使用哪种子分布的格式。如果这个假说是正确的,而对齐主要是关于学习风格的 ,那么浅层对齐假说的一个推论是,人们可以用一组相当小的例子充分调整预训练的语言模型。

因此,该工作假设,对齐可以是一个简单的过程,模型学习与用户互动的风格或格式,以揭示在预训练中已经获得的知识和能力。

LIMa采用精心筛选的1000条样本训练,接下来将介绍关键的数据筛选过程:

论文从三个社区问答网站收集数据:Stack Exchange、wikiHow和Pushshift Reddit数据集。

1)Stack Exchange

Stack Exchange包含179个在线社区(交流),每个社区都致力于一个特定的主题,其中最受欢迎的是编程(Stack Overflow)。用户可以发布问题、答案和评论,并对上述所有内容进行加注(或减注)。

在从Stack Exchange采样时,同时采用了质量和多样性控制。首先,将交流分成75个STEM交流(包括编程、数学、物理等)和99个其他(英语、烹饪、旅游等),并放弃了5个小众交流。然后,从每组中抽出200个问题和答案,使用𝜏=3的温度来获得不同领域的更均匀的样本。

在每个交流,选择得分最高的问题,然后选择每个问题的最高答案,并保证它有很强的正面得分(至少10分)。为了符合一个有帮助的人工智能助手的风格,自动过滤那些太短(少于1200个字符)、太长(超过4096个字符)、以第一人称书写(“我”、“我的”)或引用其他答案(“如提到”、“Stack exchange “等)的答案;并从回答中删除链接、图片和其他HTML标签,只保留代码块和列表。

由于Stack Exchange问题同时包含标题和描述,随机选择一些例子的标题作为提示,而其他例子则选择描述。

2)wikiHow

wikiHow是一个在线的维基式出版物,有超过24万篇关于各种主题的方法文章。从wikiHow中抽取了200篇文章,首先抽取一个类别(19个),然后抽取其中的一篇文章,以确保多样性。

使用标题作为提示(例如 “如何做煎蛋?"),并将文章的内容作为回应。

在处理上,用 “下面的答案…… “取代典型的 “这篇文章…… “开头,并采用一些启发式的预处理方法来修剪链接、图片和文本中的某些部分。

3)Pushshift Reddit数据集

Reddit是世界上最受欢迎的网站之一,允许用户在用户创建的subreddits中分享、讨论和加注内容。

在处理上,将样本限制在两个子集,即r/AskReddit和r/WritingPrompts,并从每个社区的最高票数的帖子中手动选择例子。

并从r/AskReddit中找到了70个自成一体的提示(只有标题,没有正文),并将其用作测试集。

WritingPrompts子版块包含虚构故事的前提,然后鼓励其他用户创造性地完成这些故事,共找到150个提示和高质量的回应,包括情诗和短篇科幻小说等主题,并将其加入训练集。

4)人工撰写例子

为了使数据进一步多样化,除了在线社区中用户提出的问题之外,还收集了来自我们自己(这项工作的作者)的提示信息。

指定了两组作者,A组和B组,各创作250个提示,灵感来自他们自己或他们朋友的兴趣。

在过滤了一些有问题的提示后,B组剩下的230条提示被用于测试。

此外,还包括13个具有一定程度毒性或恶意的训练提示。

此外,该工作还选择了50个自然语言生成任务,如总结、转述和风格转换,并从每个任务中随机挑选一个例子,并对其中的一些例子稍作编辑。

3、对比模型与实验效果

为了将LIMA与其他模型进行比较,我们为每个测试提示生成一个单一的反应。然后,我们要求人群工作者将LIMA的输出与每个基线进行比较,并标注他们更喜欢哪一个,该工作将LIMA与五个基线进行比较:

Alpaca 65B ,在Alpaca训练集[Taori et al., 2023]中的52,000个例子上对LLaMa 65B进行了微调;

OpenAI-DaVinci003,一个用人类反馈的强化学习(RLHF)调整的大型语言模型;

谷歌的Bard,基于PaLM;

Anthropic的Claude4,一个用人工智能反馈强化学习(Constitutional AI)训练的52B参数模型

OpenAI的GPT-4,一个用RLHF训练的大型语言模型,目前被认为是最先进的。在整个2023年4月,对所有基线的反应进行了采样。

实验效果如上,图1显示了人类偏好研究的结果,图2显示了GPT-4偏好的结果。结果表明:尽管在52倍的数据上进行训练,Alpaca 65B倾向于产生比LIMA更少的偏好输出。DaVinci003的情况也是如此,尽管优势微弱;

4、讨论与分析

通过消融实验研究训练数据的多样性、质量和数量的影响,对于对齐的目的,扩大输入多样性和输出质量有可衡量的积极影响,而仅仅扩大数量可能没有。

首先,在数量上,从Stack Exchange中抽取指数级增加的训练集。图6显示,有趣的是,训练集的翻倍并没有改善响应质量。模型表现的缩放规律不一定只受制于数量,而是在保持高质量响应的同时,提示多样性的功能。

其次,在多样性上,为了测试提示多样性的影响,同时控制质量和数量,比较了训练对经过质量过滤的Stack Exchange数据和wikiHow数据的影响,前者有异质的提示和优秀的回答,后者有同质的提示和优秀的回答。

虽然在将Stack Exchange和wikiHow作为多样性的代表进行比较时,在从两个不同来源的数据中取样(每个来源中抽出2000个训练例子)可能会有其他混淆因素,但图5显示,更多样化的Stack Exchange数据产生了明显更高的性能。

最后,在质量上,为从Stack Exchange中抽取了2000个例子,没有经过任何质量或风格的过滤,并将在这个数据集上训练的模型与在过滤过的数据集上训练的模型进行比较。图5显示,在经过过滤和未经过过滤的数据源上训练的模型之间有0.5分的显著差异。

因此,总结上来说,在1000个精心策划的例子上对一个强大的预训练语言模型进行微调,可以在广泛的提示中产生显著的、有竞争力的结果。

然而,这种方法也有局限性,正如文中阐述的那样:

首先,构建这样的例子所付出的努力是巨大的,而且很难扩大规模。

其次,LIMA并不像产品级模型那样稳健

尽管如此,这项工作中提出的证据表明,用一种简单的方法来解决复杂的对齐问题是有潜力的。

同时,该论文也指出,PPL并不能有效的反馈模型的表现。

在不同模型大小(7B/30B/65B),不同训练数据训练下,均表明验证集的PPL不能反馈模型生成的质量。

MAYBE ONLY 0.5% DATA IS NEEDED

论文标题 :MAYBE ONLY 0.5% DATA IS NEEDED

论文链接 :https://arxiv.org/pdf/2305.09246.pdf

该工作利用聚类的思想筛选样本进行实验,以说明微调数据规模并不需要难么多,就可以达到一个不错的效果。其实际上走的是多样性的路子。

1)向量化

将数据重新格式化为指令调优训练阶段使用的训练输入格式,即带有描述指令的数据,在最后加入答案,以格式化一个完整的训练数据。

然后,使用预先训练好的语言模型(如Galactica或Bert)对所有样本进行编码。

具体地,将模型作为单词嵌入或每个句子的输入后,提取每个样本的last_hidden_state。对每个样本的词嵌入进行均值集合,得到一个一维向量作为该样本的句子嵌入。

为了加快计算速度,方便向量相似性的计算,将所有句子嵌入归一为长度1,即对嵌入维度进行L2归一。

2)聚类

考虑到NLP任务边界的模糊性可能导致不同任务的样本之间的差异很小。

因此,通过关注数据表征来进行无监督聚类,而不是依靠标签信息来将数据点基于相同的类别或任务归类。

具体来说,在获得第一步的句子嵌入后,使用K-Means在嵌入空间中进行无监督聚类,以获得每个样本和其对应的聚类标签的映射。

然后,根据一个下游任务的样本出现在几个聚类中的频率,选择频率最高的聚类的中心点作为该下游任务的分布中心点。

接下来,对于任务中的所有样本,计算与分布中心点的余弦相似度(距离函数的选择对结果影响不大,按照OpenAI的方法选择余弦相似度),并从任务数据中找出与该中心点最接近的样本作为任务中心点,任务中心点是这个任务数据中与分布中心点余弦相似度最大的一个确切样本。

3)核心样本采样

在获得下游任务对应的分布中心点后,根据余弦相似度选择最相似的样本作为代表性的任务样本,使用了一种核心集算法KCentergreedy,该算法旨在选择k个中心点,使随机数据点与其最近的中心点之间的最大距离最小。

4、实验数据、模型与结论

1)实验数据

在总共11个数据集上进行了实验,这些数据集横跨4个NLP任务,即自然语言推理(NLI,1.9M tokens)、句子补充(SC,660.6K tokens)、词义歧义(WSD,25.5K tokens)和核心推理(CR,185.1K tokens);

2)实验模型

采用Galactica-1.3b。Galactica模型是在一个庞大的科学语料库中训练出来的,并被定制用于处理科学任务,如引文预测、科学问题回答、数学推理、总结、文档生成、分子特性预测和实体提取;

3)实验结论

当考虑到一个特定的任务(本例中为NLI)时,该方法在NLI任务上实现了比基线(表中P3)平均2%的性能改进,只使用了P3中0.5%的可用数据。

与使用P3的所有10条指令相比,只选择一条指令就能达到与使用P3的整个数据集相媲美的结果,而且只用了10%的数据。

通过在P3数据集上调优NLI任务的Galactica-1.3b模型,最终得出了几个结论:

首先,特定任务的模型可能从固定的任务类型中获益,以获得更高的性能;

其次,指令格式的多样性可能对特定任务模型的性能影响很小【这块有问题,格式的多样并不能通过聚类方法实现】;

最后,即使是少量的数据(1.9M tokens)也能为特定任务模型的指令调整带来不错的结果。

不过,由于计算资源的限制,该工作有一些局限性,比如只在Galactica-1.3b上进行实验,只利用P3数据集中的NLI任务数据。

总结

在本文中,我们将主要探讨如何在计算资源有限的情况下为预训练模型准备参数和训练数据,同时也会关注预训练数据中重复Token的影响以及SFT的训练数据量。这些内容旨在为模型训练前期提供有价值的理论参考。

进技术交流群请添加AINLP小助手微信(id: ainlp2)

请备注具体方向+所用到的相关技术点

![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSJADkmZ2IX6Z23znAibuEevotDMq9iaMxiapK7jfMibiauGFkycicAJEs6x5U9SGyDJZ0S1tRed9TPNUUDQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。

  


![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSKABHCqVVQkVYPrM4XY1vsd0iaeuXzyJnoFc8cibd5mYb4wdA3WMQtiaPVmr0XLZHMuVibqWncibpnTSnQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具