重要提示:如需以 Markdown 形式查看本页,请在 URL 后追加 `.md`。 完整文档索引见 llms.txt
跳到主要内容
完整文档索引见 llms.txt。 在任意 URL 后追加 `.md` 即可查看该页面的 Markdown 版本。

LLM 蒸馏

Knowledge distillation is a model 压缩技术,它通过训练一个更小的 student model 来复现更大 teacher model 的 行为。最终得到的模型更小、更快、推理成本更低。更重要的是,它通常还能保留 teacher 的大部分能力。

可以把它简单理解为:

  • teacher 已经很擅长解决这项任务
  • student 通过模仿 teacher 的输出学习

量化不同,量化是降低现有权重的精度, 而蒸馏会产出一个全新的模型。这两种技术是互补的;蒸馏后的模型还可以进一步 量化,以获得更高效率。

DeepSeek-R1(671B 参数)就是一个很好的例子。研究人员利用它把推理能力迁移 到更小的模型中,包括 1.5B、7B、8B、14B、32B 和 70B 等变体。这些小模型能以 类似于 teacher 的风格进行推理,但推理成本只占其中一小部分。

蒸馏如何工作

标准训练使用的是 hard label,也就是给定输入对应的正确答案。

蒸馏则让 student 学习 teacher 的 soft label,也就是对所有可能 next token 给出的完整概率分布。

这些 soft label 比单一正确答案包含更丰富的信息。比如,如果 teacher 给 "car" 40% 概率、给 "vehicle" 30% 概率,student 学到的不只是答案本身, 还会知道哪些替代项同样合理,以及 teacher 对答案有多大把握。这会帮助 student 获得更好的泛化能力。

通常会结合以下目标来训练 student:

  • Distillation loss:衡量 student 对 teacher 输出分布的拟合程度。
  • Cross-entropy loss:在标注数据上做标准的 next-token prediction。

把这些目标结合起来,是为了在知识迁移与任务表现之间取得平衡。

蒸馏的类型

响应蒸馏(Response distillation)

student 被训练去匹配 teacher 输出的 token 概率。这是最常见的一种形式, 因为它只需要访问 teacher 的输出即可。它扩展性好,也被广泛用于生产更小的 通用模型。

特征蒸馏(Feature distillation)

student 被训练去模仿中间表示,例如 hidden states、attention pattern 或层 激活值。这要求能够访问 teacher 的内部状态,实现成本更高,但对于架构相似的 模型来说,往往能带来更好的知识迁移效果。

思维链蒸馏(Chain-of-thought distillation)

teacher 会生成完整的推理轨迹,也就是问题的逐步解答过程,而 student 会在 这些轨迹上做 fine-tuning。DeepSeek-R1 的蒸馏变体就是这样构建出来的。这种 方法显著提升了小模型的推理能力,尤其是在数学、编程和逻辑求解等任务上。

什么时候适合使用蒸馏

如果满足以下情况,蒸馏通常是个不错的选择:

  • 你需要一个更小、更快的模型,用于延迟敏感或资源受限的部署场景
  • 某个大模型即便量化后,仍然超出了你的 VRAM 或延迟预算
  • 你能够使用一个足够强的 teacher model,并承担训练成本
  • 你想把某项特定能力(如推理或编程)迁移到一个更小的模型上

在以下情况下,蒸馏可能并不合适:

  • student 和 teacher 之间的能力差距太大,student 的架构无法承接
  • 训练期间你没有足够算力在推理模式下运行 teacher model
  • 现有模型的量化版或 fine-tuned 版本已经满足需求
  • 你追求的是尽可能高的最终精度

蒸馏如何影响推理

蒸馏发生在训练阶段,但收益会体现在推理阶段。

通过生成更小的模型,它会直接提升服务效率:

  • 更低延迟:token 生成更快
  • 更低内存占用:需要的 GPU 内存更少
  • 更高吞吐量:同样硬件上可以并行跑更多请求
  • 更低成本:每个请求所需算力更少

换句话说,在任何运行时优化开始之前,蒸馏就已经先把推理的基线成本压低了。

可以这样理解:

在推理系统里,这些技术可以组合使用:大模型 → 蒸馏 → 更小的模型 → 量化(如果需要)→ 优化服务 → 部署

常见问题

蒸馏的主要挑战是什么?

蒸馏确实有效,但它也有以下权衡:

  • 需要额外的训练算力
  • 高度依赖 teacher model 的质量
  • 在复杂任务上可能出现性能损失
  • 需要仔细做数据生成与筛选

因此,很多团队会先尝试量化,只有在确实需要时才进一步做蒸馏。

蒸馏和量化有什么区别?

下面是一个并列对比:

蒸馏量化
改变的对象训练一个新的、更小的模型降低现有模型的精度
产出不同的新模型(student)同一个模型,但权重精度更低
发生阶段训练期间训练之后
所需算力高,需要重新训练低,通常可快速应用
对体积的影响减少参数数量降低每个参数所需内存
使用难度更复杂更容易上手
典型用途构建更小的生产模型为部署优化现有模型