
从DeepSeek R1到APT:知识蒸馏和扩散模型的推理加速
知识蒸馏是一种有效的压缩模型的手段,而在文生图扩散模型领域里,通常用于步数的压缩。在APT这篇论文中提到的方法,使用真实的数据直接做对抗,并且是直接训练1 step的生成模型,模型加速改进到这一步,其实已经和教师模型几乎没有关系了(只用来初始化)和蒸馏这个概念也没有太大关系,但模型的加速发展历史和加速蒸馏有着莫大的联系的,故有此文。我的DeepSeek部署资料已打包好(自取↓)
DeepSeek R1在春节期间公开发表了技术文档[1],并开源了多个蒸馏模型,其性能甚至可以超越OpenAI-o1-mini,验证了将671B大模型的模型能力通过简单的数据蒸馏可以快速迁移到规模更小的模型的可行性。
那么蒸馏模型和原始模型的区别是什么呢?它们之间又有怎样的关系?为什么使用大模型蒸馏后的小模型能比直接训练有更好的性能?想要解释这些问题就要先从蒸馏原理讲起。
知识蒸馏的基本概念
知识蒸馏的过程,简单解释就是用教师模型教会学生模型知识。例如在DeepSeek R1的例子里,DeepSeek R1就是教师模型,用于蒸馏训练的小模型(Qwen或者Llama)就是学生模型。知识蒸馏的核心,就是让学生模仿教师的思考过程,而不是简单地背答案。
硬标签 v.s. 软标签
蒸馏训练时,学生模型通常会接收两组不同的答案,分别人工训练集的GT,也就是硬标签,和教师模型生成的概率分布,也就是软标签:
- 硬标签:硬标签就像是正确答案,例如告诉你这张图片是猫还是狗。
- 软标签:软标签则是包含了教师模型的概率分布的更为复杂的答案:“这个图片有80%的概率是猫,但也有20%的可能是狗,因为它们有点像”,于是模型不但知道了答案,还学到了“猫和狗是比较容易混淆的”这个知识。
训练的时候,学生模型既看正确答案(保证正确性)又会看老师的软标签(学习老师的知识),这两个信号会“加权混合”成一个总目标。
那么为什么不全部用软标签呢?
因为教师模型也是有可能犯错的!只用软标签,学生模型的上限就是这个教师模型了。
既然教师模型可能出错,为什么不能把和硬标签冲突的错误标签筛选掉呢?
因为软标签是模型生成的,量级通常比硬标签大得多,人工筛选每一个软标签的成本非常大。把软标签和硬标签混合使用并用权重控制比例是更合适的做法。如果教师模型比较值得信任,就可以调大它的权重,反之亦然。
温度参数
如果我们有一个比较精确的教师模型,它的输出可能是比较夸张化的,例如“这个图片有99%的概率是猫,有1%的可能是狗“,因为模型能很好区分猫和狗。但是如果让模型更温柔一些,也许学生模型反而能更好学到两者之间的关系。
这时候会引入温度参数T软化概率分布:
- T>1 时,概率分布更平滑,保留类别间相对关系(如“猫 vs 狗”的相似性);
- T=1 时退化为标准Softmax。
DeepSeek R1的蒸馏
在DeepSeek R1的实验报告[1]中提到:
仅仅通过蒸馏DeepSeek R1的输出就可以让R1-7N模型的性能超越GPT-4o-0513。其他更大的蒸馏模型就更强了。这里的xxB指的就是参数量,可以简单理解为参数量越大,模型计算力越强,天赋越好。而后天的训练就是对不同天赋的模型进行教学。DeepSeek R1技术报告的蒸馏实验证明,对于天赋相同的模型(参数量和结构一致)用强力的大语言模型进行教学,比直接用人类知识教学更有效。在这里,蒸馏只用了DeepSeek R1的模型输出,并不涉及到更复杂的概率分布学习或者提供硬标签,就已经可以达到很好的效果了。
技术报告还提到一个有趣的观察点是,蒸馏后的模型如果继续用强化学习训练一段时间,可以进一步提高模型的性能。虽然他们没有开源这部分模型,不过这是一个很有意思的观察。可能学生在学习了教师模型之后,如果再强化学习一番,可以微调自己的知识结构,让其更适应自身的结构分布。
知识蒸馏 v.s. 数据蒸馏
提了知识蒸馏的概念就顺便讲一下数据蒸馏。知识蒸馏学习的是教师模型的分布,而数据蒸馏侧重于通过数据增强等方法从数据的角度得到更纯净的训练数据来训练学生模型。数据蒸馏一般不涉及模型的压缩,而是对训练数据的精炼。
知识蒸馏和数据蒸馏的主要区别如下:
扩散模型的蒸馏和加速
说完了一般意义上的知识蒸馏,让我们回到文生图扩散模型上。和一般的蒸馏是为了压缩模型大小不太一样,在文生图领域里,蒸馏方法更多用在步数的蒸馏上。因为文生图扩散模型在生成图片时通常需要很多步的去噪步骤,我们对扩散模型更大的需求是压缩步数来达到用更少步数生成同样高质量的结果,甚至能达到一步生成。(扩散模型的原理可以参考以前的AI画画系列文章)
需要先强调的是,扩散模型的加速不全是基于教师模型蒸馏的,蒸馏只是加速的手段之一。
对于扩散模型的加速,或者更准确地说,推理步骤的压缩,主要可以分为以下几类加速方法。
确定性加速方法
Consistency Model
以LCM[3]、LCM-LoRA为代表的一致性模型加速方法,应该可以算是文生图领域中第一个有较大影响力的加速方法了。
简单来说,它重构了扩散模型的训练目标。之前模型生成,需要反复修改n次(n steps),但是Consistency Model要求无论从哪一步开始画,都要能直接预测最终的结果。所以Consistency Model可以用更少的步数生成去噪干净的图片。
Consistency Model前面接一个VAE把图片转化成latent就变成了Latent Consistency Model(LCM)。又因为这个训练是基于原始模型的微调,所以可以结合LoRA的技术,把微调的部分以LoRA的形式保存下来,既可以减小模型的大小,还可以和其他风格化LoRA进行组合。这也是第一个把加速技术做成LoRA模型的成功尝试。
流匹配 Flow Matching
扩散模型之所以需要多步生成,是因为它的flow是curved的,直接求解会有较大误差,Flow Matching的核心思想就是让Flow变直,从而可以直接求解。
以上基于确定性模型的加速方式,通常4步以内的结果依然比较糊,要8步才能生成较为清晰的结果。在[2]中提出了一些解释:
- T>1 时,概率分布更平滑,保留类别间相对关系(如“猫 vs 狗”的相似性);在扩散模型的加速过程中,由于要在较少的步骤内完成原本多步的生成任务,优化过程难以精确地逼近教师模型的输出。这意味着学生模型在学习从噪声到样本的映射时,无法准确捕捉到所有细节信息。在图像生成中,可能无法精确还原图像中物体的边缘、纹理等细节,导致生成的图像模糊。
- Lipschitz constant和函数的平滑程度有关,在学生模型中,当尝试减少生成步骤时,模型的结构或参数调整可能会使Lipschitz constant降低。较小的Lipschitz constant意味着模型在处理输入变化时,输出的变化相对较小且更平滑。这虽然能保证模型的稳定性,但也会使模型在生成样本时丢失一些细节信息,因为它不能对输入的微小变化做出足够敏感的反应。在生成高分辨率图像时,对细节的捕捉需要模型能够对不同的输入特征做出准确且细致的响应,Lipschitz constant降低会削弱这种能力,从而使生成的图像变得模糊。
扩散模型的步数蒸馏
扩散模型的步数蒸馏,指的是在教师模型的指导下,学生模型学会用更少的步数(对应inference steps)生成相似质量的图片。
渐进式蒸馏 Progressive Distillation
渐进式蒸馏方法[5]可以说是最典型的一个步数蒸馏的方法了。
想象你要教一个新手画家(学生模型)快速画画。
原本的画法是:老师(扩散模型)需要画100笔,每一笔都慢慢修正细节(对应扩散模型的100步去噪)。但新手没耐心画100笔,想几笔搞定。这时候就需要“蒸馏”老师的技巧,让新手学会用更少的步骤画出差不多的效果。
怎么教呢?渐进式蒸馏使用了跳步学习的思想:
- 老师先按老方法画完100笔,但记录下关键中间步骤(比如每隔5笔记录一次)。
- 然后告诉新手:“别一步一步画了,你直接从第0笔跳到第5笔,再跳到第10笔,跳过这些中间步骤”。
- 新手练习时,就要模仿老师跳多步后的结果(比如一笔顶老师五笔的效果),这就完成了单次的步数蒸馏(100步->20步)
- 这时候这个20步模型作为教师模型,再去教下一个学生用更少的步数画出相同的结果,反复练几次,新手就能用很少很少的次数画出老师100笔的效果了。
这个渐进压缩步数的过程就是渐进式蒸馏的核心。
为什么需要渐进蒸馏:
- 直接学习很难训练,容易模式崩塌。
- 逐步蒸馏避免误差跳跃过大,积累误差。
分数蒸馏 Score Distillation
直接的渐进式蒸馏技术,在压缩后几步的时候效果会急剧下降,于是DMD[6]提出了分数蒸馏的改进方法,通过最小化生成分布与真实分布之间的KL散度,确保生成图像与原始扩散模型输出在分布层面一致,从而使得模型画出来的结果也和原始模型一样好。
提到KL散度大家可能会联想到GAN,这篇文章[6]也提到,对抗蒸馏(下文会解释)的方法一般是引入判别器,区分教师和学生的生成成果,通过对抗loss迫使学生欺骗判别器。作者认为: “对抗训练需要复杂的平衡,且容易导致模式崩塌(mode collapse),而分布匹配通过显式的最小化KL散度,能更稳定地实现一步生成。
对抗蒸馏 Adversarial Training
对抗训练通常是通过构建一个生成对抗网络(GAN)的架构,其中学生模型作为生成器(Generator,通常用教师模型进行初始化),负责生成样本;另外引入一个判别器(Discriminator),用于区分生成的样本是来自学生模型还是教师模型,从而让学生模型的分布接近教师模型的分布。SDXL-Turbo采用的蒸馏方案就是Adversarial Diffusion Distillation,ADD[7]。
由于引入对抗机制,GAN方法通常生成质量都会比较接近教师模型,但正如前文所说,GAN面临着难以训练,且容易模式崩塌的问题。并且SDXL-Turbo采用的D是传统的图片编码backbone(DINOv2),不支持latent输入,限制了更大分辨率的图片生成,并且只能在t=0(也就是干净去噪的图片)上使用,无法兼容渐进式的蒸馏方法。
SDXL-Lightning[4]结合了对抗蒸馏和渐进式蒸馏,采用和G一样的网络结构的D(都是pre-trained Diffusion Unet)来支持对t的输入,先直接把模型从 128 步直接蒸馏到 32 步,然后按照按32->8->4 ->2 ->1的顺序,增加对抗损失进行渐进式蒸馏。
对抗后训练 Adversarial Post-Training
为了这一包醋包了一整锅饺子,终于谈到标题的APT[2]了!这篇论文同时支持图片和视频的加速,并且只训练一步生成模型,所以从本质上说更像是是在训练一个超级大的GAN(真的make GAN great again了),原始的diffusion更多意义是用在初始化模型上(这也是其自称Post-Training的原因)。所以也会有GAN的各种优缺点,例如难以训练,容易mode collapse,文本控制能力稍弱,生成图片质量更真实,和——快,因为GAN天然就是one-step的。所以这篇论文的主要contribution就是介绍它们用的各种方法来阻止mode collapse,想办法把这个超大GAN(DiT version)训练出来。
先总结一下之前方法的缺点:SDXL-Lightning和DMD等基于蒸馏的方法,需要用教师模型生成大量数据,这对于视频数据来说cost尤其大,并且模型的上限就是教师模型。DMD2和ADD结合了对抗和分数蒸馏,其中对抗训练使用真实数据,分数蒸馏使用教师模型。而UFO-Gen进一步只是用真实的数据做对抗,直接摆脱了对教师模型的依赖。但UFO-Gen使用的判别器是1B的卷积网络。APT改为使DiT作为生成器和判别器的backbone,并提出了多个技巧使得训练稳定,避免mode collaps。
首先,论文利用预训练的扩散模型(如diffusion transformer,DiT)对GAN的生成器和判别器进行初始化。相比UFO-Gen使用的1B卷积网络,APT使用了8B的Transformer,判别器的性能更强。
在训练开始前,先通过LCM之类的确定性蒸馏方法(Deterministic methods),对生成器进行初始化。此时生成器虽然一步生成比较模糊,但是是个好的开始,后续会用对抗训练增加生成的质量。而判别器则用原始的预训练模型进行权重初始化,因为作者发现使用原扩散模型权重初始化比用蒸馏模型权重效果更好。
模型的训练遵循对抗优化的思路,在min - max博弈中交替训练生成器和判别器。生成器努力生成能欺骗判别器的样本,判别器则尽力区分真实样本和生成样本。从而让生成器的分布逐渐接近真实分布。
GAN非常难训练且容易mode collaps,为了稳定训练过程,还引入一个近似R1正则化损失(R1不支持FSDP、checkpointing、flash attention这些,所以文章里做了一个近似R1,同样可以达到目标)。
在这样的对抗训练过程中,生成器不断优化,学习生成更逼真的样本。经过训练后,最终的一步生成任务由GAN的生成器执行。生成器在对抗训练中学习到了真实数据的分布特征,具备了直接生成样本的能力,而不再依赖扩散模型迭代去噪的过程。
结语
知识蒸馏是一种有效的压缩模型的手段,而在文生图扩散模型领域里,通常用于步数的压缩。在APT这篇论文中提到的方法,使用真实的数据直接做对抗,并且是直接训练1 step的生成模型,模型加速改进到这一步,其实已经和教师模型几乎没有关系了(只用来初始化)和蒸馏这个概念也没有太大关系,但模型的加速发展历史和加速蒸馏有着莫大的联系的,故有此文。
我的DeepSeek部署资料已打包好(自取↓)
https://pan.quark.cn/s/7e0fa45596e4
但如果你想知道这个工具为什么能“听懂人话”、写出代码 甚至预测市场趋势——答案就藏在大模型技术里!
❗️为什么你必须了解大模型?
1️⃣ 薪资爆炸:应届大模型工程师年薪40万起步,懂“Prompt调教”的带货主播收入翻3倍
2️⃣ 行业重构:金融、医疗、教育正在被AI重塑,不用大模型的公司3年内必淘汰
3️⃣ 零门槛上车:90%的进阶技巧不需写代码!会说话就能指挥AI
(附深度求索BOSS招聘信息)
⚠️警惕:当同事用DeepSeek 3小时干完你3天的工作时,淘汰倒计时就开始了。
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?老师啊,我自学没有方向怎么办?老师,这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!当然这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
👉大模型学习指南+路线汇总👈
我们这套资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!
更多推荐
所有评论(0)