【大模型理论篇】模型蒸馏、大模型变小、移动端小规模大模型SLM、小模型趋势讨论
1. 大模型规模变小的趋势(SLM)
我们在之前的文章《关于LLaMA 3.1 405B以及小模型的崛起》中提到,利用大模型对小模型进行蒸馏学习,也许是更加适合创业赛道。这样做对小模型效果提升会非常明显,ROI极高,属于小投入高产出。也是最近看到融中财经的商业分析文章《投资人逃离大模型》【1】,谈到算力成本巨大导致行业内只有英伟达赚的盆满钵满,这样的商业生态导致资源和利润的集中,对整个行业的健康发展造成负面影响。因此只有小型化的大模型生态构建出来后,才可能扭转这种局面,否则只能是硬件厂商的狂欢。构建一个更为均衡的生态系统将有助于分散市场风险,降低对大型硬件的依赖。大模型的热潮才出现两年,资本已经开始降温,转到具身智能领域,在2023年1月,在一个闭门沙龙讨论的时候,我就提出了可以提前关注具身智能、机器人领域的投资。
今天(10-31)又看到apple发布的一篇论文《Computational bottlenecks of training small-scale large language models》【2】。由于大模型巨大的内存和计算需求,在移动硬件和边缘设备上广泛部署大模型面临超大挑战。这些限制顺势推动了对较小语言模型(如≤2亿参数)作为可行替代方案的研究。小规模大模型(SLMs)在对成本效率和资源限制关注较大的环境中表现较好,并在服务器上可实现较低的推理成本。SLMs尽管规模较小,但依然能够取得竞争性的结果。通过修剪、蒸馏和量化等技术提升性能,使得SLMs在很多情况下能够与更大的模型相媲美。比如R2C2 BlenderBot 2.7B的表现基本超过了最大的OPT-175B【3】。
Apple的论文基于小规模大模型(SLMs)在成本和效率层面的优势为出发点,通过考察各种超参数和配置(包括GPU类型、批量大小、模型大小、通信协议、注意力类型和GPU数量)对训练SLMs(最多2亿参数)的计算瓶颈进行了探索。论文重新评估硬件和计算策略,提供了关于在各种云基础设施和设置上训练最多2亿参数的SLMs的计算瓶颈和成本效率的系统研究。发现:1)Flash Attention对SLMs的重要性显著高于LLMs;2)昂贵的硬件,如H100-80GB和A100-80GB,不一定对SLM训练具有成本效益;3)DDP是SLMs最佳的分布式训练方案;4)最大化GPU内存利用率对SLM训练并不一定是成本最优的选择。
这两天Hugging Face发布了SmolLM2【4,5】 ,模型有三种配置:0.1B、0.3B 和 1.7B 参数。能够直接在设备上运行,而无需依赖大规模的基于云的基础设施。在性能方面,SmolLM2 优于 Meta Llama 3.2 1B,在某些基准测试中也超过Qwen2.5 1.5B【6】。
【7】关注基于Transformer的仅解码器的语言模型,参数范围在1亿到50亿之间,调查了59个开源SLMs,分析了在三个维度上的技术创新:架构、训练数据集和训练算法。
另外论文对小型语言模型(SLM)的架构分析,强调了6种配置:注意力类型、前馈网络(FFN)类型、FFN比例、FFN激活函数、词汇表大小和归一化类型。(a)展示了SLM的整体结构,以及6种配置的使用频率分类;(b)分析了六种配置随时间的具体选择。很有参考意义。
文章讨论了用于提升小型语言模型(SLMs)性能的几种训练方法。这些方法致力于通过改进模型的学习能力和知识迁移效率,从而提高模型在实际应用中的表现。
最大更新参数化(µP)控制初始化、逐层学习率和激活幅度,以确保分析上稳定的训练,与模型的层宽度无关。除了提高训练稳定性外,µP还改善了从小规模到大规模模型的培训超参数的可转移性,这允许直接使用相同的设置来配置一些优化器超参数,尤其是学习率。例如,Cerebras-GPT使用最大更新参数化来训练模型。
知识蒸馏是大型语言模型(LLM)领域中的一个重要概念。它涉及从大型复杂教师模型中提取有价值的知识,并将其转移到更小、更高效的学生模型中。这种技术是让学生模型学会近似教师的行为和预测。这是通过最小化他们的输出差异来实现的。LaMini-GPT和Gemma-2采用了知识蒸馏。
两阶段预训练策略是一种涉及两个不同阶段训练模型的训练策略。在预训练阶段,MiniCPM仅使用大规模粗糙质量的预训练数据,这些数据丰富,可以在提供更多计算资源时支持持续训练。在退火阶段,使用多样化和高质量的知识以及面向能力的SFT数据,混合到预训练数据中。MninCPM采用了两阶段预训练策略。
2. 模型蒸馏
随着大模型的发展和演进,大规模机器学习和深度学习模型正变得越来越普遍。例如,GPT-3 在 570 GB 的文本数据上进行训练,拥有 1750 亿个参数。LLama 3.1有将近4050亿参数。 尽管训练大型模型普遍有助于提升最先进的性能,但在边缘设备上部署这些大模型并非易事。
至于为什么存在部署大模型到边缘设备的需求(当然大模型变小这件事本身就已经很有价值),这里列出几点考虑作为参考:
低延迟响应:边缘设备可以在数据产生地点附近进行处理,减少数据传输时间,从而实现更快的响应。对于实时应用(如自动驾驶、智能监控和工业自动化)很有价值。
数据隐私与安全:许多应用涉及敏感数据,如医疗记录或个人隐私信息。将处理放在边缘设备上,可以减少将数据传输到云端的需求,从而降低数据泄露的风险。
带宽限制:边缘部署可以减少对带宽的依赖,尤其是在网络条件不稳定或带宽成本高的地区。通过在本地处理数据,可以减少大量数据传输的需要。
持续可用性:即使在网络连接不稳定的情况下,边缘设备仍能独立工作,提供持续的服务。对于关键任务应用(如医疗设备、公共安全等)很有价值。
降低运营成本:通过在边缘设备上处理数据,可以减少对中心数据中心的计算需求,降低云服务的费用,尤其是对于大规模部署。
目前将大模型小型化的技术,主流的主要有剪枝、蒸馏和量化。关于模型剪枝,在前述文章《大模型压缩技术之注意力层剪枝以及与MLP层联合剪枝》有介绍一种处理方式。本文将重点关注模型蒸馏技术,对该技术进行展开讨论。近期清华&微信提出LLM预训练知识蒸馏框架MINIPLM【8】,大家都在这个方向上在发力。
2.1 什么是模型蒸馏
知识蒸馏是一种机器学习技术,用于降低模型的复杂性和大小,同时不会显著降低准确性。在2014年,Hinton等人观察到使用另一个分类器的实值输出作为目标值比使用实际的真实标签更容易训练分类器。他们称这一过程为知识蒸馏,简称为蒸馏,并注意到这种效果即使在已有分类器(称为教师)在与之后用于蒸馏训练新分类器(称为学生)的相同数据上训练时也会出现。知识蒸馏系统由三个关键组成部分:知识、蒸馏算法和师生架构。在知识蒸馏中,通常由一个大型教师模型监督一个小的学生模型。主要思想是学生模型模仿教师模型,如下图所示,在学生模型的训练过程中,教师模型的预测被用作目标标签。这种技术保持了学生模型的小尺寸和计算复杂性,同时允许它从教师模型的知识中获取有效信息,以获得有竞争力甚至更优越的性能。关键问题是如何将知识从一个大型教师模型转移到一个小型学生模型【9,10】。
知识蒸馏的基本过程涉及在数据集上训练学生模型,并使用教师模型生成软目标,这是一组输出类别上的概率分布。这些软目标被用作训练学生模型的目标标签,除了独热编码的真实标签。这最小化了教师的软目标和学生的预测之间的差异。
使用知识蒸馏的前提,其实是已经假设小模型确实能够学习到大型模型的复杂模式和特征。这种方式使得学生模型能够在参数更少的情况下,仍然实现与教师模型相似的性能。知识蒸馏更多强调的是知识的迁移。关于知识蒸馏的理论或实证理解,可以参考以下工作(Urner等人,2011年;Cheng等人,2020年;Phuong和Lampert,2019a;Cho和Hariharan,2019年)。
具体来说,Urner等人(2011年)证明了使用未标记数据从教师模型到学生模型的知识转移是PAC可学习的。为了理解知识蒸馏的工作原理,Phuong和Lampert为深度线性分类器场景中学习蒸馏学生网络的快速收敛获得了理论证明【11】。这个证明回答了学生学习的内容和速度,并给出了决定蒸馏成功的因素。成功的蒸馏依赖于数据几何、蒸馏目标的优化偏差和学生分类器的强单调性。稍微展开一下:数据几何是指数据分布的几何特性,特别是类分离,直接影响风险收敛的速度;优化偏差,梯度下降优化能够找到蒸馏目标的一个非常有利的最小值;以及强单调性,当训练集的大小增加时,学生分类器的预期风险总是下降。
Cheng等人从深度神经网络的中间层提取视觉概念,以解释知识蒸馏【12】。这里稍微展开说一下,论文所提的研究方法还是比较有参考性的。
Cheng等人提出通过量化和分析编码在深度神经网络(DNN)中间层的任务相关和任务不相关的视觉概念来解释知识蒸馏的成功。更具体地说,提出了以下三个假设。1. 知识蒸馏使DNN学习到比从原始数据学习更多的视觉概念。2. 知识蒸馏确保DNN倾向于同时学习各种视觉概念。而在从原始数据学习的情境中,DNN是顺序学习视觉概念的。3. 知识蒸馏产生的优化方向比从原始数据学习更稳定。因此,作者设计了三种数学度量来评估DNN的特征表示。在这项工作中,量化并比较通过知识蒸馏学习的DNN和从原始数据学习的DNN编码的知识量来分析知识蒸馏所起到的作用。这里从原始数据学习的DNN被称为基线网络。特定层的知识量被测量为视觉概念的数量(例如物体部分如尾巴、头部等)。
假设1:知识蒸馏使DNN学习到更多的视觉概念。
视觉概念被定义为图像区域,其信息被显著减少丢弃,并主要由DNN使用。 区分与任务相关的视觉概念和其他概念,即任务不相关的概念。以分类任务为例,如上图所示,前景中的视觉概念通常被视为任务相关,而背景中的视觉概念被认为是任务不相关的。DNN倾向于暴露任务相关的视觉概念并丢弃任务不相关的概念,以学习区分性特征。与基线网络(从原始数据学习)相比,训练较好的教师网络一般被认为编码了更多的任务相关视觉概念和/或更少的任务不相关概念。因为学生网络模仿教师网络的逻辑,所以学生网络应该包含更多的任务相关视觉概念和更少的任务不相关概念。
假设2:知识蒸馏确保DNN倾向于同时学习各种视觉概念。
相比之下,基线网络倾向于顺序学习视觉概念,即在不同的时期学习不同的概念。
假设3:知识蒸馏通常比从原始数据学习产生更稳定的优化方向。
当从原始数据学习时,DNN一般试图在早期建模各种视觉概念,然后在后期丢弃非区分性的概念,这也是导致不稳定的优化方向的原因。不同时期不一致的优化方向的现象可以称之为“绕道”。论文针对上述提出的三种假设,提出三种数学度量来量化DNN中间层隐藏的视觉概念,并分析学习过程中视觉概念的学习方式。这些度量分别测量1. 视觉概念的数量,2. 不同概念的学习速度,3. 优化方向的稳定性。使用这些度量在比较研究中分析学生网络和基线网络,以证明三个假设。更具体地说,学生网络是通过知识蒸馏学习的,而从原始数据学习的基线网络构建得与学生网络具有相同的架构。
除了上述提到的关于知识蒸馏的研究,【9】还列举了一系列相关研究工作(后续对于蒸馏学习的知识点介绍主要会参考这篇综述文章):Ji和Zhu从风险界限、数据效率和不完美教师的角度理论上解释了知识蒸馏(Ji和Zhu,2020年)。Cho和Hariharan详细实证分析知识蒸馏的有效性(Cho和Hariharan,2019年)。实证结果表明,较大的模型可能不是更好的教师,因为模型容量差距(Mirzadeh等人,2020年)。实验还表明,蒸馏对学生学习有负面影响。Cho和Hariharan(2019年)没有涵盖关于知识、蒸馏和师生之间相互影响的不同形式的知识蒸馏的实证评估。知识蒸馏还探讨了标签平滑、评估教师的准确性以及获得最优输出层几何形状的先验(Tang等人,2020年)。知识蒸馏用于模型压缩,类似于人类学习的方式。受此启发,知识蒸馏方法扩展到师生学习(Hinton等人,2015年)、相互学习(Zhang等人,2018b)、助教(Mirzadeh等人,2020年)、终身学习(Zhai等人,2019年)和自学(Yuan等人,2020年)。知识蒸馏的大多数扩展都集中在压缩深度神经网络上。此外,知识蒸馏从一个模型到另一个模型的知识转移可以扩展到其他任务,如对抗性攻击(Papernot等人,2016年)、数据增强(Lee等人,2019a;Gordon和Duh,2019年)、数据隐私和安全(Wang等人,2019a)。受模型压缩的知识蒸馏启发,知识转移的思想进一步应用于压缩训练数据,即数据集蒸馏,它将知识从大型数据集转移到小型数据集,以减少深度模型的训练负载(Wang等人,2018c;Bohdal等人,2020年)。
2.2 模型蒸馏核心
知识蒸馏的框架结构以及相邻部分之间的关系:
从上图中可以看到,知识蒸馏其实涉及三个非常重要的模块,即图中红色方块所示:Knowledge(知识)、Teacher-Student Architecture(师生架构)、Distillation(蒸馏策略)。
2.2.1 知识
传统的知识蒸馏使用大型深度模型的logits作为教师知识。中间层的激活、神经元或特征也可以作为指导学生模型学习的知识。不同激活、神经元或样本对之间的关系包含了教师模型学习到的丰富信息。此外,教师模型的参数(或层之间的连接)也包含了另一种知识。主流形式的知识有以下几种:基于响应的知识、基于特征的知识以及基于关系的知识。下图展示了教师模型中不同类别知识的直观示例。
2.2.1.1 基于响应的知识(Response-Based Knowledge)
基于响应的知识通常指的是教师模型最后一个输出层的神经响应。主要思想是直接模仿教师模型的最终预测。基于响应的知识蒸馏简单而有效。给定一个向量logits z作为深度模型最后一个全连接层的输出,基于响应的知识的蒸馏损失可以被制定为:
其中表示logits的散度损失,和 分别是教师和学生的logits。一个典型的基于响应的知识蒸馏模型如图所示。
基于响应的知识可以用于不同类型的模型预测。例如,在目标检测任务中,响应可能包含logits以及边界框的偏移量。基于响应的知识还被进一步探索以解决以真实标签为条件目标的信息。图像分类中基于响应的知识被称为软目标。具体来说,软目标是输入属于类别的概率,可以通过softmax函数估计为:
其中 是第i个类别的logit,引入了一个温度因子T来控制每个软目标的重要性。软目标包含了来自教师模型的信息丰富的暗知识。因此,软logits的蒸馏损失可以被重写为:
一般, 采用Kullback-Leibler散度损失。显然,优化方程可以使学生的logits 与教师的 相匹配。学生损失总是定义为学生模型的软logits和真实标签之间的交叉熵损失 。
基于响应的知识的思想很直接,特别是在“暗知识”的背景下。从另一个角度来看,软目标的有效性类似于标签平滑或正则化器。然而,基于响应的知识通常依赖于最后一层的输出,例如软目标,因此无法解决来自教师模型的中间级监督。另外由于软logits实际上是类别概率分布,基于响应的知识蒸馏也限于监督学习。
2.2.1.2 基于特征的知识
深度神经网络擅长学习具有递增抽象级别的多层次特征表示,也称为表示学习。因此,最后一层的输出和中间层的输出,即特征图,都可以用作指导学生模型训练的知识。具体来说,来自中间层的基于特征的知识是响应式知识的一种扩展,特别是对于训练更深的网络。
中间表示可以提供改善学生模型训练的提示。主要思想是直接匹配教师和学生的特征激活。受此启发,【9】给出了一系列工作,提出各种其他方法来间接匹配特征(Zagoruyko和Komodakis,2017年;Kim等人,2018年;Heo等人,2019c;Passban等人,2021年;Chen等人,2021年;Wang等人,2020b)。具体来说,Zagoruyko和Komodakis(2017年)从原始特征图中派生出一个“注意力图”来表达知识。注意力图通过使用神经元选择性转移来泛化。Passalis和Tefas(2018年)通过匹配特征空间中的概率分布来传递知识。为了更容易地传递教师知识,Kim等人(2018年)引入了所谓的“因素”,作为中间表示的更易于理解的形式。为了减少教师和学生之间的性能差距,Jin等人(2019年)提出了路由约束的提示学习,通过教师的提示层的输出来监督学生。Heo等人(2019c)提出使用隐藏神经元的激活边界进行知识传递。有趣的是,教师模型中间层的参数共享与基于响应的知识一起也被用作教师知识(Zhou等人,2018年)。为了匹配教师和学生之间的语义,Chen等人(2021年)提出了跨层知识蒸馏,通过注意力分配为每个学生层分配适当的教师层。
一般来说,基于特征的知识传递的蒸馏损失可以被制定为:
其中 和 分别是教师和学生模型中间层的特征图。转换函数,和 ,通常在教师和学生模型的特征图形状不同时应用。 表示用于匹配教师和学生模型特征图的相似性函数。
上图显示了一个一般的基于特征的知识蒸馏模型。此外从特征类型、源层和蒸馏损失的角度还给出了不同类型的基于特征的知识,如表所示。
具体来说,,, 和 分别表示L2范数距离、L1范数距离、交叉熵损失和最大均值差异损失。
2.2.1.3 基于关系的知识
基于响应和基于特征的知识都使用了教师模型中特定层的输出。基于关系的知识进一步探索了不同层或数据样本之间的关系。 为了探索不同特征图之间的关系,有学者提出了一个解决方案流程(FSP),它由两个层之间的格拉姆矩阵定义。FSP矩阵总结了特征图对之间的关系。它是通过两层特征之间的内积来计算的。利用特征图之间的相关性作为蒸馏知识,通过奇异值分解提出了知识蒸馏,以提取特征图中的关键信息。为了使用多个教师的知识,可以分别使用每个教师模型的logits和特征作为节点形成两个图。具体来说,在知识转移之前,通过logits和表示图对不同教师的重要性和关系进行建模。也有工作提出了基于多头图的知识蒸馏。图知识是通过多头注意力网络的任何两个特征图之间的数据内关系。为了探索成对提示信息,学生模型还模仿教师模型提示层对之间的互信息流。一般来说,基于特征图关系的关系型知识蒸馏损失可以被制定为:
其中 和 分别是教师和学生模型的特征图。从教师模型中选择的特征图对 和 ,以及从学生模型中选择的 和 。Ψt(.) 和 Ψs(.) 是来自教师和学生模型的特征图对的相似性函数。 表示教师和学生特征图之间的相关性函数。
传统的知识转移方法通常涉及个体知识蒸馏。教师的个体软目标直接蒸馏到学生中。实际上,蒸馏的知识不仅包含特征信息,还包含数据样本之间的相互关系。具体来说,Liu等人(2019g)通过实例关系图提出了一种稳健有效的知识蒸馏方法。实例关系图中传递的知识包含实例特征、实例关系以及跨层的特征空间转换。有学者提出了一种基于关系的知识蒸馏,它从实例关系中转移知识。基于流形学习的思想,通过特征嵌入学习学生网络,保留教师网络中间层样本的特征相似性。数据样本之间的关系被建模为使用数据的特征表示的概率分布。教师和学生的概率分布通过知识转移进行匹配。还有的工作提出了一种保持相似性的知识蒸馏方法。特别是,从教师网络中输入对的相似激活产生的保持相似性知识被转移到学生网络中,并保留成对的相似性。Peng等人(2019a)提出了一种基于相关一致性的知识蒸馏方法,其中蒸馏的知识包含实例级信息和实例之间的相关性。使用相关一致性进行蒸馏,学生网络可以学习实例之间的相关性。
2.2.2 知识蒸馏的学习方案
知识蒸馏的学习方案可以直接分为三个主要类别:离线蒸馏、在线蒸馏和自蒸馏。
2.2.2.1 离线蒸馏
大多数以前的知识蒸馏方法都是离线工作的。在传统的知识蒸馏中,知识从一个预训练的教师模型转移到学生模型中。因此,整个训练过程有两个阶段,即:1)在蒸馏之前,首先对大型教师模型进行一系列训练样本的训练;2)在蒸馏期间,使用教师模型提取以logits或中间特征形式的知识,然后用于指导学生模型的训练。 离线蒸馏的第一阶段通常不被视为知识蒸馏的一部分,即假定教师模型是预定义的。对教师模型结构及其与学生模型的关系关注较少。因此,离线方法主要关注改进知识转移的不同部分,包括知识的设计和匹配特征或分布匹配的损失函数。离线方法的主要优点是它们简单且易于实现。例如,教师模型可能包含一组使用不同软件包训练的模型,可能位于不同的机器上。知识可以被提取并存储在缓存中。 离线蒸馏方法通常采用单向知识转移和两阶段训练程序。然而,无法避免复杂、高容量的教师模型和巨大的训练时间,而在离线蒸馏中学生模型的训练通常在教师模型的指导下是高效的。此外,大型教师和小规模学生之间的容量差距总是存在的,学生通常在很大程度上依赖于教师。
2.2.2.2 在线蒸馏
在没有大型高容量高性能教师模型可用时,提出了在线蒸馏以进一步提高学生模型的性能。在在线蒸馏中,教师模型和学生模型同时更新,整个知识蒸馏框架是端到端可训练的。 具体来说,在深度互学习中,多个神经网络以协作方式工作。任何一个网络可以是学生模型,其他模型在训练过程中可以是教师。为了提高泛化能力,通过使用软logits的集成,深度互学习得到了扩展。Chen等人(2020a)进一步引入辅助同伴和组长进入深度互学习,形成一个多样化的同伴模型集合。为了降低计算成本,有学者提出了一个多分支架构,其中每个分支表示一个学生模型,不同的分支共享相同的主干网络。Anil等人(2018年)使用在线蒸馏来训练大规模分布式神经网络,并提出了一种称为共蒸馏的在线蒸馏变体。共蒸馏并行训练具有相同架构的多个模型,任何一个模型都通过从其他模型转移知识来训练。有工作提出了一种在线对抗性知识蒸馏方法,通过使用来自类别概率和特征图的知识,同时训练多个网络。最近,通过使用GAN生成分歧示例,设计了一种对抗性共蒸馏。 在线蒸馏是一种具有高效并行计算的单阶段端到端训练方案。然而,现有的在线方法(例如,互学习)通常未能解决在线设置中的高容量教师问题,这使得进一步探索在线设置中教师和学生模型之间的关系成为一个有趣的话题。
2.2.2.3 自蒸馏
在自蒸馏中,相同的网络被用作教师和学生模型,这是在线蒸馏的一个特例。具体来说,Zhang等人(2019b)提出了一种新的自蒸馏方法,其中从网络的深层部分提取知识并蒸馏到其浅层部分。网络利用其自身层的注意力图作为其较低层的蒸馏目标。快照蒸馏是自蒸馏的一种特殊变体,其中网络(教师)在早期的训练周期中的知识被转移到其后期的训练周期(学生)中。Yuan等人提出了基于标签平滑正则化分析的无教师知识蒸馏方法。还有工作提出了一种新的自知识蒸馏方法,其中自知识由预测概率组成,而不是传统的软概率。这些预测概率由训练模型的特征表示定义。它们反映了特征嵌入空间中数据的相似性。
2.2.3 教师-学生架构
在知识蒸馏中,教师-学生架构是形成知识转移的通用载体。换句话说,从教师到学生的知识获取和蒸馏的质量也取决于如何设计教师和学生网络。根据人类学习的习惯,总是希望学生能找到一位合适的教师。因此,在知识蒸馏中很好地捕获和蒸馏知识,如何选择或设计适当的教师和学生结构是一个重要但困难的问题。
知识蒸馏最初被设计用来压缩深度神经网络的集成。深度神经网络的复杂性主要来自两个维度:深度和宽度。通常需要将知识从更深、更宽的神经网络转移到更浅、更薄的神经网络。学生网络通常被选择为:1)教师网络的简化版本,层数更少,每层的通道数也更少;2)教师网络的量化版本,其中网络结构被保留;3)具有高效基本操作的小网络;4)具有优化的全局网络结构的小网络;5)与教师相同的网络,教师和学生神经网络之间的模型容量差距可能会降低知识转移的效果。为了有效地将知识转移到学生网络,有很多工作已经提出了多种方法来控制模型复杂度的降低(Zhang等人,2018b;Nowak和Corso,2018年;Crowley等人,2018年;Liu等人,2019a,i;Wang等人,2018a;Gu和Tresp,2020年)。具体来说,Mirzadeh等人(2020年)引入了一位教师助手来减少教师模型和学生模型之间的训练差距。通过残差学习进一步减少了这一差距,即助手结构被用来学习残差误差(Gao等人,2021年)。另一方面,一些最近的方法也关注于最小化学生模型和教师模型结构之间的差异。例如,将网络量化与知识蒸馏结合起来,即学生模型是教师模型的小且量化的版本。比如提出了一种结构压缩方法,涉及将多层学到的知识转移到单层。或者在保持感受野的同时,逐步从教师网络向学生网络进行块状知识转移。在在线设置中,教师网络通常是学生网络的集成,其中学生模型彼此之间具有相似的结构(或相同结构)。
2.2.4 蒸馏算法
直接匹配基于响应的知识、基于特征的知识或特征空间中的表示分布是知识转移的有效想法。为了在更复杂的设置中改进知识转移过程,目前已经提出了许多不同的算法。本文给出知识蒸馏领域内典型蒸馏方法类型。
2.2.4.1 对抗性蒸馏
在知识蒸馏中,教师模型很难从真实的数据分布中完美学习。同时,学生模型只有有限的容量,因此无法准确模仿教师模型。一种方式是利用生成对抗网络或GANs的思想,关于GAN的原理可以参考《生成式模型算法原理深入浅出》,来训练学生模型的方法以模仿教师模型。具体来说,GAN中的判别器估计一个样本来自训练数据分布的概率,而生成器则试图使用生成的数据样本欺骗判别器。受此启发,许多对抗性知识蒸馏方法被提出,以使教师和学生网络对真实数据分布有更好地理解。如上图所示,基于对抗性学习的蒸馏方法,特别是使用GANs的方法,可以分为以下三个主要类别。在第一类别中,训练一个对抗性生成器来生成合成数据,这些数据要么直接用作训练数据集,要么用于扩充训练数据集,利用对抗性生成器生成难以处理的样本以进行知识转移。第二类别中引入了一个判别器,通过使用logits或特征,来区分来自学生和教师模型的样本,具体来说,使用未标记的数据样本来形成知识转移。在第三类别中,对抗性知识蒸馏以在线方式进行,即在每次迭代中共同优化教师和学生。用知识蒸馏来压缩GANs,一个学习到的小GAN学生网络通过知识转移模仿一个更大的GAN教师网络。
2.2.4.2 多教师蒸馏
不同的教师架构可以为学生网络提供自己的有用知识。在训练学生网络期间,多个教师网络可以单独且整体地用于蒸馏。在典型的教师-学生框架中,教师通常拥有一个大型模型或大型模型的集成。为了从多个教师转移知识,最简单的方法是使用所有教师的平均响应作为监督信号。多教师蒸馏的通用框架如下所示,目前有多项工作证明多个教师网络对使用logits和特征表示作为知识训练学生模型是有效的。除了所有教师的平均logits外,还可以纳入中间层的特征,以实现不同训练样本之间的差异性。
2.2.4.3 跨模态蒸馏
在训练或测试期间,某些模态的数据或标签可能不可用。因此,跨不同模态之间转移知识是很重要的。以下是几个使用跨模态知识转移的典型场景。比如给定一个在一种模态(例如,RGB图像)上预训练的教师模型,该模型拥有大量标注良好的数据样本,将教师模型的知识转移到一个新的未标记输入模态的学生模型上。举例来说,比如方法依赖于涉及两种模态的未标记配对样本,即RGB和深度图像。然后,教师从RGB图像中获得的特征被用于学生模型的监督训练。配对样本背后的思想是通过成对样本注册传递注释或标签信息。
2.2.4.4 其他蒸馏模式
除此之外,还有基于图的蒸馏、无数据蒸馏、量化蒸馏。基于图的蒸馏方法的主要思想是1)使用图作为教师知识的载体;或2)使用图来控制教师知识的传递消息。基于图的蒸馏的通用框架如下图所示。
量化蒸馏,网络量化通过将高精度网络(例如,32位浮点数)转换为低精度网络(例如,2位和8位)来降低神经网络的计算复杂性。同时,知识蒸馏的目标是训练一个小型模型,使其性能与复杂模型相当。 一些KD方法已经提出,在教师-学生框架中使用量化过程。量化蒸馏方法的框架如图所示。
一个高精度的教师网络将知识转移到一个小型的低精度学生网络。为了确保小型学生网络准确模仿大型教师网络,首先对特征图上的全精度教师网络进行量化,然后将知识从量化的教师网络转移到量化的学生网络。
3. 自然语言处理中的知识蒸馏
传统的语言模型,如BERT,结构复杂庞大,非常耗时且资源消耗大。在自然语言处理(NLP)领域,知识蒸馏的应用还是蛮广泛的,目的是为了获得轻量级、高效且有效的语言模型。Bert作为多语言表示模型,业界相继提出了几种使用知识蒸馏的轻量级BERT变体(称为BERT模型压缩)。BERT-PKD提出了BERT模型压缩的患者知识蒸馏,用于情感分类、释义相似度匹配、自然语言推理和机器阅读理解。在患者KD方法中,从教师的提示层的[CLS]标记的特征表示被转移到学生。为了加速语言推理,TinyBERT被提出,这是两阶段变换器知识蒸馏。它包含通用领域和任务特定知识蒸馏。对于句子分类和匹配,提出了从BERT教师模型到双向长短期记忆网络(BiLSTM)的任务特定知识蒸馏。DistilBERT设计并学习了一个与BERT具有相同通用结构的轻量级学生模型,并在各种NLP任务上进行了学习。下图展示了DistilBERT的结构。
此外,还有很多从不同角度为NLP提供的典型KD方法。对于问答,为了提高机器阅读理解的效率和鲁棒性,Hu等人(2018)提出了一种注意力引导的答案蒸馏方法,它融合了通用蒸馏和答案蒸馏,以避免混淆的答案。对于任务特定蒸馏(Turc等人,2019),研究了预训练、蒸馏和微调之间的相互作用对于紧凑学生模型的知识蒸馏的性能。提出的预训练蒸馏在情感分类、自然语言推理、文本蕴含方面表现良好。在自然语言理解的多任务蒸馏背景下,Clark等人(2019)提出了单一多任务重生蒸馏,这基于重生神经网络(Furlanello等人,2018)。单任务教师教授多任务学生。对于多语言表示,知识蒸馏在多语言词嵌入之间转移知识,用于双语词典归纳(Nakashole和Flauger,2017)。对于资源较少的语言,知识转移在多语言模型的集成中是有效的(Cui等人,2017)。
总结:
1.知识蒸馏提供了高效的轻量级语言深度模型。大容量教师模型可以将丰富知识从大量不同类型的语言数据转移到训练小型学生模型,使学生能够快速完成许多语言任务,并具有有效性能。
2.教师-学生知识转移可以轻松有效地解决许多多语言任务,考虑到多语言模型之间的知识可以相互转移和共享。
3.在深度语言模型中,序列知识可以从大型网络有效地转移到小型网络。
扩展阅读:
5. 参考材料
【1】投资人逃离大模型
【2】Computational Bottlenecks of Training Small-scale Large Language Models
【3】OPT: Open Pre-trained Transformer Language Models
【4】https://huggingface.co/HuggingFaceTB/SmolLM2-1.7B-Instruct
【5】SmolLM2 发布:新系列(0.1B、0.3B 和 1.7B)小语言模型,性能优于 Meta Llama 3.2 1B
【6】https://ollama.com/library/smollm2
【7】SMALL LANGUAGE MODELS: SURVEY, MEASUREMENTS, AND INSIGHTS
【9】Knowledge Distillation: A Survey
【11】Towards Understanding Knowledge Distillation
【12】Explaining Knowledge Distillation by Quantifying the Knowledge
原文地址:https://blog.csdn.net/weixin_65514978/article/details/143108218
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!