Qwen知识蒸馏小试牛刀,在MT-Bench与AlpacaEval 2.0的表现大幅提升
01 前言
先聊点背景。这篇内容主要记录我们在知识蒸馏上的一次实践——5月份跑完的实验,拖了两个月才拿出来分享。当时Qwen2还没发布,手头资源也有限,所以选了把Qwen1.5-32B-Chat-AWQ蒸馏到14B版本上。
在AlpacaEval 2.0和MT-Bench上,实验结果给出了两个非常明确的信号:
同一份训练数据,蒸馏得到的模型效果显著优于直接SFT的模型。
蒸馏能弥补数据质量带来的差距——蒸馏得到的模型,比官方Qwen1.5-14B-Chat有明显提升。
下表就是我们蒸馏的14B模型与官方14B-Chat在AlpacaEval 2.0上的对比结果:

一句话总结:大模型蒸馏这条路是走得通的。相比直接SFT,蒸馏能进一步释放模型潜力,作为压缩和加速推理的手段,性价比很高。
最近谷歌开源的Gemma-2-9B也用了蒸馏,闭源大模型里这招更是标配——把千亿级知识灌进小模型里,既保性能又提速度。
蒸馏后的模型权重在这里:
https://hf-mirror.com/YeungNLP/firefly-qwen1.5-en-14b-alpha
训练代码基于Firefly项目:
https://github.com/yangjianxin1/Firefly
02 知识蒸馏简述
生成式大模型在各种任务上表现亮眼,也改变了NLP的范式。但“大”同时意味着推理瓶颈——速度慢、显存吃紧。在不改结构不动权重的前提下,有多卡推理、KV Cache、MQA、GQA、MLA、Page Attention这些手段可以缓解压力。

知识蒸馏则是另一种思路:直接压缩模型参数规模,提升推理速度,降低显存占用。常见做法是让学生模型的logits去拟合教师模型的logits,甚至可以进一步蒸馏中间层的logits和注意力矩阵。核心思想其实很简单——让学生模型在训练时获得更丰富的监督信号,而不是只盯着hard label这一个目标。

说到知识蒸馏,它并不是什么新鲜东西。早在BERT时代就有大量研究和落地案例了——把大BERT蒸馏成小BERT,甚至蒸馏成TextCNN、LSTM这类轻量结构,让模型能在CPU上跑。蒸馏出来的学生模型,往往比直接用相同数据finetune的效果更好,还能保留教师模型的大部分能力。
几个经典文献回顾一下:
论文:Distilling the Knowledge in a Neural Network
链接:https://arxiv.org/pdf/1503.02531
论文:DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter
链接:https://arxiv.org/pdf/1910.01108
论文:Distilling Task-Specific Knowledge from BERT into Simple Neural Networks
链接:https://arxiv.org/pdf/1903.12136
论文:Patient Knowledge Distillation for BERT Model Compression
链接:https://arxiv.org/pdf/1908.09355
03 蒸馏Qwen1.5
具体到这次实验:我们把Qwen1.5-32B-Chat-AWQ当作教师,蒸馏到Qwen1.5-14B的结构中,学生模型用14B的原始权重初始化。训练数据用的是ultrachat-200k,无论是SFT还是蒸馏,统一采用QLoRA策略。SFT阶段最大输入长度设为2048,蒸馏阶段设为1024。
为了看清楚不同策略的影响,共对比了四个模型:
- :官方开源的chat模型。
Qwen1.5-14B-Chat
- :直接用14B做SFT。
ours-sft
- :用14B权重初始化学生,32B-Chat-AWQ做教师,只蒸馏最后一层的logits。
ours-distill
- :SFT loss和distill loss加权求和作为最终训练目标。
ours-distill-sft
评测平台选的是AlpacaEval 2.0和MT-Bench,用GPT-4o自动打分。
先看MT-Bench(包含单轮和多轮两类),结果如下:


几点结论很清晰:
蒸馏对比直接SFT,提升非常显著。
- 。不过这个结论可能不是普适的——推测是因为ultrachat的数据质量不如Qwen官方数据。如果换成官方数据,distill-sft很可能会优于直接distill,但这还需要实验验证。
distill-sft的效果反而比不上直接distill
- 。推测原因可能是训练数据或最大输入长度设置带来的影响。
单轮对话上直接蒸馏的模型优于官方14B-Chat,多轮对话却反过来了
再来看AlpacaEval 2.0(805条数据,5类任务,直接比胜负,没有平局)。结果很鲜明:

在所有子任务中,蒸馏模型的胜率都高于官方模型,总胜率52.17% : 47.83%
还有一个有意思的点:从开源数据(ultrachat-200k)和闭源数据的差异,以及MT-Bench上ours-sft明显弱于官方14B-Chat的表现来看,可以合理推断——
我们用的训练数据质量确实和Qwen官方数据有差距
当然,这次实验还有很多值得深挖的方向,比如:评测学生模型相比教师模型的性能损失有多大;学生性能与教师性能之间的关系如何变化;进一步探索蒸馏目标(中间层、注意力矩阵等)对学生模型的影响。这些都是后续可以继续折腾的点。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名