BotOf TechAI / IoT / Full-Stack / 植物养护
返回首页模型蒸馏不只是压缩:从教师模型到后训练技术栈

模型蒸馏不只是压缩:从教师模型到后训练技术栈

·5 分钟阅读·

很多人把“蒸馏”理解成“拿大模型生成答案,再训练一个小模型模仿”。这句话没错,但太薄了。

在今天的 LLM 工程里,蒸馏更像一套知识迁移系统:教师模型不只是给最终答案,还可以给 logits、偏好排序、推理轨迹、工具调用过程、拒答边界、领域写法和错误示例。学生模型也不一定只是“小模型”,它可能是一个同尺寸模型、一个领域模型、一个多模态分支、一个 draft model,甚至是一个量化后模型上的 adapter。

如果只把蒸馏当数据生成,很容易做出一个“会背老师口吻、但不会继承老师能力边界”的模型。真正有价值的蒸馏,要回答四个问题:

  1. 老师的什么能力值得迁移;
  2. 学生的架构和容量能不能装下这些能力;
  3. 训练信号是答案、分布、步骤,还是偏好;
  4. 上线后如何证明它更便宜,但没有把关键能力蒸丢。

一、经典蒸馏:从 hard label 到 soft target

Hinton、Vinyals、Dean 在知识蒸馏里强调的核心不是“把答案抄给小模型”,而是让学生学习教师输出分布里的暗知识。

普通监督学习只看 hard label:

input: 这张图是什么?
label: cat

但教师模型的输出分布可能是:

cat 0.72
fox 0.12
dog 0.09
tiger 0.04
car 0.00

这里的 fox/dog/tiger 概率不是噪声,而是教师对类别相似性的表达。学生学习这个分布,比只学习 cat=1 得到的信息更多。

典型蒸馏 loss 可以写成:

L = alpha * CE(y, p_s)
  + (1 - alpha) * T^2 * KL(softmax(z_t / T), softmax(z_s / T))

其中:

符号含义
z_tteacher logits
z_sstudent logits
Ttemperature,越高分布越平滑
CE对真实标签的交叉熵
KL学生分布对教师分布的拟合
alphahard label 与 soft target 的权重

LLM 场景里,logits 蒸馏经常不如分类模型直接,因为商业教师通常不给完整 logits,token 级分布也很贵。但这个公式仍然重要:它提醒我们,蒸馏最好迁移的是分布结构,不是只迁移最终文本。

二、LLM 蒸馏的四种主流形态

LLM 时代的蒸馏可以分成四层。

1. Response distillation:学习最终答案

这是最常见的做法:

prompt -> teacher answer -> student SFT

它适合:

  • 客服、销售、运营文案这类风格稳定任务;
  • 结构化抽取;
  • 代码模板生成;
  • 小模型做企业内部窄域任务。

它的问题也很明显:学生只看到结果,看不到老师为什么这么答。对于数学、规划、代码调试、复杂工具调用,单纯 response distillation 很容易变成“短路学习”:看起来格式对,遇到分布外问题就掉。

2. Rationale distillation:学习中间推理或解释

Distilling step-by-step 这类工作把教师生成的 rationale 作为额外监督,让学生同时学习答案和解释。它的价值在于给学生更多训练信号,特别是在标注数据有限时。

工程上要注意两点:

  • rationale 不等于真实因果路径,它可能只是教师事后解释;
  • 如果上线不希望暴露 chain-of-thought,需要把训练用的中间过程和推理时输出策略分开。

更稳的做法是把中间监督拆成可审计字段,而不是直接保存长篇思维链:

{
  "answer": "...",
  "short_rationale": "...",
  "tool_plan": ["search", "compare", "summarize"],
  "evidence_ids": ["doc-17", "doc-23"],
  "error_type": null
}

这样既能帮助学生学习过程,又便于做数据质量检查。

3. Preference distillation:学习老师的偏好边界

很多能力不是“一个标准答案”,而是偏好排序:

A: 简短但遗漏约束
B: 更完整,有引用,有拒答边界
preference: B > A

DPO 把这类偏好学习变成一个相对稳定的分类式优化问题,不需要像 PPO-RLHF 那样先训练 reward model 再在线采样更新策略。对企业微调来说,DPO 的吸引力是流程简单、训练稳定、容易离线复现。

这类技术和蒸馏的关系是:教师模型或人类评审可以产生偏好对,学生通过偏好优化学习“什么回答更好”。它迁移的不是事实,而是选择标准

4. Capability distillation:迁移某类能力

DeepSeek-R1 把推理能力蒸馏到多个更小的 dense 模型,是一个很典型的能力蒸馏例子。这里的关键不是“老师生成了很多答案”,而是老师的数据集中含有高密度的数学、代码和逻辑推理行为,学生通过 SFT 学到了新的解题模式。

这类蒸馏要特别小心数据配比。推理数据过多,小模型可能变得啰嗦;工具调用数据过多,模型可能在不需要工具时也想调用工具;安全拒答数据过多,模型可能变得保守。能力蒸馏不是越多越好,而是要和目标使用场景的 token 分布对齐。

三、一个可落地的蒸馏流水线

