在大型语言模型(LLMs)领域,我们常常听到微调LLMs以遵循指令的话题。但是如何为LLMs提供新知识或领域特定数据呢?通常,LLMs会在数十亿标记上进行常规预训练,一旦有新数据可用,就会重新开始这个过程。然而,新数据引起的分布转移通常会导致在先前数据上性能下降或对新数据适应性差。最新的《Simple and Scalable Strategies to Continually Pre-train Large Language Models》论文提供了一些宝贵的见解,指导如何在新数据上持续预训练LLMs,提出了一种更高效的解决方案是持续对这些模型进行预训练,这比重新训练节省了大量计算资源。
研究人员比较了三种不同训练方式的模型:
需要注意的是,通常在实践中常见的做法是在合并数据集上重新训练模型,因为这通常有助于找到良好的学习率调度,并且有助于防止灾难性遗忘。
然而,在这篇论文中,研究人员发现可以通过更高效的继续预训练(而不是在合并数据集上重新训练)来达到相同的良好验证损失和下游任务性能。
成功应用继续预训练的“技巧”是什么?
这基本上就是这篇相对冗长的24页论文的要点了。
此外,还有一些有趣的额外实验表明,重新热身+重新衰减的表现与使用所谓的“无限学习率调度”进行预训练的表现相似,因此在常规预训练阶段没有真正需要做任何特别的事情。
论文地址:https://arxiv.org/abs/2403.08763