基于大语言模型的知识蒸馏

一句话解释:知识蒸馏是一种模型压缩技术(model compression technique),通过让小模型(学生模型)学习大模型(教师模型)的输出或中间表示,以在保持精度的同时减少计算量和存储需求。

传统意义上的知识蒸馏

背景知识及总览
  1. Bucilua等人(2006年)首次提出了模型压缩,将信息从大型模型或模型集合转移到训练小型模型中,而不会显著降低准确性。

  2. 后来Hinton等人(2015年)正式提出为知识蒸馏,小模型从大模型中学习。

  3. 知识蒸馏对象由传统深度神经网络(DNNs)到如今的通用大语言模型(LLMs)。

image


传统知识蒸馏主要从下面几个角度下手:知识类型、蒸馏方案、师生架构、蒸馏算法和蒸馏应用。

知识类型(knowledge types)

image


知识分为三种类型:基于响应(response) 的知识、基于特征(feature) 的知识和基于关系(relation) 的知识。
由上图可以清晰的看出:
1.基于响应的知识依赖于从教师模型的输出层来获取知识(通过监督微调学习教师模型输出概率分布)。
2.基于特征的知识依赖于匹配学生模型和教师模型隐藏层中的特征表示(例如CV中不同卷积层代表图片不同特征:边缘、纹理和形状等)。
3.基于关系的知识依赖于 <输入x,特征网络n、输入y> 类似这种三元组内部的关系(考虑样本之间的关系,如数据分布模式、隐空间结构和样本之间相似性等)。

蒸馏方案(Distillation Schemes)

image

1.离线蒸馏(Offline Distllation)
两步走:
①.先用一组数据样本训练大型教师模型。
②.提取教师模型的logits或中间特征形式的知识,用于指导学生模型训练。

logits:模型在softmax或sigmoid前的输出值,本身不是概率分布。

优点:简单易行
缺点:训练大模型开销大。学生模型依赖于教师模型,且差距依然存在。

2.在线蒸馏(Online Distllation)
教师模型和学生模型同步更新,整个知识蒸馏框架式端到端可训练的。
优点:高效、并行计算、端到端。
缺点:很难适用于高容量的教师模型

3.自我蒸馏(Self-Distllation)
在自我蒸馏中,教师和学生使用相同的网络,自我蒸馏可看成在线蒸馏的一个特例。

总结
离线蒸馏是指知识渊博的老师教给学生知识;在线蒸馏意味着教师和学生共同学习;自我蒸馏是指学生自学知识。

这三种蒸馏方案可以相互结合。

师生模型架构(Teacher-Student Architecture)

image

深度神经网络主要受两方面影响:深度和宽度(Depth and width)
学生网络的选择:
①.教师网络的简化(quantized)版本,每层具有更少的层和更少的通道。
②.教师网络的量化(quantized)版本,其中保留了网络的结构。
③.具有高效基本操作的小型网络。
④.具有优化的全局网络结构的小型网络。
⑤.与教师相同的网络。

蒸馏算法(Distillation Algorithms)

1.对抗式蒸馏(Adversarial Distillation)
挑战:知识蒸馏中,教师模型很难从真实的数据分布中完美地学习。同时,学生模型的容量很小,无法准确模仿教师模型。

生成式对抗网络GAN(generative adversarial networks)的出现缓解了这一问题。

GAN中的鉴别器(discriminator)估计样本来自训练数据分布的概率,也就是找出数据中的假数据,而生成器(generator)试图使用生成的数据样本欺骗鉴别器,也就是生成更逼真于数据集的数据。

GAN的使用可以总结出三个要点:
①.GAN是通过教师知识转移增强学生学习能力的有效工具。
②.联合GAN和KD可以为提高KD性能生成有价值的数据并且克服数据不可用和无法获取的局限性。
③.KD可用于压缩GAN。

2.多教师蒸馏(Multi-teacher Distillation)

image

最简单的方法就是用所有教师的平均响应作为监督信号,此外还有许多不同的方法,例如给教师添加不同类型的噪声、使用具有特征集合的多个教师模型等。

