所有文章 > AI驱动 > Deepseek为什么选择蒸馏模型?一文彻底搞懂大模型蒸馏技术
Deepseek为什么选择蒸馏模型?一文彻底搞懂大模型蒸馏技术

Deepseek为什么选择蒸馏模型?一文彻底搞懂大模型蒸馏技术

我们看到,DeepSeek 提供了 7B、8B、14B、32B 等多个中小参数量模型,类似地,Qwen(1.5B、3B、7B、14B、32B)和 Llama(7B、13B、34B)也发布了多个中小参数量模型。然而,它们的生成方式有所不同:DeepSeek 是先训练一个超大参数模型,然后通过蒸馏的方式提供小参数量模型;而其他模型则是通过优化训练过程和模型架构来实现。

那么,这两种方式有什么差异? DeepSeek 为什么选择蒸馏模型?

本文将深入探讨以下几个问题:什么是大模型蒸馏?它诞生的背景是什么?为什么 DeepSeek 选择通过蒸馏模式来提供中小参数量模型?以及这一过程是如何具体实现的?通过这些问题,让读者能搞懂大模型蒸馏技术。

、什么是大模型蒸馏?

大模型蒸馏的定义

大模型蒸馏(Model Distillation)是一种将大型、复杂模型(通常称为“教师模型”)的知识转移到小型、简单模型(通常称为“学生模型”)的技术。其核心思想是通过模仿教师模型的输出,使学生模型在保持较高性能的同时,显著减少模型的大小和计算复杂度。

举个例子:

想象你是一个老师(教师模型),你要教一个学生(学生模型)如何解一道复杂的数学题。你告诉学生每个步骤的解题思路,解释为什么要这样做。虽然学生的最终答案不一定完全正确,但通过学习你的思路,学生能够更好地理解题目,甚至能够独立解决类似的问题。这个过程中,学生没有直接接触到你的最终答案,而是通过你给出的“软答案”学习。

为什么会出现大模型蒸馏?

大模型蒸馏技术的出现,主要是为了应对大规模模型(例如 GPT、Llama、DeepSeek 等)在实际应用中的一些问题和需求。尽管这些大模型在性能上很强悍,但是在使用时资源消耗大成本高,蒸馏技术正是为了解决这些问题而提出来的,蒸馏也是一种大模型优化的技术手段,资源消耗具体体现为以下两点:

1、计算资源

大模型通常具有非常庞大的参数量,可能达到数十亿、数百亿甚至上千亿的参数,这导致了以下问题,训练成本高昂:训练这样的大模型需要极为强大的计算资源,通常需要数周甚至数月的时间,并且要消耗大量的电力。推理速度慢:在实际应用中,大模型往往无法实时响应请求,因为它们的计算需求过于庞大。蒸馏技术通过将大模型的知识迁移到小模型上,能够在保持较高性能的前提下,大幅减少计算开销。这样,即使是硬件资源有限的环境,也能实现高效的推理和部署。

2、推理时的内存和存储资源

大模型在推理时不仅需要大量计算资源,还需要极其庞大的内存和存储空间。例如,在推理时,大模型可能需要占用几十 GB 甚至上百 GB 的内存,这对很多设备(如 PC、手机、嵌入式设备)来说是不现实的。蒸馏技术通过压缩模型大小,可以让小模型在保持大模型性能的情况下,显著减少内存和存储的需求,使其更适合在资源受限的设备上运行。

二、Deepseek 为什么要蒸馏大模型而其他厂商没有?

从官方发布材料上看,在Deepseek之前,主流的开源大模型 Qwen、Llama等都没有正式发布蒸馏大模型,为什么会这样,笔者谈谈自己的看法,我们先来看看模型蒸馏的好处

我说下结论:

假如有 7B 参数量的模型 A 和 B,两者的模型结构完全相同,其中 A 是通过模型蒸馏得到的(教师模型能力很强),而 B 是从零开始训练的,那么 A 的表现通常会比 B 好, 理由如下:

1、蒸馏的知识迁移优势

  • 模型 A 是通过蒸馏从一个更大、更强的模型(教师模型)中获得知识的。蒸馏的过程并不仅仅是复制大模型的输出,而是让小模型学习到大模型的决策过程、内部表示和隐含知识。这样,模型 A 在训练过程中能够 接收到更多的高质量指导,尤其是在复杂的推理、模式识别和特征提取方面。
  • 通过蒸馏,模型 A 实际上学会了一个已经“成熟”的模型的很多优点,比如对上下文的理解能力、处理边缘情况的能力以及通过大量训练积累的 先验知识,这些是从零训练的模型(B)很难在同样的数据量和训练时间下学到的。

2、训练过程中的指导作用

  • 在模型 B 的训练过程中,它是从随机初始化开始的,没有任何先前的知识。它的每一个参数都是从头开始学习,可能需要更多的训练数据和更长的时间,才能逐步接近其理论上的最优状态。
  • 与之对比,模型 A 通过蒸馏直接从教师模型(通常具有强大的能力)中学习。这意味着模型 A 的学习过程是高效的,它利用教师模型的“智慧”来进行学习,在较少的训练数据和计算资源下可能就能表现得很好。

3、大模型的泛化能力

  • 大模型(即教师模型)通常具有很强的泛化能力,因为它是在大量的数据上训练出来的。通过蒸馏,小模型(A)能够继承教师模型的一部分泛化能力,尤其是在不确定的、少见的模式识别上,这对于提高模型的性能是非常有帮助的。
  • 模型B从零开始,缺乏这种来自大模型的“润色”或高质量的指导,因此在面对复杂的、边缘的或数据稀缺的任务时,B 模型的表现可能会较差,尤其是在数据量有限的情况下。

说明一下,在做模型蒸馏时,教师模型和学生模型的架构可以不同。蒸馏的核心在于将教师模型的知识(如输出分布或中间特征)传递给学生模型,而不是直接复制其架构。这种灵活性使得蒸馏可以应用于不同架构的模型之间

举个例子:

假设有一位老师(教师模型)和两个学生(A 学生 和 B 学生),他们的任务是学习如何写一篇优秀的作文。

  • 教师模型:一位经验丰富的语文老师,擅长写作,能够清晰地讲解写作技巧,并给出具体的改进建议。
  • A 学生:通过“模仿学习”来学习写作,即直接观察老师的写作过程,并模仿老师的写作风格和技巧。
  • B 学生:通过“自学”来学习写作,即自己阅读大量范闻,尝试总结写作技巧,但没有老师的直接指导。

学习过程

A 学生(模型蒸馏)—有老师指导

1、模仿老师的写作:A 学生通过观察老师的写作过程,学习如何构思、组织段落、使用修辞手法等。

2、接受反馈:老师会为A学生的作文提供详细的反馈,指出优点和不足,并给出改进建议

3、逐步优化:A 学生根据老师的反馈不断调整自己的写作方法,最终写出接近老师水平的作文。

B 学生(从零训练)—自学

1、阅读大量范文:B 学生通过阅读大量优秀作文,尝试总结写作技巧。

2、自己摸索:B 学生没有老师的直接指导,只能通过试错来学习,可能会走一些弯路。

3、逐步改进:B 学生通过不断练习,逐渐提高写作水平,但进步速度较慢,且可能无法达到老师的高度

通常情况下在这个场景中,A学生(蒸馏模型)通过模仿老师的写作技巧和接受反馈和指导,能够更快、更好地掌握写作能力,最终表现优于 B 学生(从零训练的模型)。这说明了蒸馏模型的优势:通过继承大模型的知识和能力,小模型可以在更短的时间内达到更高的性能

其他大模型为什么以前没有使用?

笔者说下自己的看法:

1、模型设计理念的差异

  • Qwen 和 Llama 系列的设计目标通常更加注重大规模模型的多样性与复杂性,而不是直接针对压缩和蒸馏。许多开发团队,特别是在 Meta和 其他大型互联网公司,关注的是如何构建一个强大的基础模型,尤其是为了满足各种不同的任务需求,因此并没有在一开始就把蒸馏作为模型的核心优化手段。
  • DeepSeek 则在一开始就强调了模型的高效性与适应性尤其是在计算资源受限和需要高效推理的场景中,这可能促使了他们在发布初期就同时发布了蒸馏版本。蒸馏不仅帮助模型提高了性能,而且有效地减小了推理成本,非常符合在实际应用中对大模型高效推理的需求。

