大模型在测试里答得好,放进每天几万次调用的系统,延迟和费用可能很快超过预算。知识蒸馏提供了一种训练办法。教师先给出示范,较小的学生模型模仿这些输出,最后只部署学生。
我查看了 Google 的机器学习课程、PyTorch 教程和 Hugging Face 的示例。它们使用的任务与实现不同,共同点很清楚。教师参与训练,学生承担上线后的计算。教师的输出成为训练信号,学生在较小参数规模下尽量保留目标任务所需的行为。
学生具体学什么
最容易理解的做法是批量标注。团队准备一批输入,让教师模型离线处理,生成分类、答案或评分,再用这些数据训练学生。教师还可以给出连续分数。内容审核若只标安全和违规,边界样本信息很少;教师给出一组概率,学生能学到哪些样本更接近边界。
一些蒸馏方法会同时使用真实标签和教师的 soft targets。Hugging Face 的图像分类示例用 temperature 调整输出分布,再用一个权重平衡蒸馏损失与真实标签损失。教师负责提供更细的关系,人工确认的标签继续约束任务目标。
PyTorch 教程强调,训练改变的是轻量学生的权重。学生部署以后不需要每次再调用教师,前向计算成本由学生自己的结构决定。Google 也把更快预测和较少计算资源列为蒸馏的主要收益,同时提醒学生的预测通常比原始大模型弱一些。
数字要放回实验里看。Hugging Face 的 beans 图像分类示例中,蒸馏后的学生准确率为 72%,同配置从头训练的学生为 63%。该示例里的教师信号有帮助。换成客服问答、合同抽取或代码生成,没人能预先许诺也提高九个百分点。
先缩窄任务再训练
蒸馏适合边界明确、请求量大且能反复评测的任务。产品分类、固定字段抽取和有限范围问答较容易准备测试集。开放聊天会碰到大量长尾问题,学生与教师的差距也更难量清。项目应先把允许回答的范围、拒答条件与转人工规则写成样例。
数据来源同样要核对。教师生成的答案可能带偏差,Google 明确提醒模型会继承蒸馏数据里的偏差。若输入含客户资料,要确认处理和训练权限。教师输出能否用于训练另一个模型,也要查看服务条款与模型许可证,不能因为答案已经变成文本就省掉授权检查。
上线前用独立测试集比较教师、学生和原有方案。除了总分,还要看高风险错误、拒答和不同人群上的差异。学生省下多少延迟与费用也要在真实并发下测。它若只在少量请求上省一点钱,却漏掉关键问题,继续使用教师或采用分级路由会更合适。