3.其他蒸馏方式
此外,其他蒸馏方式例如跨模态蒸馏(在不同模态之间传递知识)、基于图蒸馏(将图作为教师知识的载体或者使用图形来控制教师知识的消息传递)、基于注意力蒸馏(注意力可以很好地反映卷积神经网络的神经元激活)、无数据蒸馏(利用GAN生成数据)、定量蒸馏终身(lifelong)蒸馏(旨在以与人类相似的方式学习)、基于神经结构搜索(NAS)蒸馏(旨在自动识别深度神经模型并自适应地学习适当的深度神经结构)。

基于大语言模型的知识蒸馏

问题提出

1.尽管例如GPT-4和Gemini这种转悠模型能力强大,但是通常伴随着高额的使用费和受限的访问权限。
2.使用这些模型可能涉及数据隐私和数据安全问题。
3.可能并不总是适用于一些横向领域的应用。

image

KD在LLM中起到三个关键作用:1)主要是增强能力;2)提供传统的压缩效率;3)通过自我生成的知识进行自我改进的新型趋势;

基于LLM的知识蒸馏总览

image

传统意义上的知识蒸馏主要集中在将知识从复杂、繁琐的神经网络转移到更紧凑的架构上,而LLM拥有巨大参数量导致当前的知识蒸馏重点从单纯的架构压缩转移到知识启发和转移

当前的知识蒸馏也强调了更抽象的品质转移,例如推理模型(reasoning patterns)、偏好一致性(preference alignment)和价值一致性(value alignment)。

数据增强(data augmentation)也称为不可或缺的一部分,旨在以某种方式去扩展训练数据集,例如通过提示词(prompt)指导LLM生成高质量目标数据集。

蒸馏算法可以分为以下几种:监督微调(Supervised fine-tuning)、发散最小化(divergence minimization)、强化学习技术(reinforcement learning techniques)和排名优化策略(rank optimization strategies)。

image


蒸馏管道(pipeline)可以分为四个步骤:
①.选择特定领域或技能的教师LLM。
②.选择种子知识作为输入(种子知识通常包括与教师LLM的引出技能或领域知识相关的小数据集或特定数据线索)。
③.生成蒸馏知识(可以包含问答对话、自然语言解释、模型logits或hidden features等)
④.用特定学习目标训练学生模型。

获取知识

image

根据获取知识的方式可以分为下面几类:标签化(labeling)、扩展(expansion)、特征理解(feature uderstanding)、反馈机制(feedback mechanisms)和自我知识(self-knowledge)。

标签化(Labeling)

标记知识是指根据指令I或演示c,使用教师LLM将给定输入x的输出y标记为种子知识,目标是得到x对应输出的y,其中c=(x1)c=(x1,y1),...,(xn,yn)c=(x1,y1),...,(xn,yn)。可以用如下公式表示:

D(lab)={x,y∣x∼X,y∼pT(y∣I⊕c⊕x)}D(lab)={x,y∣x∼X,y∼pT(y∣I⊕c⊕x)}

其中⊕⊕表示融合两段文本。
常用的指导标签生成的指令类型是思维链(chain-of-thought)

COT:一种提升大模型推理能力的方法,它通过让模型逐步拆解复杂问题,像人类思考一样分步骤推理,而不是直接给出答案,从而提高准确性和可解释性。

标签化缺点:受到输入数据的规模和种类的限制。

扩展(Expansion)

扩展和标签化不同的是,提供指令I和演示c,指导LLM生成输入x和输出y
可用如下公式表示:

D(exp)={(x,y)∣x∼pT(x∣I⊕c),y∼pT(y∣I⊕x)}D(exp)={(x,y)∣x∼pT(x∣I⊕c),y∼pT(y∣I⊕x)}

缺点:1.生成的数据质量和多样性依赖于教师LLM和演示种子c,可能会导致数据集具有该LLM的固有偏差。2.扩展过程可能会无意中放大种子数据存在的偏差。

数据监管(Data Curation)

