什么是模型蒸馏(Knowledge Distillation)?它和模型量化有什么区别?
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
一、🍀回答重点模型蒸馏是一种"以大教小"的模型压缩技术,用一个大模型(教师模型)的输出来训练一个小模型(学生模型),让小模型学到大模型的知识和推理能力。 为什么不直接训练小模型?因为大模型的输出比原始标签包含更丰富的信息。比如一个图片分类任务,原始标签只告诉你"这是猫",但大模型的输出可能是"90% 猫、8% 狗、2% 狐狸",这种概率分布叫软标签,里面编码了类别之间的相似性关系。小模型学习软标签,比直接学硬标签能获得更好的泛化能力。 在大模型时代,蒸馏最典型的用法是让强模型生成高质量训练数据,然后拿这些数据训练一个更小的模型。DeepSeek-R1 就开源了蒸馏版本,用 R1 生成的推理链数据去训练 Qwen 和 LLaMA 的小模型,1.5B 的蒸馏版在数学推理上跑出了接近 GPT-4o-mini 的分数。 二、🍀扩展知识2.1 ☘️蒸馏的两种主要方式1)输出蒸馏:直接用教师模型生成大量 QA 对作为训练数据,学生模型在这些数据上做 SFT。这是最简单也最常用的方式,Alpaca、Vicuna 等早期开源模型都是这么干的。缺点是只学到了教师的最终输出,中间的推理过程压根没学到。 2)过程蒸馏:不只学最终答案,还学教师模型的思维链。DeepSeek-R1 的蒸馏版本就是这个思路,把 R1 的长推理链作为训练数据,让小模型也学会"一步步想"。这种方式在数学和代码推理任务上效果提升特别明显。 2.2 ☘️经典蒸馏的核心原理Hinton 在 2015 年提出蒸馏时引入了一个关键概念叫温度参数 T。正常的 softmax 输出概率分布很"尖",top-1 类别概率接近 1,其他类别接近 0,信息量不大。把温度 T 调高,比如 T=5 或 T=20,softmax 输出就会变"软",各类别之间的相对大小关系暴露出来,这些就是所谓的 dark knowledge。 训练时的损失函数由两部分组成: 1)学生和教师软标签之间的 KL 散度,权重大 2)学生输出和真实硬标签之间的交叉熵,权重小 两个损失加权求和,让学生既学教师的知识分布,又不偏离真实标签太远。 2.3 ☘️蒸馏和量化的核心区别
实际项目中,蒸馏和量化经常配合使用。先蒸馏一个合适大小的小模型,再对它做 INT4 量化,就能在手机或边缘设备上流畅跑起来。 2.4 ☘️蒸馏的局限性蒸馏不是万能的。学生模型的能力有天花板,一个 1B 的模型再怎么蒸馏也学不会 GPT-4 级别的全部能力,尤其是复杂推理和长上下文理解这种吃参数量的任务。 合规风险也不能忽略,很多闭源模型的使用协议明确禁止用输出来训练竞品模型,OpenAI 的 Terms of Use 就写了不许拿 GPT 的输出去训练其他模型。 还有一点容易踩坑:蒸馏出来的模型会继承教师的错误和偏见。教师在某个领域有幻觉问题,学生大概率也会有同样的毛病,甚至可能放大这些错误。 三、🍀面试官追问提问:蒸馏时温度参数 T 设多少合适?设太高或太低会怎样? 提问:蒸馏出来的小模型,能力上限到底受什么约束? 提问:线上部署的时候,蒸馏和量化你会怎么选? 阅读原文:点击这里 该文章在 2026/8/5 14:17:16 编辑过 |
关键字查询
相关文章
正在查询... |