一项来自北京大学与香港科技大学等顶尖机构的最新研究,揭示了大语言模型在持续预训练过程中的一个关键现象:模型在目标领域的性能会经历先下降后回升的“V形”曲线。研究团队将其定义为“稳定性差距”,并提出了三种缓解策略。核心发现是:在适当大小的优质数据子集上进行多轮预训练,效果远优于在单一大数据集上一次性训练;选择高质量数据进行多轮预训练至关重要;此外,通过混合数据来接近原始预训练数据的分布,也能有效缓解性能下降问题。这些策略已在医疗领域的持续预训练和指令精调中得到充分验证,显著提升了模型效果,同时大幅削减了计算开销。相关Llama-3-Physician-8B模型已经开源在HuggingFace上。
大语言模型的持续预训练,是将模型从通用领域拓展至垂直行业(如医疗)的关键技术。通过在目标领域的语料上继续训练,能够有效补充模型的专业知识,显著提升其在特定任务上的表现。然而,尽管学术界对从头预训练大模型的学习机制已有深入研究,但关于持续预训练过程中模型行为变化的探讨仍相对稀缺。
近期,来自北京大学、香港科技大学等机构的研究团队,开源了一个8B参数的医学大模型。他们在持续预训练和指令微调实验中,系统性地观察了模型性能的演变轨迹,发现了一些非常值得注意的现象。
论文链接:https://arxiv.org/abs/2406.14833
开源地址:https://huggingface.co/YiDuo1999/Llama-3-Physician-8B-Instruct
先下降后上升:大语言模型持续预训练中的稳定性差距问题
研究初期,团队选取了TinyLLaMa-1b和OpenLLaMA-3b作为基座模型,并在5000亿医疗token上进行单轮持续预训练。训练过程中,每隔50亿token,就对模型在医疗维基语料上的困惑度以及下游医疗任务的平均表现进行一次评估。
结果如图1所示,一个有趣的现象出现了:尽管模型在医疗维基语料上的困惑度持续下降(图1b),但在持续预训练的初期,模型在医学任务上的表现却出现了明显下滑(图1a)。更关键的是,随着后续数据的不断喂入,任务表现又逐渐回升,最终超越了原始模型的水准。
图1:(a)预训练过程中模型在四个医疗QA任务上的平均表现 (b)预训练过程中模型在医疗维基语料上的困惑度
为解释这种V形曲线,研究团队借鉴了持续学习领域中的“稳定性差距”概念。简单来说,模型在学习新领域知识时,其“可塑性”梯度在初期占据主导地位,压倒了维持通用任务能力的“稳定性”梯度,导致模型短期内无法维持原有的任务表现。随着训练的深入,任务损失(即对特定任务能力的保持需求)会逐渐增强稳定性梯度,从而克服这一差距,最终让性能恢复并超越初始水平。
为验证这一假设,团队进一步测试了模型在持续预训练过程中的通用任务表现。图2的结果显示,一般任务的执行能力也呈现出类似的V形曲线,这进一步印证了稳定性差距的存在。
图2:预训练过程中模型在10个常识和阅读理解任务上的平均表现
三个针对性策略:如何克服持续预训练中的稳定性差距
基于上述发现,研究团队有针对性地提出了三个策略,来有效克服持续预训练中的稳定性差距问题:
策略1:在高质量小规模数据子集上进行多轮预训练,而非在大数据集上单次训练。这种“少食多餐”式的训练方式,能降低每次迭代中所需的高可塑性梯度,促进稳定性梯度的增强,从而让性能恢复得更快。
策略2:只选取高质量的子语料进行预训练。高质量数据能更快地强化模型在目标领域的知识,加速性能提升。
策略3:在训练数据中混合一部分来自其他来源的数据,使其分布更接近原始预训练数据的分布。这样做可以缩小预训练与持续预训练之间的分布差距,帮助模型更快地建立稳定性梯度。
表1:在医疗预训练完成后模型在四个医疗任务上的zero-shot表现
实验结果:为验证这些策略的有效性,团队将其与多种基线方法进行了对比,包括在5000亿医疗数据上单轮训练、学习率Re-warming and Re-decaying、重采样和参数固定等。结果显示,基于本文的策略,OpenLLaMa模型仅需在高质量50亿数据上训练4个轮次(相当于原始计算预算的40%),就能在医疗任务的平均表现上显著超越所有基线,在PubMedQA等医学问答任务上表现尤为突出。
逼近GPT-4水平的8B医疗专家模型
在验证了策略的有效性后,团队将目光投向了更强大的Llama-3-8B模型。
持续预训练:他们按照提出的三种策略,使用50亿高质量医学数据,对Llama-3-8B模型进行了四个轮次的重复训练。
指令微调:预训练完成后,团队使用了涵盖问答、分类、关系提取、自然语言推理和总结等多种类型的医疗任务指令,对模型进行指令微调。微调过程同样采用了“多轮次训练、利用Deita自动指令数据选择器挑选高质量医学指令、并混合高质量通用指令数据(如Airoboros-3.2)”的策略,以缓解模型在通用任务能力上的遗忘。

图3:指令微调过程中模型的医疗平均表现
从图3可以看到,在指令微调阶段,使用完整数据做微调依然会在初期面临表现下滑的问题。而通过应用上述三个策略,模型仅需25%的指令数据就能达到最佳性能,这大幅降低了计算资源的消耗。
实验比较:团队进一步将优化后的指令微调模型Llama-3-Physician-8B-insturct与其他医疗模型进行了对比。表2的数据很能说明问题:在医疗问答任务上,Llama-3-Physician-8B-insturct明显优于其他同尺寸的开源模型,甚至超越了闭源的GPT-3.5-turbo模型,并且其平均表现已接近GPT-4。
表2:指令微调结束后各模型在四个医疗问答任务上的zero-shot表现
除了问答任务,团队还考察了模型在其他类型医疗任务上的表现。如表3所示,在分类、关系抽取、推理和总结等任务上,Llama-3-Physician-8B-insturct同样取得了优异的表现,甚至在某些任务上明显超过了GPT-4。
表3:指令微调结束后各模型在医疗分类,关系抽取,推理和总结任务上的zero-shot表现
总结
- 本研究系统性地观察了大语言模型在新领域语料库上进行持续预训练时的行为,发现了一个普遍的V形曲线:模型性能先下降,随后缓慢恢复。研究团队使用“稳定性差距”这一概念对其进行了描述和解释。
- 为克服稳定性差距,团队提出了三种有效策略,能显著提升大语言模型在特定领域的表现,并降低计算成本:在适当大小的数据子集上进行多轮预训练;选取高质量子集;按预训练数据分布混合采样数据。
- 这些策略被成功应用于Llama-3-8B模型的持续预训练和指令微调。最终得到的Llama-3-Physician-8B-insturct,不仅在同规模开源模型中表现最强,还超越了闭源的GPT-3.5,并接近GPT-4的表现。
