在DeekSeek R1的论文中提到,通过蒸馏让QWen等模型获得了同等的效果。
那么,什么是蒸馏?
2014年,Geoffrey Hinton在 Distilling the Knowledge in a Neural Network 中提出知识蒸馏的概念:即将一个复杂的大模型(Teacher Network)上学习到的知识迁移到另一个更适合部署的小模型上(Student Network)。
小模型通过学习大模型的行为和知识,可以在保持小模型低计算量、高性能的同时,获得可以类比大模型的产出效果。
比如用DeepSeek蒸馏后的7B模型,DeepSeek-R1-Distill-Qwen-7B 在2024 年美国数学邀请赛(AIME)中首次答题正确率达到 55.5% ,超过了 QwQ-32B-Preview 模型。
前排提示,文末有大模型AGI-CSDN独家资料包哦!
蒸馏的几种常见方式
如何教?有几种方式:
-
Response-based distillation 基于输出的蒸馏;
-
Feature-based distillation 基于特征的蒸馏;
-
Relation-based distillation 基于关系的蒸馏。
基于输出的蒸馏
对于输入数据,教师模型输出了结果(可以是一个值,也可以是个概率分布),学生模型通过模仿这种概率分布来学习。
以下图的手写数字识别任务为例,教师模型给出了一个概率分布的结果(称之为软目标),即这张图是0-9的概率分别有多大。这样,学生模型就可以模仿教师模型的概率输出,从而让自己的行为更贴合教师模型。
和只给出最终答案“这张图是数字几”(硬目标)相比,概率分布给出了更多的信息量:以下图左为例,教师模型给出了图片挺像3;下图右,教师模型给出了图片是2,但也像7,这些额外的结果信息都能够让学生模型习得更多。
但是,这种基于输出结果的知识蒸馏,由于只利用了教师模型最终输出的知识,但是没有捕获过程思考,所以并不适合需要复杂决策和特征提取的任务。
基于关系的蒸馏
对于输入数据,教师模型给出了一系列样本的输出,学生模型需要学习教师模型输出之间的相对关系。
如上图所示,基于输出的蒸馏是点对点的,即学生模型用自己的结果1、2、3去分别拟合教师模型的结果1、2、3。
而基于关系的蒸馏是形对形的,学生模型自己的结果1、2、3彼此间的关联结构,去拟合教师模型的结果1、2、3的关联结构。
基于特征的蒸馏
对于任务,教师模型给出了某个中间层或多个中间层的内部特征供学生模型学习。
相较于基于输出的蒸馏,基于特征的蒸馏很显然向前推进了一个环节,给学生模型提供了更多的可参考信息。
如果教师模型和学生模型采用了相同和相似的架构,就更容易应用基于特征的蒸馏。
蒸馏 vs 微调 vs RAG
从概念上来看:
-
蒸馏是知识从教师模型→学生模型的迁移;
-
微调是模型在特定标注数据集上的早学习;
-
RAG(Retrieval Augmented Generation,检索增强生成)是大模型和信息检索系统的结合。
如果我们用 客服工作上岗过程 来打比方:
-
微调(自学成才),给出一本客服上岗SOP让新人自学,考试合格后上岗;
-
蒸馏(名师授课),资深的客服专家(教师模型)教课,不仅给出各种情况下该如何回复,还给出分析过程让新人理解的更深刻。
-
RAG(边干边学),给出一本产品手册,让新人基于产品手册的查询和自己的理解(模型已有的知识),来给用户反馈。
一个极端的情况,如果蒸馏过程中,教师模型只给出了硬目标(结果)来训练学生模型,不给出软目标(概率分布)或特征(过程值),那么这个蒸馏过程基本上和微调是类似的。
在读论文和资料的过程中,还发现有几个有意思的点:
1、微调大模型再蒸馏小模型 比 直接微调小模型的效果更好;
即,先让名师先琢磨透考试大纲再教给学生,比学生直接研究考试大纲的效果要好。
2、蒸馏 和 微调的效果取决于学生模型的聪明程度,聪明的模型可以学得更好。
同样以DeepSeek的蒸馏模型为例,32B的Qwen和70B的Llama表现相仿。
DeepSeek-R1-Distill-Qwen-32B 在 2024 年美国数学邀请赛(AIME)中首次答题正确率达到 72.6%,在 MATH - 500 测试中首次答题正确率达到 94.3%,显著超越了其他开源模型。
DeepSeek-R1-Distill-Llama-70B 在 2024 年美国数学邀请赛(AIME)中首次答题正确率达到 70.0%,在 MATH - 500 测试中首次答题正确率达到 94.5%,为密集型模型创造了新纪录。
CSDN独家福利
最后,感谢每一个认真阅读我文章的人,礼尚往来总是要有的,下面资料虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走: