![](https://s5-media.51cto.com/aigc/pc/static/noavatar.gif)
被 DeepSeek 带火的蒸馏到底是啥 精华
近期,DeepSeek 的发布在开源社区引起了广泛关注。成功再次将人们的目光聚焦到了模型蒸馏技术上来。那么,究竟什么是模型蒸馏?为什么它能帮助我们构建如此高效的模型?让我们一起深入探讨这个话题。
LLM Distillation 将大型生成模型定位为 “teacher”,将较小的模型定位为 “student”。student 模型可以是简单的模型(如 logistic regression)或基础模型(如 BERT)。在最基本的 distillation 版本中,数据科学家从未标记的数据开始,并要求 对其进行LLM标记。然后,数据科学家使用合成标记的数据来训练“student”模型,该模型将反映“teacher”模型在原始数据集定义的任务上的表现。
数据科学家还可以使用蒸馏来微调较小的生成模型。在这种情况下,他们将向 “teacher” 模型提示提供并捕获响应作为 “student” 的训练目标。
为什么要使用LLM蒸馏法?
LLMs与 GPT-4 一样,Gemini 和 Llama 展示了令人难以置信的能力,但也存在明显的缺点:
• 成本。 数十亿个参数LLMs的托管成本很高,通过 API 访问的成本更高。
• 速度。 由于所需的计算数量,full-size LLMs 可能会很慢。
• 基础设施难题。托管最大可用LLMs版本的私有版本意味着需要整理和协调大量资源。
通过提炼 LLM,数据科学团队可以构建更易于托管、运行成本更低且响应速度更快的衍生模型。
蒸馏的LLM缺点是什么?
虽然蒸馏是一个强大的捷径,LLM但它并不是训练新模型的万灵药。该技术面临四个主要挑战:
• 学生受到老师的限制。 在最简单的蒸馏版本中,“学生”模型将反映“老师”模型的性能。面对专业任务的广义通常LLMs达不到生产级的准确性。
• 您仍然需要大量未标记的数据。 这将LLM为您创建标签,但由于多种原因,源数据可能供不应求。
• 您可能不被允许使用未标记的数据。 对于被限制使用客户数据的组织,这可能会带来真正的障碍。
• 您可以使用的内容LLMs可能会受到限制。虽然对于分类任务来说不是问题,但许多 LLM API 的服务条款禁止用户使用其LLMs输出来训练可能具有竞争力的生成模型。
知识蒸馏的基本原理
知识蒸馏本质上是一种模型压缩的方法,其核心思想是利用一个大模型(教师模型)来指导小模型(学生模型)的训练。在这个过程中,小模型不仅要学习训练数据中的硬标签,还要学习大模型输出的软标签(概率分布)。这个过程可以用以下数学公式来表示:
其中:
这里:
• 是温度参数,用于控制软标签的"软"程度
• 和 分别是教师模型和学生模型的logits
• 是平衡软标签和硬标签的权重
• 是真实标签
主流的蒸馏方法及其特点
1. 响应蒸馏 (Response Distillation)
这是最基础的蒸馏方法,主要用于处理分类任务。在这种方法中,我们直接使用教师模型的输出作为学生模型的训练目标。以BERT模型家族为例,DistilBERT就是使用这种方法,将原始BERT模型压缩到原来大小的40%,同时保持了97%的性能。
具体实现步骤:
- 使用教师模型对大量未标注数据进行预测
- 收集教师模型的输出概率分布
- 训练学生模型来模拟这些概率分布
适用场景:
- 分类任务
- 序列标注任务
- 文本匹配任务
2. 特征蒸馏 (Feature Distillation)
特征蒸馏不仅关注模型的最终输出,还会学习教师模型中间层的特征表示。这种方法的数学表达式为:
TinyBERT就是采用这种方法的典型代表,它不仅学习BERT的输出层,还学习了注意力矩阵和隐层状态。
3. 逐步蒸馏 (Progressive Distillation)
逐步蒸馏是一种较新的方法,它将蒸馏过程分解为多个步骤。每个步骤都专注于特定的任务或能力的转移。这种方法的优势在于可以更好地保持复杂任务的性能。
以最近的MinLLM为例,它采用了以下策略:
- 首先学习教师模型的基础语言理解能力
- 然后逐步学习更复杂的任务相关能力
- 最后微调特定任务的性能
蒸馏方法的详细对比
蒸馏方法 | 优势 | 劣势 | 适用场景 | 典型代表 |
响应蒸馏 | 实现简单,计算开销小 | 可能损失细粒度特征 | 基础NLP任务 | DistilBERT |
特征蒸馏 | 保留更多原始特征,性能更好 | 训练复杂,计算开销大 | 复杂NLP任务 | TinyBERT |
逐步蒸馏 | 可保持复杂能力,更灵活 | 训练时间长,需要精心设计 | 大规模语言模型 | MiniLLM |
实践中的关键考虑因素
数据选择
数据质量和数量对蒸馏效果有着决定性影响。在实践中,我们需要考虑:
- 数据的分布是否覆盖目标任务空间
- 数据的质量如何保证
- 数据量的大小如何确定
架构设计
学生模型的架构设计需要权衡多个因素:
- 模型容量:需要足够大以捕获必要的知识,但又要满足资源约束
- 层次映射:如何将教师模型的层映射到学生模型
- 注意力机制:是否需要特殊的注意力结构
训练策略
有效的训练策略通常包括:
- 使用动态温度参数
- 采用渐进式训练方案
- 结合多任务学习
技术发展趋势
当前,知识蒸馏技术正在向以下几个方向发展:
- 多教师蒸馏:利用多个专家模型的知识
- 自蒸馏:模型作为自己的教师
- 在线蒸馏:边训练边蒸馏
这些新方向都在尝试解决现有蒸馏方法的局限性,提供更有效的知识转移机制。
本文转载自 芝士AI吃鱼,作者: 爱滑冰的咸鱼
![](https://s5-media.51cto.com/aigc/pc/static/noavatar.gif)