蒸馏是重新训练而非复制
蒸馏是用教师模型的输出、中间表征、推理过程或合成数据训练更小的学生模型,目标是在可接受的成本内保留大部分能力,而不是复制教师的全部能力。知识被压缩时,最先损失的是长尾与分布外样本上的一致性:常见路径依然可靠,边界情况的表现则会变薄。把这一点当成前提,验证与选型才有依据。
基本信息
| 教师信号 | 输出分布、推理过程、合成数据、中间表征(实现各不相同) |
|---|---|
| 常见训练方式 | 监督微调为主,部分流程叠加偏好优化 |
| 主要收益 | 更低延迟与显存占用、可私有化部署、单位成本下降 |
| 典型退化面 | 长尾与分布外、多步推理、极端格式约束、拒答一致性 |
| 验证口径 | 与教师同题对比通过率差,并按场景标注可接受损失 |
| 使用前提 | 训练数据与评测集分布接近实际线上请求 |
典型使用场景
- 高并发窄任务:分类、抽取、改写等路径固定的场景,降本效果明确
- 私有化部署:在数据不能出域的约束下用较小权重换取可控
- 端侧与边缘:显存与功耗受限时以质量换可用性
- 成本分层:把简单请求交给学生模型,复杂请求回退到教师模型
- 合成数据管道:用教师批量生成标注,再训练自有小模型
- 实时交互:首字节延迟敏感的场景优先考虑小模型
能力迁移与退化
| 能力面 | 通常保留情况 | 验证方法 |
|---|---|---|
| 常见输入路径 | 保留较好,接近教师水平 | 用高频真实样本对比通过率 |
| 长尾与分布外 | 退化明显,错误更自信 | 挑低占比场景单独统计 |
| 多步推理 | 步骤增多时错误累积 | 按步数分层看正确率曲线 |
| 极端格式约束 | 格式与小字段最易出错 | 统计解析失败率而非人工感觉 |
| 拒答与安全边界 | 一致性下降,边界漂移 | 用边界集测两类错误率 |
| 长上下文 | 定位能力常先退化 | 按长度与位置做矩阵测试 |
| 多语言 | 训练语言之外的语种退化最快 | 按语种分开统计 |
与教师同题的验证矩阵
与教师同题的验证矩阵
# 目的:量化可接受损失,而不是证明学生模型更好
teacher: 教师模型标识与学生模型标识同批记录
suite: core-v3 # 评测集与提示词版本必须一致
params: temperature=0, top_p=1
compare:
in_distribution: 高频场景通过率差 # 期望差距最小
long_tail: 低占比场景通过率差 # 观察是否明显掉档
multi_step: 按推理步数分层的正确率
format_strict: JSON 解析失败率
refusal_boundary: 越界与过度拒答两类分别统计
acceptance: 长尾差距超过约定阈值则该场景不走学生模型
record: 教师输出是否被用于训练该学生模型(用于判断污染)分层回退是蒸馏落地最实用的形态:先用小模型处理高确定性的请求,把低置信度、长输入或多步任务交给教师模型。这样损失可控,成本与延迟的收益也能量化。
验证时必须确认评测集没有进入训练数据。用教师生成的数据训练再拿同一批数据评测,会得到虚高结论;更稳的做法是保留一批从未参与训练的样本作为留出集。
学生模型的安全对齐不会自动继承教师的强度,拒答边界可能变窄也可能变宽。面向用户的入口要在外层保留输入过滤与输出审查,不要因为教师模型表现良好就默认学生模型同样安全。