数据监管通过广泛的元信息作为种子只是来管理高质量或大规模的数据。
它是从头开始合成数据的方法,元信息如主题或知识点可以被纳入这个过程,以便生成可控的x和y,以产生不仅规模大且质量高的数据集。可用如下公式表示:

D(cur)={(x,y)∣x∼pT(x∣I⊕m),y∼pT(y∣I⊕x)}D(cur)={(x,y)∣x∼pT(x∣I⊕m),y∼pT(y∣I⊕x)}

其中,m代表用于指导x合成的各种元信息。

特征(Feature)

此方法适用于白盒模型且参数小于1B的语言模型,类似传统方法匹配师生模型隐藏层的特征表示。
教师模型用其内部表示对输出序列y进行注释,然后使用KL散度等方法提取到学生模型中。可用如下公式表示:

D(feat)={(x,y,ϕfeat(x,y;θT))∣x∼X,y∼Y}D(feat)={(x,y,ϕfeat(x,y;θT))∣x∼X,y∼Y}

其中,ϕfeat(⋅;θT)ϕfeat(·;θT)表示从教师LLM中提取特征知识(如输出分布)的操作。

缺点:可能不如黑箱模型(闭源的一般参数都很大,如GPT-4)。

反馈(Feedback)

通过教师模型给学生模型提供反馈,学生模型根据反馈来完善自己,来提高学生模型的学习效果(多轮迭代)。反馈如提供偏好(preferences)、评估(assessments)或者纠正信息(corrective information)。可用如下公式表示:

D(fb)={(x,y,ϕfb(x,y;θT))∣x∼X,y∼pS(y∣x)}D(fb)={(x,y,ϕfb(x,y;θT))∣x∼X,y∼pS(y∣x)}

其中,ϕfb(⋅;θT)ϕfb(·;θT)表示教师LLM的反馈。

自我知识(Self-Knowledge)

从学生模型本身引出知识,称为自我知识。同一个模型既充当教师又充当学生,通过提取和精炼自己先前生成的输出来迭代地改进自己。可用如下公式表示:

D(sk)={(x,y,ϕsk(x,y))∣x∼S,y∼pS(y∣I⊕x)}D(sk)={(x,y,ϕsk(x,y))∣x∼S,y∼pS(y∣I⊕x)}

其中,ϕsk(⋅)ϕsk(·)是一个广义函数,表示自生成输出y的额外过程,可能包括但不限于过滤(filtering)、奖励(rewarding)或其他增强或评估y的机制。

蒸馏算法(Distillation algorithms)

大致包含以下四类:监督微调(Supervised Fine-Tuning)、发散和相似性(Divergence and Similarity)、强化学习(Reinforcement Learning)和排名优化(Rank Optimization)。

监督微调(SFT)

将学生预测和教师预测对齐。根据从教师模型得到的(x,y)数据对来训练学生模型。可用如下公式表示:

LSFT=Ex∼X,y∼pT(y∣x)[−logpS(y∣x)]LSFT=Ex∼X,y∼pT(y∣x)[−log⁡pS(y∣x)]

发散和相似(Divergence and Similarity)

适用于白盒模型,从教师LLM中提取特征知识,包括分布隐藏状态特征,然后与学生模型中的特征相匹配。大致可分为两类:最小化概率分布的发散增强隐藏状态的相似性

发散(Divergence)

目标是使教师模型和学生模型的概率分布之间的散度最小化。可用如下公式表示:

LDiv=Ex∼X,y∼Y[D(pT(y∣x),pS(y∣x))]LDiv=Ex∼X,y∼Y[D(pT(y∣x),pS(y∣x))]

image


上图展示正向KL散度和反向KL散度的区别。正向KL散度倾向于覆盖目标分布的所有模式,但精度较低(模式覆盖),覆盖范围广。反向KL散度倾向于关注最突出的模型(模式寻求),有尖尖。

