对 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 knowledgeexposeɪkˈspəʊzv. 暴露使显露使面临使遭受危险或不快揭露揭发接触体验露出显露感情使胶卷曝光n. 揭露曝光softenˈsɒfnv.使变软软化使态度缓和变宽厚减轻削弱使表情或声音变轻柔softened distribution 平滑分布massmæsn. 团块大量许多常指混乱的一群一堆大量的东西群众平民百姓大多数多数质量adj. 民众的大量的v. 使聚集使集结高温平滑分布这里的zi是教师模型原始 logit 打分T1 是蒸馏高温高温平滑分布T1 会缩小各个 logit 之间的差距原本极低概率、但和正确 token 语义近似的次优 token概率被拉高让分布更均匀释放暗知识 dark knowledge硬标签只有正确 token1其余全 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))用 T1 普通 softmax让学生贴合原始真实标准答案防止高温平滑后偏离基础事实典型超参1- α 控制基础标签损失权重softened distribution训练推理训练推理KL 损失学教师的语义相似度、不确定性暗知识CE 损失保证基础任务准确率兜底真实标签Offline (White-Box) Distillation 离线蒸馏白盒amortiseəˈmɔːtaɪzvt. 分期偿还摊还债券等把……转让给教会永久管理定义对每一条训练 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 pruningTop-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分布分散属于犹豫样本学生容易答错学生训练时在这类样本上损失很大、预测频繁出错是学生当前的知识短板为什么蒸馏要优先选这类样本普通随机采样的问题大量简单样本比如 112教师分布极度尖锐暗知识极少学生学不到新东西训练浪费算力模糊样本价值极高这种样本自带丰富暗知识包含词语相似度、模型不确定性让学生重点拟合教师犹豫的分布专门补齐自己薄弱的语义区分能力泛化提升巨大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]设定 k2绑定索引与分数token0:10token1:2token2:1token3:-5按 logit 从高到低排序[(0,10), (1,2), (2,1), (3,-5)]截取前 k 个k2 → 保留 [(0,10), (1,2)]token2、token3 直接舍弃存储仅保存这 k 组数据只存索引 [0,1] logit [10,2]大幅减少存储开销