LCM 模型 (Latent Consistency Model) 通过将原始模型蒸馏为另一个需要更少步数 (4 到 8 步,而不是原来的 25 到 50 步) 的版本以减少用 Stable Diffusion (或 SDXL) 生成图像所需的步数。蒸馏是一种训练过程,其主要思想是尝试用一个新模型来复制源模型的输出。蒸馏后的模型要么尺寸更小 (如 DistilBERT 或最近发布的 Distil-Whisper),要么需要运行的步数更少 (本文即是这种情况)。一般来讲,蒸馏是一个漫长且成本高昂的过程,需要大量数据、耐心以及一些 GPU 运算。
但以上所述皆为过往,今天我们翻新篇了!
今天,我们很高兴地公开一种新方法,其可以从本质上加速 Stable Diffusion 和 SDXL,效果跟用 LCM 蒸馏过一样!有了它,我们在 3090 上运行 任何 SDXL 模型,不需要 70 秒,也不需要 7 秒,仅需要约 1 秒就行了!在 Mac 上,我们也有 10 倍的加速!听起来是不是很带劲?那继续往下读吧!
目录
方法概述
快有啥用?
快速推理 SDXL LCM LoRA 模型
生成质量
引导比例及反向提示
与标准 SDXL 模型的生成质量对比
其他模型的 LCM LoRA
Diffusers 全集成
测试基准
已公开发布的 LCM LoRA 及 LCM 模型
加分项:将 LCM LoRA 与常规 SDXL LoRA 结合起来
如何训练 LCM 模型及 LCM LoRA
资源
致谢
方法概述
到底用了啥技巧?
在使用原始 LCM 蒸馏时,每个模型都需要单独蒸馏。而 LCM LoRA 的核心思想是只对少量适配器 (即 LoRA 层) 进行训练,而不用对完整模型进行训练。推理时,可将生成的 LoRA 用于同一模型的任何微调版本,而无需对每个版本都进行蒸馏。如果你已经迫不及待地想试试这种方法的实际效果了,可以直接跳到下一节试一下推理代码。如果你想训练自己的 LoRA,流程如下:
从 Hub 中选择一个教师模型。如: 你可以使用 SDXL (base),或其任何微调版或 dreambooth 微调版,随你喜欢。
在该模型上 训练 LCM LoRA 模型。LoRA 是一种参数高效的微调 (PEFT),其实现成本比全模型微调要便宜得多。有关 PEFT 的更详细信息,请参阅 此博文 或 diffusers 库的 LoRA 文档。
将 LoRA 与任何 SDXL 模型和 LCM 调度器一起组成一个流水线,进行推理。就这样!用这个流水线,你只需几步推理即可生成高质量的图像。
欲知更多详情,请 下载我们的论文。
快有啥用?
Stable Diffusion 和 SDXL 的快速推理为新应用和新工作流打开了大门,仅举几例:
更易得: 变快后,生成工具可以被更多人使用,即使他们没有最新的硬件。
迭代更快: 无论从个人还是商业角度来看,在短时间内生成更多图像或进行更多尝试对于艺术家和研究人员来说都非常有用。
可以在各种不同的加速器上进行生产化部署,包括 CPU。
图像生成服务会更便宜。
为了衡量我们所说的速度差异,在 M1 Mac 上用 SDXL (base) 生成一张 1024x1024 图像大约需要一分钟。而用 LCM LoRA,我们只需约 6 秒 (4 步) 即可获得出色的结果。速度快了一个数量级,我们再也无需等待结果,这带来了颠覆性的体验。如果使用 4090,我们几乎可以得到实时响应 (不到 1 秒)。有了它,SDXL 可以用于需要实时响应的场合。
快速推理 SDXL LCM LoRA 模型
在最新版的 diffusers
中,大家可以非常容易地用上 LCM LoRA:
from diffu