模式覆盖:可能导致幻觉和低质量的世代。更适用于机器翻译等任务,这些输出模式或变化较少。
模式寻求;可培养更准确的世代但牺牲了多样性。更适用于对话生成和指令调优等任务,这些任务涉及多种模式和更广泛的潜在响应。

相似(Similarity)

目标是将教师模型和学生模型的隐藏状态或特征进行对齐,确保学生模型不仅产生与教师相似的输出,而且以可比的方式处理信息。可用如下公式表示:

LSim=Ex∼X,y∼Y[LF(ΦT(fT(x,y)),ΦS(fS(x,y)))]LSim=Ex∼X,y∼Y[LF(ΦT(fT(x,y)),ΦS(fS(x,y)))]

在基于LLM的KD中,采用相似方法的很少(模型结构复杂,参数量大)。

强化学习(Reinforcement Learning)

适用于利用教师模型的反馈来训练学生模型,主要包含两个阶段:
1.训练蒸馏奖励模型
由输入输出对(x,yw,yl)(x,yw,yl)组成。在这里,ywyw和ylyl代表相对于教师偏好的“获胜”和“失败”输出,可用如下公式表示:

LRM(rϕ,D(fd))=−E(x,yw,yl)∼D(fd)[logσ(rϕ(x,yw)−rϕ(x,yl))]LRM(rϕ,D(fd))=−E(x,yw,yl)∼D(fd)[log⁡σ(rϕ(x,yw)−rϕ(x,yl))]

2.强化学习优化
根据训练好的奖励模型,对由策略πθπθ表示的学生模型进行优化,以最大化预期奖励。同时,它最小化了与参考策略πrefπref的分歧,πrefπref通常是由因子β控制的SFT训练的学生模型的初始策略。可由以下公式表示:

maxπθEx∼X,y∼πθ(y∣x)[rϕ(x,y)−βDKL[πθ(y∣x)∥πref(y∣x)]]maxπθEx∼X,y∼πθ(y∣x)[rϕ(x,y)−βDKL[πθ(y∣x)‖πref(y∣x)]]

除了训练一个专门的奖励模型,也可以将教师模型直接作为奖励模型,在RL期间直接分配奖励。

排名优化(Ranking Optimization)

排名优化为RL提供了一种稳定且计算效率高的方案,用于将偏好反馈注入语言模型。这种对偏好的直接优化,不需要采样输出,使过程更加稳定和高效。
典型的算法有直接偏好优化DPO(Direct Preference Optimization)、排序响应以对齐人类反馈RRHF(Rank Responses to align Human Feedback)和偏好排序优化PRO(Preference Ranking OPtimization)。

技能蒸馏(Skill Distillation)

有如下几种技能:上下文跟踪(Context Following)侧重于学生理解和有效回应输入信息的能力。对齐(alignment)深入研究了学生将其输出与老师的回答对齐的能力。智能体(Agent)强调了语言模型的自主性。NLP任务专业化突出了LLM在各种自然语言处理任务方面的多功能性,展示了其适应性。多模态包括从教师LLM到多模态模型的知识转移。

这里简单介绍一下

上下文跟踪:1.用提示词prompt指导LLM处理上下文。2.使用多轮对话数据训练模型增强多轮对话能力。3.利用检索增强生成(RAG)等技术检索最新知识以提供给LLM。
对齐:1.不仅要模仿教师模型的输出,思考模式也要学会。2.偏好对齐。3.价值对齐。
智能体:1.让LLM学会使用工具。2.有类似COT的能力,将复杂问题拆解成一个个小问题逐个解决。
NLP任务专业化:1.自然语言理解NLU(Natural Language Understanding)。2.自然语言生成NLG(Natural Language Generation)。3.信息检索IR(Information Retrieval)。4.推荐系统(Recommender systems)。5.文本生成评估(Text Generation Evaluation)。6.代码(Code)。
多模态:1.视觉模型。2.多模式。3.其他等等。

 一、大模型风口已至:月薪30K+的AI岗正在批量诞生

2025年大模型应用呈现爆发式增长,根据工信部最新数据:

国内大模型相关岗位缺口达47万