2、实际应用需求的差异

  • Qwen 和 Llama 的推出时主要面向的是大规模计算资源充足的环境,例如大型云服务器集群,因此它们的开发可能更侧重于提升模型的多任务能力和通用性,而蒸馏本身并不是它们最优先考虑的优化方向。换句话说,这些大模型的初衷是为了提升多任务、跨领域的能力,可能认为蒸馏并不是最急需的优化策略。
  • 与此相比,DeepSeek 的目标之一就是解决推理效率和实际部署中的计算限制问题,这使得蒸馏技术成为其开发的核心之一。蒸馏不仅能够减小模型体积,还能在大规模推理中降低延迟和计算开销。

说到底是大厂人多钱多,起步早,走的是重型装备路线;Deepseek 是小厂,资源有限,走的是轻巧路线。在有限的资源条件下,要实现更强的模型能力,蒸馏模型技术是实现这一目标的有效途径之一。

、大模型是如何做蒸馏的?

这里简要说下关键的几个步骤

前置条件:用于蒸馏的教师模型已经就绪

第一步:准备训练数据阶段

这一步的目的是使用教师模型对原始数据进行处理,生成软标签可以简单理解为,在考试的时候先把试卷发给老师做,老师把每道题的解题思路和答案先写出来。

1、准备原始数据集 –》 对应试卷

用于训练的数据,例如文本、图像或其他类型的数据。

注意:这些数据是用于教师模型和学生模型的输入

2、教师模型生成数据(软标签) –> 对应解题思路和答案

将上述准备的原始数据集输入到教师模型中,教师模型会输出数据(软标签)。通常是概率分布(例如,对于分类任务,每个类别的概率值)。软标签包含了教师模型的知识,学生模型需要学习这些知识

举个例子:假设我们有一个文本分类任务,原始训练数据是“这部电影很棒”,任务是判断情感是正面还是负面

教师模型的输入:“这部电影很棒”

经过处理后输出数据(软标签):[正面: 0.88, 负面: 0.12]。相当于是解题思路和答案

下一步学生模型训练需要的数据是类似下这个配对数据 ,简单理解为左边是问题,右边是解题思路和答案

“这部电影很棒“ <—> 目标:[正面: 0.88, 负面: 0.12]

第二步:开始训练

输入数据输入

将原始数据(例如“这部电影很棒”)输入到学生模型中。

答案:教师模型生成的软标签 [正面: 0.88, 负面: 0.12]

学生模型接收输入数据,通过神经网络进行计算,生成预测概率分布。学生模型的输出可能是 [正面: 0.88, 负面: 0.11]。

计算损失

使用损失函数(如 KL 散度)比较学生模型的输出与目标软标签(答案)之间的差异(Loss)

反向传播

根据损失值,计算损失函数对模型参数的梯度。通过反向传播算法,将梯度从输出层传递到输入层,逐层更新模型的参数。

参数更新

使用优化器(如 SGD、Adam)根据梯度更新学生模型的参数,使损失值逐渐减小。目标是通过多次迭代,让学生模型的输出越来越接近软标签。

这里可能会有人产生疑问:“在对 DeepSeek 进行蒸馏时,用于蒸馏的教师模型和通过互联网访问的普通模型是一样的吗?

答案是否定的。用于蒸馏的教师模型和实际部署的模型通常是不同的

尽管它们可能基于相同的架构。教师模型通常更大、更复杂,主要用于生成软标签,为蒸馏提供指导。而部署模型则更注重效率,通常会经过量化、剪枝等优化,直接输出文字(针对生成式任务)或具体类别(针对分类任务)。简单来说,教师模型需要尽可能保持原始状态,具备全面的能力(“老师要啥都会”),而部署模型则是面向具体任务进行优化,不需要的部分可以去掉。

、总结

本文详细介绍了大模型蒸馏的定义、优势以及关键步骤。那么,类似 DeepSeek 的蒸馏方式未来是否会推广开来,成为主流呢

笔者认为,这种可能性非常大。蒸馏技术能够有效解决大模型在部署、效率和资源消耗方面的痛点,同时随着技术的不断进步,其效果和适用范围还将进一步扩大,而这正是大模型推广过程中面临的关键障碍。虽然蒸馏技术会增加一定的复杂度,但对于模型厂商来说,这并非无法解决的问题。只要技术能够推广开来并得到市场认可,复杂度的挑战也就迎刃而解了。

文章转载自:Deepseek为什么选择蒸馏模型?一文彻底搞懂大模型蒸馏技术

#你可能也喜欢这些API文章!