说完了一般意义上的知识蒸馏,让我们回到文生图扩散模型上。和一般的蒸馏是为了压缩模型大小不太一样,在文生图领域里,蒸馏方法更多用在步数的蒸馏上。因为文生图扩散模型在生成图片时通常需要很多步的去噪步骤,我们对扩散模型更大的需求是压缩步数来达到用更少步数生成同样高质量的结果,甚至能达到一步生成。
需要先强调的是,扩散模型的加速不全是基于教师模型蒸馏的,蒸馏只是加速的手段之一。
对于扩散模型的加速,或者更准确地说,推理步骤的压缩,主要可以分为以下几类加速方法。
确定性加速方法
Consistency Model
以LCM、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步才能生成较为清晰的结果。一些可能的解释:
- 在扩散模型的加速过程中,由于要在较少的步骤内完成原本多步的生成任务,优化过程难以精确地逼近教师模型的输出。这意味着学生模型在学习从噪声到样本的映射时,无法准确捕捉到所有细节信息。在图像生成中,可能无法精确还原图像中物体的边缘、纹理等细节,导致生成的图像模糊。
- Lipschitz constant和函数的平滑程度有关,在学生模型中,当尝试减少生成步骤时,模型的结构或参数调整可能会使Lipschitz constant降低。较小的Lipschitz constant意味着模型在处理输入变化时,输出的变化相对较小且更平滑。这虽然能保证模型的稳定性,但也会使模型在生成样本时丢失一些细节信息,因为它不能对输入的微小变化做出足够敏感的反应。在生成高分辨率图像时,对细节的捕捉需要模型能够对不同的输入特征做出准确且细致的响应,Lipschitz constant降低会削弱这种能力,从而使生成的图像变得模糊。
下面讲扩散蒸馏怎么做。