初级工程师平均薪资28K

70%企业存在"能用模型不会调优"的痛点

真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!

二、如何学习大模型 AI ?


🔥AI取代的不是人类,而是不会用AI的人!麦肯锡最新报告显示:掌握AI工具的从业者生产效率提升47%,薪资溢价达34%!🚀

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工

📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)

 

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

*   大模型 AI 能干什么?
*   大模型是怎样获得「智能」的?
*   用好 AI 的核心心法
*   大模型应用业务架构
*   大模型应用技术架构
*   代码示例:向 GPT-3.5 灌入新知识
*   提示工程的意义和核心思想
*   Prompt 典型构成
*   指令调优方法论
*   思维链和思维树
*   Prompt 攻击和防范
*   …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

*   为什么要做 RAG
*   搭建一个简单的 ChatPDF
*   检索的基础概念
*   什么是向量表示(Embeddings)
*   向量数据库与向量检索
*   基于向量检索的 RAG
*   搭建 RAG 系统的扩展知识
*   混合检索与 RAG-Fusion 简介
*   向量模型本地部署
*   …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

*   为什么要做 RAG
*   什么是模型
*   什么是模型训练
*   求解器 & 损失函数简介
*   小实验2:手写一个简单的神经网络并训练它
*   什么是训练/预训练/微调/轻量化微调
*   Transformer结构简介
*   轻量化微调
*   实验数据集的构建
*   …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

*   硬件选型
*   带你了解全球大模型
*   使用国产大模型服务
*   搭建 OpenAI 代理
*   热身:基于阿里云 PAI 部署 Stable Diffusion
*   在本地计算机运行大模型
*   大模型的私有化部署
*   基于 vLLM 部署大模型
*   案例:如何优雅地在阿里云私有部署开源大模型
*   部署一套开源 LLM 项目
*   内容安全
*   互联网信息服务算法备案
*   …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

### 大语言模型知识蒸馏方法及应用 #### 小型化与性能保持之间的平衡 知识蒸馏作为一种有效的模型压缩技术,在大语言模型的应用中扮演着重要角色。这种方法的核心在于利用一个更小、更高效的模型(即学生模型)来模仿较大且更为复杂的教师模型的行为,从而使学生模型能够继承教师模型的能力[^2]。 #### 蒸馏过程的具体实现方式 为了使学生模型更好地学习到教师模型的知识,通常会采用软标签作为辅助手段。具体来说,在训练阶段,不仅关注最终分类结果的硬标签,还会考虑由温度调整后的softmax函数产生的较平滑的概率分布——这被称为软标签。这种做法有助于传递更多关于类别间相对关系的信息给学生模型,进而改善其泛化能力[^1]。 对于自然语言处理任务而言,除了简单的输出层复制外,还可以进一步探索中间表示层面的学习策略。例如,通过对比两者的隐藏状态或自注意力机制下的权重矩阵等方式来进行更加深入细致的知识迁移工作[^4]。 ```python import torch.nn as nn from transformers import BertModel, DistilBertModel class TeacherModel(nn.Module): def __init__(self): super(TeacherModel, self).__init__() self.bert = BertModel.from_pretrained('bert-base-uncased') teacher_model = TeacherModel() class StudentModel(nn.Module): def __init__(self): super(StudentModel, self).__init__() self.distilbert = DistilBERTModel.from_pretrained('distilbert-base-uncased') student_model = StudentModel() ``` 上述代码展示了如何基于预训练库创建教师和学生两个不同大小的语言理解模型实例。这里选择了`DistilBERT`, 它是一个经过BERT精炼得到的小型版本,非常适合用于展示知识蒸馏的概念。 #### 应用场景分析 在实际部署环境中,由于硬件条件限制或其他因素的影响,直接使用超大规模参数量的大语言模型往往不可行。而借助于知识蒸馏技术,则能够在很大程度上缓解这一矛盾:一方面降低了计算资源的需求;另一方面也提高了系统的响应速度和服务质量,使得高性能AI服务得以广泛普及至各种终端设备之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值