对 LLM 执行 Knowledge Distillation知识蒸馏

📅 2026/7/13 22:37:37 👁️ 阅读次数 📝 编程学习
对 LLM 执行 Knowledge Distillation知识蒸馏

定义

Knowledge distillation transfers the learned behaviour of a large teacher model into a smaller, cheaper student model. The core idea is that the teacher’s output distribution over tokens carries far richer signal than ground-truth hard labels alone — revealing inter-class similarities, calibration, and uncertainty that the student can exploit.

知识蒸馏将大型教师模型所学习的行为转移到一个更小、更便宜的学生模型上。

核心思想:教师在 token 上的输出分布所携带的信息远比仅依赖真实硬标签更为丰富——能够揭示出类间相似性、校准程度以及不确定性,这些信息可供学生加以利用

教师模型输出的token 概率分布,相比单一的真实硬标签(标准答案),蕴含丰富得多的监督信号

ground-truth hard labels(硬标签)
传统监督学习的标注方式:只有 1 个正确答案,概率 = 1,其余所有候选概率 = 0
例:分类任务正确答案是 “猫”,标签直接写成 [0, 1, 0, 0],完全忽略其他类别和模型的犹豫
teacher’s output distribution over tokens(教师输出软概率分布)

知识蒸馏里大模型(教师)经过 softmax 输出一整套连续概率:
例:[0.02(狗), 0.90(猫), 0.07(兔子), 0.01(鸟)]

不是非黑即白,包含完整置信信息

inter-class similarities 类别间相似度
教师分布会给语义相近的 token 分配相近高分
比如输入小猫图片,“猫” 0.9、“老虎” 0.07,天然告诉学生:猫和老虎是同类相近物种
硬标签只会标猫 = 1,完全丢失这种相似关系

calibration 概率校准
教师输出的概率能反映模型真实靠谱程度:
如果模型拿不准,最优 token 概率只有 0.4;极度确定则给到 0.98
硬标签永远强制 100% 置信,学生会学不到 “什么时候该犹豫”

uncertainty 不确定性
多候选概率接近时,代表模型不确定;单一 token 概率极高代表高度确定
学生能学会识别模糊场景,减少盲目自信产生的幻觉

蒸馏的四个场景

Temperature-Scaled Softmax 温度缩放 Softmax

提取暗知识 dark knowledge

exposeɪkˈspəʊz
v. 暴露,使显露;使面临,使遭受(危险或不快);揭露,揭发;接触,体验;露出,显露(感情);使(胶卷)曝光
n. 揭露,曝光

softenˈsɒfnv.(使)变软,软化;(使)态度缓和,变宽厚;减轻,削弱;(使)(表情或声音)变轻柔

softened distribution 平滑分布

massmæs
n. 团,块;大量,许多;(常指混乱的)一群,一堆;大量的东西;群众,平民百姓;大多数,多数;质量
adj. 民众的,大量的
v. (使)聚集,(使)集结

高温平滑分布


这里的zi是教师模型原始 logit 打分,T>1 是蒸馏高温

高温平滑分布
T>1 会缩小各个 logit 之间的差距,原本极低概率、但和正确 token 语义近似的次优 token概率被拉高,让分布更均匀

释放暗知识 dark knowledge

硬标签只有正确 token=1,其余全 0
高温 softmax 后,相近候选 token 会保留一小部分概率,这部分差值就是类别相似度、不确定性等隐藏信息(暗知识),是单纯标准答案给不了的信号

在高温下,概率分布会扩散到更多的标记上,从而使接近的替代方案变得可见。
训练过程中,学生使用相同的温度;而在推理阶段,学生则使用 T = 1

什么是「接近的替代方案 near-miss alternatives」

指语义、含义和最优 token 高度接近,但不是标准答案的候选。比如正确词是「猫」,近似替代是「老虎、豹子、小猫」,常温下这些词概率被压到近乎 0,模型直接忽略;高温平滑后,它们分配到明显概率,代表教师模型知道这些词和正确词是同类、语义相近

示例

完整的蒸馏步骤

(离线/白盒范式)

通用的蒸馏损失 - General Distillation Loss



损失由两部分加权组合

