1. 从点名说起蒸馏争议到底在吵什么最近圈子里最热的话题莫过于几家中国大模型公司被海外同行公开点名说它们蒸馏了自己的模型。消息一出技术群、朋友圈、各种论坛全炸了锅。有人义愤填膺说这是偷有人觉得这是行业惯例没什么大不了还有人一脸懵蒸馏到底是个啥为什么能吵成这样我做大模型相关的工作有些年头了从最早折腾BERT微调到后来搞LoRA、QLoRA再到最近帮几个团队做模型压缩和推理优化蒸馏这条路我走过不止一遍。说实话看到这个新闻的时候我第一反应不是谁对谁错而是这事儿技术上到底怎么界定的。因为蒸馏这个词在大模型语境下含义比很多人想象的要模糊得多——它既可以指一种正规的模型压缩技术也可以指用别人的API输出当训练数据还可以指更隐蔽的、直接对齐logits分布的操作。这三种做法在技术难度、资源投入、法律风险上完全不是一个量级但外界往往把它们混为一谈。这篇文章我想干一件事把蒸馏这件事从技术底层拆开讲清楚。不是站队不是评判商业道德而是从一个大模型工程师的视角把知识蒸馏的原理、黑盒蒸馏和白盒蒸馏的区别、KL散度在其中的作用、以及为什么偷走的东西其实很难用一句话概括——这些讲透。看完之后你至少能自己判断某家公司被指控的蒸馏到底是哪种类型技术含量在哪争议点又在哪。适合谁看如果你是大模型开发者、算法工程师、或者正在做模型压缩和微调的技术人员这篇能帮你建立完整的蒸馏知识框架。如果你只是对AI行业新闻感兴趣想搞明白这些术语背后的门道也能看懂——我会尽量用生活化的类比来解释。2. 知识蒸馏的技术本质到底在蒸什么2.1 从Hinton那篇经典论文讲起知识蒸馏这个概念不是大模型时代才有的。2015年Hinton和他的团队发了一篇论文标题就叫《Distilling the Knowledge in a Neural Network》核心思想特别朴素一个大的、笨重的、效果好的模型老师能不能把自己的知识传给一个小的、轻量的模型学生让小模型在参数量少很多的情况下效果尽量接近大模型这里的关键在于知识怎么定义。传统训练里我们给模型的监督信号是硬标签——这张图是猫那个标签就是[0, 1, 0]非黑即白。但Hinton发现大模型输出的软标签soft label携带的信息量远大于硬标签。比如一张写着7的手写数字图片大模型可能输出7的概率是0.91的概率是0.089的概率是0.02。这个分布本身就告诉学生模型这个数字长得有点像1也有点像9但最像7。这种类间相似性信息是硬标签完全丢失的。所以蒸馏的本质是让学生模型去拟合老师模型的输出分布而不是只拟合真实标签。用信息论的视角看软标签的熵更高携带的暗知识dark knowledge更多。2.2 温度参数为什么需要软化概率这里有个技术细节必须讲清楚否则后面理解KL散度会卡壳。大模型的softmax输出往往非常尖锐——正确类别的概率可能是0.999其他类别加起来才0.001。这种分布信息量很低因为负样本的概率几乎被压没了。解决办法是引入温度参数T。标准的softmax是softmax(z_i) exp(z_i) / Σ exp(z_j)带温度的版本变成softmax(z_i / T) exp(z_i / T) / Σ exp(z_j / T)当T1时就是标准softmaxT越大分布越平滑负样本的概率被抬起来暗知识就暴露出来了。Hinton的论文里老师模型用高温输出软标签学生模型也用同样的温度计算输出然后两者做KL散度。训练完成后学生模型推理时把温度调回1。我自己的经验是T一般取2到20之间具体看任务。做图像分类的时候T4左右比较常见做语言模型蒸馏的时候T可以取大一点因为词表大、分布更稀疏。这个参数调不好蒸馏效果会差很多——T太小暗知识出不来T太大分布太平噪声也进来了。2.3 KL散度衡量两个分布差多远的尺子KL散度Kullback-Leibler Divergence是蒸馏损失函数的核心。它衡量的是两个概率分布之间的差异公式是KL(P || Q) Σ P(x) * log(P(x) / Q(x))其中P是老师模型的输出分布Q是学生模型的输出分布。KL散度越小说明两个分布越接近学生学得越好。但KL散度有个特点它不对称。KL(P||Q)和KL(Q||P)不相等。在蒸馏里我们通常用KL(老师||学生)这叫前向KL。前向KL的特点是零避免——如果老师某个位置概率是0学生那里也必须接近0否则惩罚很大。这导致学生模型倾向于覆盖老师所有的高概率区域但可能会低估一些低概率区域。反过来用反向KL(学生||老师)学生会倾向于mode seeking只学老师最确定的那些模式忽略长尾。实际蒸馏中前向KL更常用但也有一些变体比如Jensen-Shannon散度来平衡。理解这一点很重要因为后面讲黑盒蒸馏的时候你会发现很多公司根本拿不到老师的logits只能用API返回的文本这时候KL散度就用不上了只能用交叉熵或者别的替代方案。3. 白盒、黑盒、灰盒三种蒸馏路径的技术分水岭3.1 白盒蒸馏能拿到logits的正规军白盒蒸馏指的是你能完全访问老师模型的内部——权重、logits、中间层激活值全都能拿到。这是最正统的蒸馏方式也是效果最好的。具体怎么做假设你有一个70B的老师模型和一个7B的学生模型。你准备一批训练数据可以是无标注的通用语料让老师模型跑一遍把每个token位置的完整logits分布存下来。然后训练学生模型损失函数是学生logits和老师logits之间的KL散度。有时候还会加上中间层的对齐损失比如让学生模型的某几层去拟合老师模型的某几层这叫特征蒸馏。白盒蒸馏的优势很明显信息量大学生能学到老师的完整分布包括那些犹豫和不确定的部分。但劣势也很明显你需要有老师模型的完整访问权限。开源模型比如LLaMA、Qwen、DeepSeek的开源版本你可以这么做。但闭源模型比如GPT-4、Claude你拿不到logits白盒蒸馏无从谈起。我自己做过一次白盒蒸馏的实验用Qwen-72B蒸馏Qwen-7B在中文法律问答数据集上学生模型的效果能达到老师的85%左右而推理成本只有老师的十分之一。这个性价比在工业场景里是非常可观的。3.2 黑盒蒸馏只能看输出的曲线救国黑盒蒸馏就是拿不到logits只能拿到老师模型的文本输出。比如你调用某个闭源API它只返回生成的文字不返回概率分布。这时候你怎么蒸馏常见做法是用老师模型生成大量高质量的问答对或者指令数据然后用这些数据去微调学生模型。这本质上是一种数据蒸馏或者行为克隆严格来说不算传统意义上的知识蒸馏因为学生学的是老师的行为而不是知识分布。但这里有个关键问题文本输出丢失了太多信息。老师模型在生成某个token时可能是在猫和猫咪之间犹豫最终选了猫。但学生只看到猫不知道老师还考虑过猫咪。这种暗知识就丢了。不过黑盒蒸馏也有它的优势你不需要老师模型的任何内部信息只要能用API就行。而且生成的数据可以用来做SFT监督微调流程简单工程上容易落地。很多公司所谓的蒸馏其实就是这一步——用强模型的输出构造训练集然后微调自己的模型。3.3 灰盒蒸馏介于两者之间的灰色地带灰盒蒸馏是个比较模糊的概念通常指你能拿到部分内部信息但不是全部。比如你能拿到logits但没有中间层激活或者你能拿到top-k的logits而不是完整分布或者你能拿到模型的embedding但不能拿到生成分布。还有一种情况是API蒸馏有些API会返回top-5的候选token和概率这比纯文本输出信息量大但又不如完整logits。这种就可以做一种部分白盒的蒸馏用top-k的KL散度来训练。在实际操作中灰盒蒸馏的边界很模糊很多技术方案是混合的。比如先用黑盒方式生成数据做SFT再用白盒方式做logits对齐两阶段结合。蒸馏类型可获取信息技术难度效果上限典型场景白盒蒸馏完整logits、中间层、权重高最高开源模型之间灰盒蒸馏top-k logits、embedding中中等部分开放API黑盒蒸馏仅文本输出低较低闭源API4. 被偷走的到底是什么从数据到能力的拆解4.1 第一层指令数据的影子如果一家公司被指控蒸馏最直接的可能性是它用另一家模型的输出构造了训练数据。这在技术上叫合成数据或者模型生成数据。具体流程是准备一批prompt可能来自公开数据集也可能是自己构造的调用老师模型的API拿到高质量的回复然后用这些(prompt, response)对去微调自己的模型。这个过程在业界非常普遍Meta的LLaMA系列、阿里的Qwen系列、很多开源模型都或多或少用过合成数据。那偷的是什么表面上看是数据但更深层的是老师模型的指令遵循能力和知识表达方式。学生模型通过模仿老师的输出学会了怎么组织语言、怎么推理、怎么拒绝不当请求。这些能力是老师模型在大量训练和RLHF中获得的学生通过蒸馏抄了近道。但这里有个关键点合成数据本身不违法也不违反技术伦理。OpenAI的服务条款确实禁止用其输出来训练竞品模型但这是合同层面的约束不是技术层面的偷窃。而且很多公司用的是开源模型或者自己有权使用的模型来生成数据这就更复杂了。4.2 第二层概率分布的暗知识如果被指控的是白盒蒸馏那偷的东西就更深一层了——老师模型的概率分布。前面讲过logits分布里包含了类间相似性、不确定性、多义性等丰富信息。学生模型如果直接拟合这些分布相当于把老师模型在预训练阶段学到的世界知识压缩进了自己的参数里。这个过程不需要原始训练数据只需要老师模型对一批无标注数据的推理结果。这就是为什么白盒蒸馏被认为更严重——它绕过了原始数据的获取成本直接复制了模型的能力。打个比方黑盒蒸馏像是你看着别人做菜学会了菜谱白盒蒸馏像是你直接拿到了别人的秘方调料包连火候和配比都复制了。4.3 第三层RLHF对齐后的人格大模型经过RLHF基于人类反馈的强化学习之后会形成一种特定的人格——它的回答风格、安全边界、价值观倾向。这些是通过大量人类偏好数据训练出来的成本极高。如果学生模型通过蒸馏学到了老师的这些对齐特性那偷的就是对齐能力。这在实际中很难量化但确实存在。比如某些模型在拒绝有害请求时的措辞、在不确定时的表达方式都能看到老师的影子。从技术角度看RLHF的对齐效果很难通过简单的SFT完全复制但如果蒸馏数据足够多、质量足够高学生模型确实能学到相当程度的对齐行为。这也是为什么一些公司会特别在意自己的模型输出被用来训练竞品——这相当于自己的对齐投入被搭便车了。5. 蒸馏实操中的技术细节与踩坑记录5.1 数据配比合成数据和真实数据的黄金比例我自己做蒸馏项目的时候踩过最大的坑就是数据配比。一开始我全部用老师模型生成的数据去微调学生模型结果发现学生模型在通用能力上确实提升明显但在一些特定任务上反而退化了——因为它过度拟合了老师的输出风格丢失了自己预训练时的一些能力。后来我调整了策略合成数据占60%到70%真实数据占30%到40%。真实数据可以是公开的指令数据集、自己业务场景的标注数据、或者高质量的网页文本。这个比例不是固定的要看具体任务。如果任务和老师模型的能力高度重合合成数据可以多一点如果任务比较垂直真实数据要多一些。还有一个细节合成数据的多样性很重要。如果只用一种prompt模板生成数据学生模型会学到很窄的分布。我通常会准备多种prompt来源包括翻译、改写、问答、推理等不同类型确保覆盖足够多的场景。5.2 温度和后处理生成数据的质量控制用老师模型生成数据的时候温度参数很关键。温度太低比如0.1生成的文本很确定但缺乏多样性温度太高比如1.5会出现很多胡言乱语。我的经验是做蒸馏数据生成时温度取0.7到0.9比较合适既能保证质量又有一定多样性。另外生成的数据一定要做后处理。我见过太多团队直接把API返回的原始文本拿去训练结果里面混入了大量格式错误、重复、甚至有害内容。基本的后处理包括去重、长度过滤、格式规范化、有害内容过滤。如果有条件还可以用一个小的奖励模型或者分类器来给数据打分只保留高质量的部分。提示合成数据的质量比数量重要得多。一万条高质量数据的效果往往好过十万条低质量数据。宁缺毋滥。5.3 损失函数设计不只是KL散度在白盒蒸馏中损失函数的设计有很多讲究。最基础的是KL散度但实际中往往会组合多种损失KL散度损失让学生logits拟合老师logits这是核心。交叉熵损失学生输出和真实标签的交叉熵防止学生完全偏离真实分布。中间层对齐损失让学生某几层的隐藏状态拟合老师的对应层这能加速收敛。对比损失在一些场景下可以用对比学习来增强学生模型的表示能力。权重怎么分配我的经验是KL散度占主导0.7左右交叉熵作为辅助0.2左右中间层对齐看情况0.1左右。但这个比例需要根据具体任务调没有万能公式。还有一个坑如果老师和学生的词表不一样logits对齐会很麻烦。这时候需要做词表映射或者只用两者共有的token来计算损失。这个细节很多论文里不写但实际做的时候会卡住。6. 蒸馏、微调、RL三条技术路线的边界与选择6.1 蒸馏和微调到底什么关系很多人把蒸馏和微调混为一谈其实两者有交集但不完全一样。微调是在预训练模型的基础上用特定任务的数据继续训练让模型适应新任务。蒸馏是一种训练范式目标是让学生模型模仿老师模型。在实际操作中蒸馏往往通过微调来实现——你用老师生成的数据去微调学生这既是蒸馏也是微调。但蒸馏还可以有其他形式比如logits对齐这就不是传统意义上的微调了。从技术选型角度看如果你有一个强模型和一个弱模型想让弱模型变强蒸馏是首选。如果你有一个预训练模型想让它适应某个垂直领域微调是首选。两者可以结合先蒸馏获得通用能力提升再微调适应特定任务。6.2 RL在蒸馏中的角色RL强化学习在大模型训练中主要用于对齐阶段比如RLHF、DPO、GRPO等。在蒸馏场景下RL可以用于优化蒸馏过程本身比如用RL来筛选高质量的合成数据或者用RL来调整学生模型的生成策略。但RL和蒸馏的结合目前还在探索阶段。我试过用DPO来优化蒸馏后的学生模型效果有一些提升但不算显著。主要问题是RL训练不稳定而且需要大量的偏好数据成本很高。从热搜词里看到RL和KL散度经常一起出现这是因为在RLHF中KL散度被用来约束策略模型不要偏离参考模型太远。这个KL约束和蒸馏中的KL散度虽然公式一样但用途不同一个是防止RL训练跑偏一个是让学生拟合老师。6.3 ODP和其他蒸馏变体ODPOn-policy Distillation Pipeline是最近比较火的一个概念核心思想是让学生模型自己生成数据然后让老师模型对这些数据进行打分或修正再用修正后的数据训练学生。这比传统的off-policy蒸馏用固定数据集更高效因为学生能探索自己的输出空间老师针对性地纠正。这个思路其实和RLHF里的on-policy采样很像只不过奖励信号来自老师模型而不是人类。我实测下来ODP在数学推理和代码生成任务上效果不错因为学生能暴露自己的错误老师能精准纠正。但在开放域对话上优势没那么明显。7. 蒸馏争议背后的技术伦理与行业现实7.1 为什么蒸馏这个词这么敏感技术上讲蒸馏是一种正规的模型压缩方法学术界用了快十年了。但在商业语境下它变成了一个敏感词因为它涉及到能力复制和投入搭便车。一家公司花了几千万美元训练一个大模型另一家公司用几万美元的API调用费就蒸馏出了一个效果接近的模型这在商业上显然不公平。但问题是这种不公平很难用技术手段界定。你怎么证明学生模型是蒸馏的而不是自己训练的你怎么区分学习了老师的输出和碰巧效果相似目前业界没有统一的技术标准来判定蒸馏。有些公司会在服务条款里明确禁止用输出来训练竞品但执行起来很难。这就像音乐行业的抄袭判定旋律相似不一定构成抄袭但明显雷同就会引发争议。7.2 开源社区的互蒸现象有意思的是开源社区里蒸馏非常普遍而且大家习以为常。Meta的LLaMA出来之后很多开源模型都用LLaMA的输出做蒸馏。Qwen、DeepSeek、Yi等模型也经常被用来生成训练数据。这种互蒸在开源生态里被视为正常的技术交流因为开源协议本身就允许这种使用。但闭源模型就不一样了。OpenAI、Anthropic这些公司的服务条款明确禁止用输出来训练竞品。所以争议的焦点往往在于被指控的公司用的是开源模型还是闭源模型如果是开源模型法律风险小很多如果是闭源模型就可能违反服务条款。7.3 技术人员的现实选择作为一个工程师我在实际项目中怎么处理这个问题我的原则是优先使用开源模型做蒸馏避免法律风险。如果必须用闭源API仔细阅读服务条款确认是否允许用于训练。合成数据要混合真实数据避免过度依赖单一来源。保留数据来源和训练过程的记录以备合规审查。这些做法不能完全规避风险但至少能让项目在技术伦理上站得住脚。8. 从蒸馏争议看大模型技术的学习路径8.1 想入门蒸馏先掌握哪些基础如果你看完这篇文章想自己动手做蒸馏实验我建议的学习路径是这样的第一步理解Transformer架构和预训练语言模型的基本原理。不需要推到数学公式但要明白attention、embedding、softmax这些组件是干什么的。第二步掌握微调技术。从全量微调开始然后学LoRA、QLoRA这些参数高效微调方法。Hugging Face的PEFT库是很好的起点。第三步理解知识蒸馏的理论。重点看Hinton的原始论文然后看几篇大模型蒸馏的综述比如《A Survey on Knowledge Distillation of Large Language Models》。第四步动手做实验。从一个小的老师和学生模型开始比如用BERT-large蒸馏BERT-base跑通整个流程。然后再尝试大模型比如用Qwen-14B蒸馏Qwen-1.8B。第五步学习推理优化和部署。蒸馏出来的模型最终要部署所以要了解vLLM、Ollama这些工具以及量化、剪枝等技术。8.2 本地部署蒸馏模型的硬件门槛很多人关心本地部署大模型需要什么配置。我列一个实际的参考模型规模最低显存推荐显存量化后显存典型设备1.8B4GB8GB2GBRTX 30607B8GB16GB4GBRTX 407014B16GB24GB8GBRTX 409032B24GB48GB16GBA600070B48GB80GB24GBA100蒸馏出来的小模型比如1.8B到7B在消费级显卡上就能跑。用Ollama或者llama.cpp做量化后甚至可以在MacBook上运行。这对于个人开发者和小团队来说是非常友好的。8.3 蒸馏技术的未来走向从技术趋势看蒸馏正在从静态走向动态。传统的蒸馏是一次性的老师固定、学生固定、数据固定。现在的研究方向包括在线蒸馏老师和学生同时训练互相促进。自蒸馏模型自己蒸馏自己用早期checkpoint指导后期训练。多老师蒸馏从多个老师模型学习取长补短。跨模态蒸馏从多模态大模型蒸馏到纯文本模型或者反过来。这些方向都在探索阶段但已经有一些不错的成果。对于工程师来说掌握基础的蒸馏方法然后根据具体场景选择合适的变体是比较务实的策略。9. 我在蒸馏项目中的几个真实教训最后分享几个我在实际项目中踩过的坑都是文档里不会写的。第一个教训不要迷信大老师。我曾经用一个大很多倍的模型去蒸馏一个小模型结果学生效果反而下降了。后来分析发现老师和学生的容量差距太大学生根本学不动老师的分布。后来换了一个容量差距小一点的老师效果立刻好了。所以选老师不是越大越好要看学生的消化能力。第二个教训蒸馏数据要定期更新。老师模型会迭代如果你一直用旧版本生成的数据学生学到的就是过时的能力。我现在的做法是每个季度重新生成一批数据和旧数据混合使用。第三个教训评估不能只看loss。蒸馏训练的时候KL loss降得很低但下游任务效果不一定好。一定要在真实任务上做评估而且要用多个维度的指标。我见过太多团队只看训练loss结果上线后发现模型在实际场景里表现很差。第四个教训注意tokenizer的差异。如果老师和学生的tokenizer不一样logits对齐会非常麻烦。我建议尽量选同一系列的模型做蒸馏比如Qwen蒸馏QwenLLaMA蒸馏LLaMA这样tokenizer一致省去很多麻烦。这些经验都是真金白银换来的希望能帮到正在做或者准备做蒸馏的朋友。技术本身没有善恶关键看怎么用。把蒸馏用在模型压缩、边缘部署、成本优化上它是非常有价值的技术。用在不当竞争上就会引发争议。作为技术人员我们至少要做到心里有数。
阅读完成 · 觉得有帮助?