生产里不建议直接“生成 100 万条数据然后 SFT”。更稳的流水线是:

任务定义
  -> 种子数据与真实日志抽样
  -> teacher 生成候选
  -> 规则过滤 + 模型裁判 + 人工抽检
  -> 去重、分桶、难度标注
  -> SFT / DPO / LoRA 训练
  -> 评测集回归
  -> 小流量灰度
  -> 线上日志反哺

关键不是生成量,而是分桶:

分桶作用
easy保住基础格式和常见问题
hard训练复杂推理、长上下文、边界条件
refusal学会拒答和安全边界
tool学会何时调用工具、如何读工具结果
negative学会识别坏答案和幻觉
domain学会行业术语、口吻和业务 schema

训练时也不要只看总 loss。更有用的是按桶看回归:

overall pass rate
hard reasoning pass rate
tool-call exact match
refusal false positive / false negative
hallucination rate
latency and tokens per answer

小模型蒸馏成功的标志不是“平均分提高”,而是单位成本下可用能力提高。如果准确率只掉 2%,但延迟降 60%、显存降 70%、吞吐提升 3 倍,这就是很好的工程结果。反过来,如果成本降了但拒答边界、事实性、工具调用全都不稳,那只是把风险搬到了线上。

四、除了蒸馏,还有哪些模型训练技术

蒸馏只是后训练技术栈的一块。实际训练模型时,至少要把下面几类技术分清楚。

1. SFT:把模型拉到任务分布上

SFT 是最基础的指令微调。它解决的是“模型知道怎么按你的格式完成任务”。SFT 适合让模型学习:

  • 输入输出 schema;
  • 企业术语;
  • 工具调用格式;
  • 写作风格;
  • 领域问答模板。

SFT 不擅长解决“两个答案哪个更好”的偏好问题,也不擅长强行注入模型容量装不下的新能力。SFT 数据质量通常比数据量更重要。

2. LoRA / PEFT:不改全模型,只训练低秩增量

LoRA 冻结原模型权重,只在部分线性层注入低秩矩阵:

W' = W + BA

其中 AB 的 rank 远小于原矩阵维度,所以训练参数量和优化器状态都大幅下降。它适合多租户、多业务线、快速迭代的场景:基础模型保持一份,不同业务挂不同 adapter。

它的边界也要清楚:LoRA 更适合“适配”,不是无限扩容。如果基础模型本来不会复杂数学推理,靠一个很小 rank 的 adapter 不一定能补回来。

3. QLoRA:低比特基础模型 + adapter 训练

QLoRA 把基础模型权重量化到 4-bit,再通过 LoRA 反向传播更新 adapter。它的工程价值非常直接:把原本需要多卡的大模型微调,压到单卡或更少显存上。

但 QLoRA 不是“低成本无损魔法”。它更依赖:

  • 量化格式是否适合权重分布;
  • 哪些层加 adapter;
  • rank 和 learning rate;
  • 数据是否足够干净;
  • 评测是否覆盖长尾任务。

如果你的目标是低成本领域微调,QLoRA 通常比全参微调更现实;如果目标是训练基础能力,全参训练或更大的后训练预算仍然不可替代。

4. RLHF、RLAIF、DPO:学习偏好,而不是学习答案

RLHF 的经典流程是:

SFT model -> collect comparisons -> reward model -> RL optimize policy

它解决的是“用户更喜欢什么行为”。InstructGPT 的重要发现之一是,较小但经过人类反馈训练的模型,可以在用户偏好上超过更大的原始预训练模型。

RLAIF 把人类比较的一部分替换成 AI feedback,例如 Constitutional AI 里用原则列表让模型自我批评和修订,再用 AI 偏好训练模型。它可以降低人工标注压力,但风险是 AI 裁判会把自己的偏见放大。

DPO 则把偏好优化做得更简单:不显式训练 reward model,不跑复杂在线 RL,而是直接用 chosen/rejected 对优化策略。很多团队会选择:

SFT 解决格式和任务
DPO 解决偏好和边界
蒸馏解决成本和能力迁移

5. 自训练与合成数据:让模型参与制造训练集

自训练不是新概念,但 LLM 让它变得更有用。常见流程:

base model -> generate candidates -> filter -> train stronger model -> repeat

它和蒸馏的区别是:蒸馏强调 teacher-student;自训练强调模型和数据循环。真实系统里两者经常混在一起:强教师生成合成数据,学生训练后再作为下一轮数据生成器或过滤器。

这里最容易踩坑的是数据污染。模型会生成看起来合理、实际上同质化很强的数据。要用去重、难度采样、反例生成、人工抽检、线上日志回放来打破自我强化。

6. MoE:训练时扩大参数,推理时只激活一部分

Mixture-of-Experts 不是蒸馏,也不是微调技巧,而是架构层的稀疏计算路线。它通过 router 让不同 token 激活不同 expert。好处是总参数量很大,但每个 token 只走部分专家。

MoE 的训练难点在于:

  • expert 负载均衡;
  • router 稳定性;
  • expert collapse;
  • 分布式通信开销;
  • 推理服务里的 batch 和路由抖动。