第一项:KL 散度匹配教师软分布(蒸馏主项)KL(P_t || P_s):衡量学生高温分布和教师高温分布的差距,让学生复刻教师全部概率分布(吸收暗知识)
T^2补偿项:高温T会压缩梯度幅度,乘T^2把梯度缩放回正常量级,避免梯度消失
α,alpha:权重系数,区间 0.5~0.9,教师越强,α 越大,越侧重匹配教师软分布

第二项:标准交叉熵 CE(真实标签约束)L_CE(y,P_s^(1)):用 T=1 普通 softmax,让学生贴合原始真实标准答案,防止高温平滑后偏离基础事实

典型超参

1- α 控制基础标签损失权重

softened distribution

训练+推理

训练

推理

KL 损失:学教师的语义相似度、不确定性(暗知识)
CE 损失:保证基础任务准确率,兜底真实标签

Offline (White-Box) Distillation 离线蒸馏(白盒)

amortiseəˈmɔːtaɪz
vt. 分期偿还;摊还(债券等);把……转让给教会永久管理

定义

对每一条训练 token,记录教师模型完整 logit 向量(为节省存储空间,也可仅存储前 k 个最高概率 logit)
学生模型以这些预存的概率分布为目标,最小化 KL 散度损失。
在可完全访问教师模型的前提下,该范式是数据利用率最高的蒸馏方案

Motivation 设计初衷
将教师推理与学生训练流程解耦:
先用高端硬件完整运行一次教师模型并缓存输出,后续可以低成本批量训练多个学生小模型

Pros 优点

  • 结果确定、实验可复现
  • 教师推理的硬件成本可分摊到所有学生训练任务
  • 完整保留教师分布携带的全部暗知识信号

什么叫教师推理的硬件成本可分摊到所有学生训练任务?
假设教师完整推理全量数据:需要 200 小时 A100 算力,成本 2 万元;后续要训练 10 个不同的学生模型
离线白盒蒸馏:教师只跑 1 次(2 万),10 个学生共用这份缓存,每个学生仅分摊 2000 元教师成本;学生训练只用普通低成本显卡
在线蒸馏:每训练 1 个学生都要完整跑一次教师,10 个学生总教师算力成本 20 万,开销无法摊薄

Cons 缺点

  • 每个 token 都需要存储维度等于词表大小 |V| 的向量(可通过 Top-k 截断剪枝缓解存储压力)
  • 教师模型是提前离线生成的固定分布,无法根据学生当前的学习缺陷动态调整监督信号

什么叫学生的学习缺陷 - 无法根据学生当前的学习缺陷动态调整监督信号?
学生训练时,会出现固定薄弱点,比如学生对「动物类 token 区分很差」,遇到猫、老虎、豹子经常混淆,或是数学推理类样本正确率极低。
离线教师的分布是训练前一次性生成的,全程不会感知学生当前训练状态:学生现在动物题学不会,教师也不会重新生成更细致、权重更偏向动物类的软分布;无论学生现在擅长什么、薄弱什么,监督信号永远是最初那套固定数据;没有任何机制根据学生的损失、错误样本,动态刷新教师输出

对比在线蒸馏
在线蒸馏训练时,每一轮迭代都会实时跑一遍教师:
学生当前答错某类样本,本轮输入再次送入教师,教师会重新输出全新软分布,针对性给学生提供监督,能跟着学生短板动态调整

离线:考试标准答案提前一次性打印成册,全程不变,不管学生哪里不会,题目答案永远同一套
在线:老师实时监考,看到学生几何题全错,当下重新细化几何解题思路给学生,动态调整辅导内容

其他

White-Box 白盒:可完整读取教师模型内部 logit 原始打分,不是仅能获取文本输出的 API 黑盒
|V|:词表总大小,LLM 词表常达 3 万~12 万,完整存储全部 logit 会产生海量存储开销
amortised 成本分摊:教师只跑一次,后续所有学生训练复用这份缓存,平摊算力成本
decouple 解耦:教师推理阶段和学生训练阶段完全分开,不用同步占用高端显卡
top-k pruning:Top-k 剪枝,只保留概率最高 k 个 logit 存储,丢弃极低概率 token,大幅降低存储占用

Online (Co-Training) Distillation - 在线协同蒸馏

定义

教师模型与学生模型同步前向计算:每一批次训练数据送入学生模型时,实时同步运行教师模型,生成该批次对应的 logits 打分

