知识蒸馏是什么?小模型怎样学习教师模型的输出
从客服分类例子解释教师与学生模型、软标签和生成式蒸馏,区分蒸馏与量化,并说明如何检查错误继承及真实部署收益。
先理解这个概念
知识蒸馏是一类让学生模型学习教师模型行为的训练方法,常用于把较大模型的部分能力转移到较小模型。学习信号可以包含输出概率分布等信息,不只是一个正确标签。蒸馏需要训练和独立评测,不保证学生保留教师的所有能力,也不等于直接压缩模型文件或把数值精度降低。
教师提供的信息多于单个分类标签
假设客服消息要分成退款与配送两类。硬标签只指定其中一类,教师输出的概率还能表达另一类有多接近。学生用这些分布学习类别关系。原始蒸馏论文讨论了软目标和温度参数,但不同任务的蒸馏方式并不完全相同。
生成式模型也可以学习教师的文本或逐词元分布。Hugging Face的GKD实现让学生在自己生成的序列上接受教师反馈,避免把所有蒸馏都理解为复制一份固定答案集。实际训练前要确认实现接受的数据和损失定义。
与量化和普通微调分别比较
量化主要改变权重或计算的数值表示,蒸馏则通过训练改变学生参数。两者可以组合,但效果需要分别检查。把大模型转成低精度文件,并不能据此说已经训练出一个蒸馏模型;模型大小变化也不证明行为得到保留。
普通监督微调从目标答案学习,蒸馏强调教师给出的学习信号。教师可能本身答错,也可能对某种语言支持较弱。增加教师样本数量不能自动纠正这些偏差,仍应加入独立依据核对关键事实和任务覆盖。
部署收益需要同条件任务来确认
可以保留一组未参与训练的客服消息,分别检查教师与学生的错分情况,再测目标设备的延迟和内存。这里给出评测设计,没有运行训练或取得加速数据。学生参数较少,也不能直接推出所有设备都会更快。
特别检查教师原本能处理的罕见问题是否退化,以及资料不足时是否仍会编造。使用教师服务产生训练资料还应核对其许可与使用条款。最后保留学生版本和数据来源,避免把来源不清的模型仅凭名称当成可信替代品。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。