问题一:进行领域大模型预训练应用哪些数据集比较好?
答:通过分析发现现有的开源大模型进行预训练的过程中会加入书籍、论文等数据。主要是因为这些数据的数据质量较高,领域相关性比较强,知识覆盖率(密度)较大,可以让模型更适应考试。给我们自己进行大模型预训练的时候提供了一个参考。同时领域相关的网站内容、新闻内容也是比较重要的数据。
问题二:领域数据训练后,通用能力往往会有所下降,如何缓解模型遗忘通用能力?
答:如果仅仅使用领域数据集进行模型训练,模型很容易出现灾难性遗忘现象,为了解决这个问题通常在领域训练的过程中加入通用数据集。那么这个比例多少比较合适呢?目前还没有一个准确的答案。主要与领域数据量有关系,当数据量没有那么多时,一般领域数据与通用数据的比例在1:5到1:10之间是比较合适的。
问题三:进行SFT操作的时候,基座模型选用Chat还是Base?
答:在进行SFT实验的时候,大模型选用Chat还是Base作为基座,需要根据SFT的数据量进行决定。如果你只拥有小于10k数据,建议你选用Chat模型作为基座进行微调;如果你拥有100k的数据,建议你在Base模型上进行微调。
问题四:用于大模型微调的数据集如何构建?
进行大模型微调时,数据是比较重要的,数据的高度决定模型效果的高度,因此数据的质量重要性大于数据的数量的重要性,因此对于构建微调数据时的几点建议如下所示:
(1)选取的训练数据要干净、并具有代表性。
(2)构建的prompt尽量多样化,提高模型的鲁棒性。
(3)进行多任务同时进行训练的时候,要尽量使各个任务的数据量平衡。
问题五:预训练和微调是哪个阶段注入知识的?
知识是在预训练阶段注入的,而微调阶段是指在特定任务上的训练,以使预训练模型的通用知识和特定任务的要求相结合,使模型在特定任务上表现更好。
问题六:想让模型学习垂直领域的知识,是应该预训练还是微调?
对于大模型来说是在预训练的阶段注入领域知识的,因此在训练行业大模型的时候最佳的方案是使用预训练与微调相结合的方案,先用篇章数据进行预训练以获取广泛的知识,再用问答数据进行微调,使模型更好的学习到特定领域的知识。
不过GPT系列大模型的预训练和微调,从实现方式上来讲是没有什么差别的,都是用decoder only的语言模型进行训练并更新参数,如果样本数量比较少,没有大量的篇章文档数据,个人认为只进行微调也能够注入知识,就不必再进行预训练了。如果特定的垂直领域跟预训练模型的分布差别不是很大,也不用再进行二次预训练。
问题七:微调后的大模型出现灾难性遗忘是什么原因?
灾难性遗忘是指大模型在学习了某个行业的新知识后,遗忘掉了最初学习的通用知识,减缓该问题的出现可以从如下两方面进行着手:
(1)加入通用知识:在用行业数据进行训练的时候增添一些通用的数据一块训练。
(2)调整学习率LR:出现这种情况也有可能是训练参数调整导致的,微调初始学习率不要设置的太高,LR=2e-5或者更小,最好不要设置大于预训练时的学习率,能够缓解此问题。