Motivation 设计动机
让教师模型重点监督学生当前掌握薄弱的样本,类似课程学习(Curriculum)的渐进训练思路

Pros 优点

监督分布实时新鲜,适配学生当前学习状态
支持使用学生自己生成的文本做同策略(on-policy)蒸馏,完美适配 RLHF 强化学习场景

Cons 缺点

GPU 算力开销翻倍:每一轮迭代师生都要完整前向推理
师生同步逻辑复杂,框架实现难度高
大规模分布式训练下扩容难度大

示例


教师模型重点监督学生当前掌握薄弱的样本,这个是怎么做到的?

假设训练到第 100 轮,统计发现:学生在数学推理题目上损失极高、正确率很差
离线蒸馏:数学类教师分布是训练前 1000 轮就固定死的,不管学生数学差不差,监督信号永远不变,不会加重数学样本的约束
在线蒸馏:训练框架会自动提高数学类样本的采样概率,本轮 batch 里数学题占比更高;
每一条数学题实时过教师,生成全新软分布,强制学生本轮重点对齐数学领域的暗知识;
学生短板在哪,当前批次就更多采样哪类数据,教师实时输出匹配的监督信号(logits),动态弥补缺陷

Black-Box (API) Distillation - 黑盒 API 蒸馏

定义

场景:只能获取教师模型文本输出(例如商用闭源 API 大模型),无法拿到底层 logit 打分;学生模型以教师生成的文本为标准,做监督微调 SFT 训练,可额外增加思维链 CoT 推理文本作为数据增强

Motivation 设计动机
工程现实约束:绝大多数前沿商用大模型(GPT 类闭源模型)不会对外暴露内部 logits 原始打分,只能调用 API 获取文字回复。

Pros 优点

流水线简单易实现;
只要能调用 API 文本输出,任意闭源专有模型都能拿来做蒸馏。

Cons 缺点

无法获取软标签暗知识:没有完整概率分布信号,只能用非黑即白的硬文本标签;
容易放大教师模型自带的幻觉,学生会复刻教师的错误;
本质等价普通 SFT 微调,蒸馏效果上限远低于白盒 KL 蒸馏。

其他

No soft-label signal 丢失暗知识:白盒蒸馏有高温平滑后的整套连续概率,传递类别相似度、不确定度;API 只能拿到纯文本标准答案,等价硬标签,丢失全部暗知识,学生学到的信息大幅减少

hallucination amplification 幻觉放大
教师 API 如果输出了错误、幻觉内容,学生 SFT 会完整死记硬背这套错误文本,进一步放大模型盲目输出错误答案的问题

effectively supervised fine-tuning
黑盒蒸馏本质只是普通 SFT,没有 KL 分布匹配这一步,不属于完整知识蒸馏

Self-Distillation - 自蒸馏

定义

模型从同架构家族更大版本中蒸馏(例如 Llama-3 70B 蒸馏到 8B),或是训练过程中使用自身历史检查点作为教师

Motivation 设计动机
无需单独训练一套独立教师模型;利用模型自身不同参数量规模下的能力完成知识迁移

两种自蒸馏实现方式

同系列大模型→小模型(跨尺寸自蒸馏)
同一架构、同训练数据,先训完超大版本(70B)当教师,再蒸馏同系列小尺寸(8B/3B)学生,如 Llama3 70B → Llama3 8B
训练时序自蒸馏(Checkpoint 自蒸馏)
训练中途保存历史权重快照,用更早、更成熟的模型快照当教师,指导当前迭代的同尺寸模型继续训练

Pros 优点

师生网络架构完全兼容,蒸馏损失计算更稳定
无外部大模型依赖,不用额外维护独立教师

无算力训练独立超大教师,仅拥有同系列模型权重
轻量化自家开源模型,不想依赖第三方 API 闭源模型
训练后期做时序平滑,提升模型内部一致性

Cons 缺点

教师能力上限 = 学生能力上限,性能存在天花板
无法引入外部全新知识,仅能复用模型自身已学到的信息

暗知识


语言模型预测句子「法国的首都是」的下一个单词为例:传统硬标签只会标注唯一正确答案「巴黎」;但教师模型经过高温平滑后的软分布会分配:里昂 5%、马赛 2%,而「香蕉」概率几乎为 0。这套分布会告诉学生:哪些错误是合理近似、哪些完全无关,能大幅提升模型的概率校准能力与泛化能力