MoE 适合从训练架构层追求更好的参数效率;蒸馏适合把已有能力迁移到更便宜的学生模型。两个不是替代关系。

7. 量化感知训练、剪枝和稀疏化:让模型更便宜

这些技术更靠近压缩和部署:

技术主要目标常见风险
PTQ训练后量化,快速降显存精度掉,长尾任务劣化
QAT训练时模拟量化误差训练成本更高
pruning删除低贡献权重/通道/头结构破坏,恢复训练复杂
sparsity让计算变稀疏硬件和 kernel 不一定支持

它们可以和蒸馏结合:先剪枝或量化,再用教师模型做恢复训练,让学生重新贴近教师行为。

8. Speculative decoding:不是训练学生,但会用“小模型”

Speculative decoding 常被误放进训练技术里。它主要是推理优化:小 draft model 先猜多个 token,大 target model 一次性验证,从而降低自回归解码延迟。它不一定改变模型权重。

但它和蒸馏有关:draft model 可以通过蒸馏训练得更像 target model。draft 越准,接受率越高,推理加速越明显。所以蒸馏在这里服务的是推理系统吞吐,而不是单独追求学生模型上线。

五、怎么选:不是所有问题都该蒸馏

可以用一张表做决策:

目标首选技术不建议优先用什么
降推理成本蒸馏、量化、speculative decoding直接全参训练
学企业格式SFT、LoRARLHF
学用户偏好DPO、RLHF、RLAIF只做 SFT
多业务快速适配LoRA/adapter每个业务一份全模型
单卡低成本微调QLoRA全参微调
基础能力扩展更强 base、继续预训练、RL小数据 LoRA
超大规模参数效率MoE单纯蒸馏
部署端显存压缩PTQ/QAT、剪枝、蒸馏恢复只缩 batch

一个现实的企业路线通常是:

选一个强 base model
  -> 用 SFT 学业务格式
  -> 用 DPO 学偏好和边界
  -> 用蒸馏做小模型或 draft model
  -> 用 QLoRA 降训练门槛
  -> 用量化和 serving 优化降推理成本
  -> 用评测闭环控制回归

六、评测:蒸馏项目成败主要死在这里

蒸馏后的学生模型通常会在平均指标上看起来不错,但在这些地方掉坑:

  1. 拒答边界变差:该拒不拒,不该拒乱拒;
  2. 长上下文能力退化;
  3. 工具调用参数格式不稳定;
  4. 领域术语幻觉增加;
  5. 数学/代码题会模仿老师的解题口吻,但关键步骤错;
  6. 多轮对话里忘记前置约束;
  7. 安全数据过量导致回答过于保守;
  8. 合成数据过量导致表达同质化。

所以蒸馏评测至少要有四组:

评测集目的
capability set看核心能力是否保住
regression set看旧能力有没有被蒸坏
adversarial set看边界条件、拒答、安全
production replay用真实日志回放看线上分布

更重要的是做成本指标:

cost_per_1k_requests
p50/p95 latency
tokens_per_second
GPU memory per replica
batch efficiency
failure retry rate

如果只看 benchmark,不看成本账本,蒸馏就会变成论文式优化;如果只看成本,不看回归,蒸馏就会变成线上事故的前奏。

七、一个比较稳的落地方案

假设目标是把一个 70B 级教师模型的企业问答能力迁移到 7B/14B 学生模型,可以这样做:

  1. 从线上日志、FAQ、工单、人工标注集中抽 5-10 万条种子任务;
  2. 用教师模型生成 answer、short rationale、evidence、refusal reason;
  3. 用规则过滤 schema、引用、长度、敏感词;
  4. 用第二个模型做 judge,打 factuality、helpfulness、format 分;
  5. 人工抽检每个 bucket,而不是只抽总体样本;
  6. 先做 LoRA/QLoRA SFT,确定数据有效;
  7. 再引入 DPO,优化“好答案 vs 坏答案”的边界;
  8. 对量化版本做蒸馏恢复;
  9. 用 production replay 验证延迟、成本、错误分布;
  10. 灰度上线,日志反哺下一轮数据。

不要一开始就追求“蒸一个通用大模型”。更好的起点是蒸一个稳定的业务能力包:例如客服摘要、SQL 生成、代码审查、文档问答、智能路由、工单分类。范围越清楚,评测越能闭环,蒸馏越容易变成可靠工程,而不是一次性实验。

结论

蒸馏的本质是把昂贵模型里的可迁移行为,变成便宜模型可学习的数据和 loss。它能降成本、降延迟、提高部署弹性,也能把推理模型的某些能力迁移给更小模型。

但蒸馏不是万能压缩按钮。它要和 SFT、LoRA/QLoRA、DPO/RLHF/RLAIF、量化、剪枝、MoE、自训练、speculative decoding、评测回归一起看。越成熟的训练体系,越不会问“要不要蒸馏”,而是问:

这个能力应该通过什么信号迁移?
学生模型容量够不够?
训练后便宜了多少?
哪些能力不能掉?
线上如何发现蒸坏了?

能回答这些问题,蒸馏才真正从技巧变成基础设施。

参考资料