研究内容
本文研究了一种从现有的大型基础语言模型(LM)开始开发小型基础语言模型(LM)的简单方法的有效性:首先从较大的LM继承一些转换块,然后在非常小的原始预训练数据的子集(0.1%)上训练这个较小的模型。
主要贡献
1、本文引入了一种叫做Inheritune的预训练技术。该方法包括训练从较大的参考LM中提取的小尺寸目标模型。我们使用OpenLLaMA-3B作为参考模型,并使用少量的变压器块(层)来获得大小为1.5B的目标模型。随后在1B的训练数据上对目标模型进行8次epoch的进一步训练。
2、如果我们使用完整的预训练数据,可以提取更小的目标模型。我们对GPT2-large和GPT2-medium进行了对照实验。利用Inheritune,我们发现对于GPT2-large,我们可以保留50%的层和45%的参数,而对于GPT2medium,我们可以保留33%的层和28%的参数,而不会影响验证损失。有趣的是,我们还观察到,使用Inheritune导出的这些较小的模型显示出较低的验证损失,而它们的相同大小的对应部件从头开始训练,训练步骤是训练步骤的两倍。此外,使用Inheritune派生的这些较小的模型显示出与较大的模型相似的收敛模式。
Method: Inheritune
我们有一个参考模型,其中包括了K层,首先,初始化目标模型,其中的前n层继承的前n层,的权值为{, ,…,}。预测头和token嵌入也继承自。然后,我们使用训练数据随机选择的0.1%(1B)子集来训练我们的的。
结果:
Comparison to baseline models available publicly:
上图所示,我们使用Inheritune开发的1.5B模型在10个单独任务中有7个表现出色。与参考语言模型相比,它的得分达到90%或更高,参考语言模型的大小是它的两倍,并且使用1000倍以上的数据进行训练;此外,它优于其他两个类似大小的基础LMs(使用50-300倍以上的数据进行训练)。
Comparison with a pruning technique ShearedLLaMA:(ShearedLLaMA采用了剪枝技术)
文中指出,我们的方法归纳为了初始化方法,其中存在这一些不同:
a)修剪并不总是需要再培训,而任何基于初始化的配方都需要训练。
b)通常,修剪技术坚持“训练大,然后压缩”范式,这需要从更大的模型开始,而Inheritune是一种训练配方,它从头开始预训练模型,利用比随机更好的初始化。
c)有针对性的结构修剪是一种精心设计的技术,基于一些权重更新标准,因此它需要大量的计算来执行,剪切需要8个gpu, 0.4个令牌和3k个步骤来进行修剪。
在与Sheared LLaMA-1.3B相比,Inheritune的得分有竞争力。
Inheritune scales accross different model sizes(对不同n值进行选择)
N = {4,6,8,10,13,16,18,20}
正如预期的那样,我们看到一条正倾斜的趋势线。
Additional analysis with larger reference LMs and 50B data
这里文中扩展到了更大的参考模型和更多的数据,采用OpenLLaMA-7B和LLaMA2-7B作为参考模型并且使用预训练数据的50B子集(即5%)。
如上图所示,我们观察到随着数据的增加,MMLU (5-shot)的总体评分有明显的提高。此外,使用更大的参考模型使用Inheritune开发的1.5B(或1.6B模型)在使用50B非重复数据子集时显示出更大的改进。
我们观察到对于所有其他9个数据集的平均值,它的性能在5个epoch达到峰值,然后恶化。一些先前的工作表明下游任务的数据缩放并不总是线性的 。
Exploratory Analysis of Inheritune in the presence of full pre-training data
本节中不仅拥有更大的参考基础模型,而且还拥有用于训练的整个数据集,来研究制作的较小的基本LM是否可以匹配较大的参考LM的性能。
本节采用了小于十亿大小的参考模型GPT2-large,和GPT2-medium和9Btoken的OpenWebText作为数据集。
实验流程:
(1)我们首先将这个数据集分成一个训练集和一个较小的验证子集。
(2)然后,我们在整个训练集上训练完整的36层GPT-2大型模型,进行一定数量的训练步长(T),并评估其在上的验证损失,我们称之为基准值损失。
(3)然后,我们将Inheritune v2应用于以下输入:作为输入的参考模型是(现在训练的)36层模型,较小的模型的预期层数为n = 18,数据集是完整的,基准值损失和训练步数与上面步骤2中使用的参考模型相同,我们评估了该模型的验证损失。
(4)如果步骤3中我们的模型的验证损失比步骤2中的参考模型的验证损失更大,我们重新执行步骤3,并且将n的值增加2。也就是说,我们逐渐为继承模型探索更大的尺寸,直到我们在验证损失方面与原始参考模型达到相同。
上表说明从GPT2家族中提取具有几个层的较小的目标LM,而不会损失验证损失中的性能。此外,我们还表明,通过Inheritune使用更大的参考LM制作的目标LM在两个相关的下游任务上表现出相当的0-shot性能。
从上图可以看出,用Inheritune训练了100K步的目标模型,优于以两倍的训练步数(200k)从头开始预训练的相同大小的模型,尽管我们的LM与参考模型相比较小,但收敛速度与它们一样快。
我们训练了4个新的GPT2-medium 16层变体模型,同时用从头开始训练的24层GPT2-medium的权重初始化变压器块的不同部分。我们初始化变压器块:
1)注意力((键、查询、值和投影)和层模权值(attn w/ layernorm),
2)没有层模的注意力和mlp权值(attn+mlp w/o layernorm),
3)有层模的mlp权值(mlp w/ layernorm),
4)没有剩余连接的Inheritune,Inheritune初始化,继承了layernorm (attn+mlp w/ layernorm)的注意权和mlp权。
我们观察到,用注意力和mlp权重训练的模型与层规范初始化无关。因此,初始化注意力和mlp权重具有明显的优势,并且在收敛速度和最终验证损失方面产生非常相似的改进。