四个范式对比

大模型蒸馏中的考虑点

Sequence-level vs. token-level 序列级蒸馏 vs Token 级蒸馏

Token 级 KL 散度蒸馏是行业标准方案;序列级蒸馏(对整条完整序列做 KL 损失约束)能更好捕捉长文本逻辑连贯性,但优化难度更高、更难收敛

Token 级:逐 token 匹配教师概率,计算简单、训练稳定,上文的高温蒸馏都是此方案
序列级:直接对齐整条完整回复的分布,全局语义一致性更强,但损失曲面复杂,容易训练不收敛

Layer-wise hints 分层中间层提示蒸馏

对齐师生模型中间层表征(注意力图、隐藏状态)可提供额外监督信号;当师生网络架构不一致时,该方法效果尤为突出
不只对齐输出层 logit,同时约束学生每一层 Transformer 的隐藏特征、注意力权重,让学生复刻教师完整内部语义,大幅提升小模型泛化能力

Data selection 蒸馏数据筛选

蒸馏数据质量至关重要;人工筛选多样化、模型难样本(hard examples)训练出的学生模型,效果远优于随机采样数据
之前讲的「Golding 黄金标签、Gail 课程式数据」,优先选用教师容易犹豫、学生容易答错的模糊样本,提升暗知识利用率

什么是「教师容易犹豫、学生容易答错的模糊样本」
教师容易犹豫
教师高温分布里多个 token 概率接近,没有一个压倒性高分,代表教师拿不准、语义模糊
例子:问句 “小型野生猫科动物有哪些?”
教师分布:猫 0.4、猞猁 0.3、猎豹 0.25,分布分散,属于犹豫样本
学生容易答错
学生训练时,在这类样本上损失很大、预测频繁出错,是学生当前的知识短板

为什么蒸馏要优先选这类样本
普通随机采样的问题
大量简单样本(比如 1+1=2),教师分布极度尖锐,暗知识极少,学生学不到新东西,训练浪费算力
模糊样本价值极高
这种样本自带丰富暗知识:包含词语相似度、模型不确定性
让学生重点拟合教师犹豫的分布,专门补齐自己薄弱的语义区分能力,泛化提升巨大

Student capacity 学生模型容量约束

当学生参数量低于教师模型 10% 时,蒸馏收益会快速递减;极致压缩场景下,可能需要更换模型架构(例如 MoE 混合专家模型转为稠密全连接模型)
压缩比例不能无限制缩小,10% 是工程常用阈值;极小模型若继续用 MoE 稀疏架构,参数太少无法承载知识,需换成稠密架构

Combining with quantization 蒸馏 + 量化联合压缩

将知识蒸馏与 4 比特量化结合(例如 QLoRA 蒸馏范式),可实现 20 倍模型压缩,同时输出质量接近原始教师大模型
先蒸馏缩小模型参数量,再做 4bit 低位量化,双重压缩,兼顾推理速度、显存占用与效果,是工业落地主流轻量化方案

附录

logit 和 token 概率分布的关系

logit 是模型输出的原始打分向量,无归一化,值域无限制(正负都有)

  • 形状:长度等于词表大小 |V|,每个位置对应一个候选 token 的原始得分
  • 作用:仅代表模型对每个词的偏好程度,本身不是概率,不能直接采样
    例:词表 4 个 token,教师输出原始 logits:[10,2,1,-5],该数组就是模型预测下一个 token的原始打分

把 logit 经过 softmax(蒸馏时带温度缩放 T)归一化,得到总和 = 1 的一组 0~1 之间的数值,这才是token 概率分布

top-K pruning - top-K剪枝

对模型输出的完整 logits,只保留分数最高的前 k 个 token 对应的 logit 与索引

分步执行流程(logits = [10, 2, 1, -5],设定 k=2)
绑定索引与分数
token0:10,token1:2,token2:1,token3:-5
按 logit 从高到低排序
[(0,10), (1,2), (2,1), (3,-5)]
截取前 k 个
k=2 → 保留 [(0,10), (1,2)];token2、token3 直接舍弃
存储仅保存这 k 组数据
只存索引 [0,1] + logit [10,2],大幅减少存储开销