论文《A Survey on Knowledge Distillation of Large Language Models》
https://arxiv.org/abs/2402.13116
这篇论文是干嘛的?
这篇论文是关于“知识蒸馏”(Knowledge Distillation,简称KD)在大型语言模型(Large Language Models,简称LLMs)中的应用。
简单来说,知识蒸馏就像是让一个“聪明的大老师”(比如GPT-4)教一个“普通的小学生”(比如开源模型LLaMA),把大模型的聪明才智传给小模型,让小模型也能变聪明,而且更省资源、更容易用。
论文的作者们想给大家讲清楚三件事:
-
知识蒸馏怎么做
:有哪些方法能把大模型的知识“蒸馏”出来,教给小模型?
-
能教什么本领
:小模型通过学习能掌握哪些具体的技能,比如理解上下文、写代码、回答问题?
-
用在哪
:这些“蒸馏”出来的小模型能在哪些领域发挥作用,比如医疗、法律、金融?
他们还特别提到了一种“数据增强”(Data Augmentation,简称DA)的技术,说它在知识蒸馏里特别重要,能让小模型学得更好。论文结构很清晰,分成了算法、技能和应用三个大块(这叫“三大支柱”),后面我会详细讲。
为什么要研究这个?
想象一下,GPT-4这样的“大模型”超级聪明,能写文章、回答问题、甚至帮你解决问题,但它有个问题:太大了,太贵了,不是每个人都能用得上。就像一台超级豪华跑车,性能强但耗油多、一般人开不起。而开源模型(比如LLaMA、Mistral)呢,虽然免费、灵活,但本事没那么大,就像一辆普通小轿车。
知识蒸馏的目标就是:让小轿车也能跑得快一点,至少能干点跑车能干的事。这样,大家就能用更便宜、更小巧的模型,享受AI的好处。论文里还提到,这种技术还能让开源模型自己教自己变得更强(自改进),或者把大模型压缩得更高效。
核心内容拆解
1. 知识蒸馏是什么?(§2 Overview)
知识蒸馏最早是用来把复杂的神经网络“压缩”成简单的小网络。比如原来一个大模型有几亿个参数,跑起来很费电脑,蒸馏后弄成一个小模型,参数少多了,但还能干差不多的事。
到了大型语言模型时代,知识蒸馏变得更高级了。现在不光是压缩模型,还要把大模型的“知识”和“能力”传给小模型。比如,GPT-4能写诗、推理、聊天,知识蒸馏就想让小模型也学会这些本事。
论文里提到,知识蒸馏有三个主要作用(见图1位置:
Fig. 1: KD plays three key roles in LLMs
):
2. 数据增强(DA)和知识蒸馏的关系(§2.2)
数据增强听起来很高大上,其实就是“造数据”。以前的DA可能是把一句话改改意思,或者翻译一下再翻回来,增加点训练数据。但在大型语言模型里,DA变得更聪明了。
论文说,现在的DA是用大模型生成一大堆高质量的“教学材料”。比如,你给GPT-4一点点“种子知识”(比如几个问题和答案),它就能生成成千上万类似的问答对。这些数据不是随便乱造,而是针对特定技能(比如数学推理)或领域(比如医学)量身定做的。
有了这些数据,小模型就能拿来练习,学到大模型的本事。这就像给小学生准备了一堆精选练习题,比随便找点题做效果好多了。
3. 知识蒸馏的流程(§2.4)
论文给了个通用流程,告诉你怎么把大模型的知识传给小模型(见图4位置:
Fig. 4: An illustration of a general pipeline to distill knowledge
):
-
挑目标
:先决定教小模型什么,比如“学会写代码”或“懂法律”。
-
给种子
:给大模型一点“种子知识”(比如几个例子),让它知道从哪开始。
-
生成教材
:大模型根据种子知识,生成一大堆教学材料(比如问答对)。
-
教学生
:拿这些材料训练小模型,让它模仿大模型的本事。
这个流程简单来说就是:大模型先干活,产出“教材”,小模型再拿教材学。
4. 知识蒸馏的三大支柱
论文把知识蒸馏分成三大块(见图3位置:
Fig. 3: Taxonomy of Knowledge Distillation of Large Language Models
):
(1)算法(KD Algorithms,§3)
这是讲怎么“教”。论文分了两步:
-
知识怎么挖出来
(Knowledge,§3.1):