当前位置:AIGC资讯 > AIGC > 正文

【扩散模型】LCM LoRA:一个通用的Stable Diffusion加速模块

潜在一致性模型:[2310.04378] Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (arxiv.org)

原文:Paper page - Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (huggingface.co)

简介:LCM 只需 4,000 个训练步骤(约 32 个 A100 GPU/小时)即可从任何预训练的稳定扩散 (SD) 中提取出来,只需 2~4 个步骤甚至一步即可生成高质量的 768 x 768 分辨率图像,从而显着加速文本转换 -图像生成。 

潜在一致性模型

介绍

潜在扩散模型(Latent Diffusion models, ldm)在高分辨率图像合成方面取得了显著的成果。然而,迭代采样过程计算量大,导致生成速度慢。受一致性模型的启发,我们提出了潜在一致性模型(Latent Consistency Models, lcm),能够在任何预训练的ldm上以最小的步骤进行快速推理,包括稳定扩散。

原理:将引导反向扩散过程视为求解增强概率流ODE (PF-ODE), lcm设计用于直接预测潜在空间中此类ODE的解,从而减少了多次迭代的需要,并允许快速,高保真采样。有效地从预训练的无分类器引导扩散模型中提取,高质量的768×768 2 ~ 4步LCM仅需32 A100 GPU小时即可进行训练。此外,引入了潜在一致性微调(LCF),这是一种针对自定义图像数据集微调LCF的新方法。

一致性模型(CMs):作为一种新型生成模型显示出巨大的潜力,可以在保持生成质量的同时加快采样速度。一致性模型采用一致性映射,直接将ODE轨迹中的任意点映射到原点,实现快速一步生成。可以通过提取预训练的扩散模型或作为独立的生成模型进行训练。

原理

潜在空间中的一致性蒸馏

在诸如稳定扩散(Stable Diffusion, SD)(Rombach et al, 2022)等大规模扩散模型中,利用图像的潜在空间有效地提高了图像生成质量并减少了计算负载。在SD中,首先训练一个自编码器(E, D)来将高维图像数据压缩为低维潜在向量 ?=?(?),然后解码以重建图像 ?ˆ=?(?)。在潜在空间中训练扩散模型与基于像素的模型相比,大大降低了计算成本并加快了推理过程;潜在扩散模型(LDMs)使得在笔记本电脑的GPU上生成高分辨率图像成为可能。

对于潜在一致性模型(LCMs),我们利用潜在空间的一致性蒸馏优势,与一致性模型(CMs)(Song et al, 2023)中使用的像素空间形成对比。这种方法被称为潜在一致性蒸馏(LCD),应用于预训练的SD,允许在1至4步内合成高分辨率的768×768图像。我们专注于条件生成。回顾一下逆扩散过程的PF-ODE:

其中??是图像潜在变量,??(??,?,?) 是噪声预测模型,? 是给定的条件(例如文本)。通过从 ? 到 0 解决 PF-ODE 可以抽取样本。为了执行潜在一致性蒸馏(LCD),我们引入一致性函数 ??:(??,?,?)→?0​,直接预测 ?=0 时 PF-ODE 的解(公式8)。通过噪声预测模型 ?^?参数化 ??,如下所示:

其中 ?skip(0)=1,?out(0)=0,且 ?^?(?,?,?) 是噪声预测模型,其初始参数与教师扩散模型相同。假设有一个高效的ODE求解器 Ψ(??,?,?,?),用于近似积分公式8的右侧,从时间 ? 到 ?。在实际操作中,可以使用DDIM,DPM-Solver或DPM-Solver++ 作为 Ψ(⋅,⋅,⋅,⋅)。

只在训练/蒸馏中使用这些求解器,而不是在推理中。潜在一致性模型(LCM)旨在通过最小化一致性蒸馏损失来预测PF-ODE的解:

通过求解增强的PF-ODE进行单阶段引导蒸馏

无分类器引导(Classifier-free guidance, CFG)对于在稳定扩散(SD)中合成高质量的文本对齐图像至关重要,通常需要大于6的CFG比例 ?。因此,将CFG集成到蒸馏方法中变得不可或缺。之前的方法 Guided-Distill引入了一个两阶段蒸馏以支持从引导扩散模型中进行少步采样。然而,这种方法计算密集估计,2步推理至少需要45个A100 GPU天)。相比之下,潜在一致性模型(LCM)仅需要32个A100 GPU小时的训练时间来进行2步推理,如图1所示。此外,两阶段引导蒸馏可能导致累积误差,导致性能不佳。相反,LCM通过求解增强的PF-ODE采用高效的单阶段引导蒸馏。回顾在逆扩散过程中使用的CFG:

其中用条件噪声和无条件噪声的线性组合代替原有的噪声预测,ω称为引导标度。为了从引导逆向过程中采样,我们需要求解以下增广的PF-ODE(即,与ω相关的项增广):

为了有效地进行一级导向蒸馏,我们引入增广一致性函数fθ:(zt, ω, c, t)→z0来直接预测t = 0时增广PF-ODE (Eq. 13)的解。我们以与Eq. 9相同的方式参数化fθ,除了λ θ(z, c, t)被λ ϵθ(z, ω, c, t)取代,这是一个用与教师扩散模型相同的参数初始化的噪声预测模型,但还包含额外的可训练参数,用于ω的调节。一致性损失与Eq. 10相同,只是我们使用增广一致性函数fθ(zt, ω, c, t)。

跳过时间步加速蒸馏

离散扩散模型通常通过长时间步长计划 {??}?(也称为离散化计划或时间计划)训练噪声预测模型,以实现高质量的生成结果。例如,稳定扩散(SD)有一个长度为1000的时间计划。然而,直接将潜在一致性蒸馏(LCD)应用于具有如此长时间计划的SD可能会有问题。模型需要在所有1000个时间步长上进行采样,而一致性损失试图使LCM模型 ??(???+1,?,??+1) 的预测与在相同轨迹上下一步 ??(???,?,??) 的预测对齐。由于 ?? − ??+1​ 很小,??? 和 ???+1(因此 ??(???+1,?,??+1)和 ??(???,?,??))已经彼此接近,导致一致性损失很小,因此收敛速度慢。

为了解决这个问题,我们引入了跳步方法(SKIPPING-STEP),大大缩短了时间计划的长度(从数千缩短到几十),以实现快速收敛,同时保持生成质量。

一致性模型(CMs)使用EDM连续时间计划,并使用欧拉或Heun求解器作为数值连续PF-ODE求解器。对于LCMs,为了适应稳定扩散中的离散时间计划,我们使用DDIM,DPM-Solver或DPM-Solver++作为ODE求解器。

现在,我们介绍潜在一致性蒸馏(LCD)中的跳步方法。与确保相邻时间步长 ??+1→?? 之间的一致性不同,LCMs旨在确保当前时间步长和相隔 ? 步的时间步长 ??+?→??之间的一致性。注意,设置 ?=1k=1 会恢复到中的原始计划,导致收敛速度慢,而非常大的 ? 可能会导致ODE求解器的大近似误差。在我们的主要实验中,我们设置 ?=20,将时间计划的长度从数千减少到几十。第5.2节的结果显示了不同 k 值的效果,并揭示跳步方法在加速LCD过程中的重要性。具体来说,公式14中的一致性蒸馏损失被修改为确保从 ??+? 到 ?? 的一致性:

 上述推导类似于公式15。对于LCM,我们在此使用三种可能的ODE求解器:DDIM (Song et al, 2020a)、DPM-Solver (Lu et al, 2022a)、DPM-Solver++。

LCM-LoRA

原理

在使用原始 LCM 蒸馏时,每个模型都需要单独蒸馏。而 LCM LoRA 的核心思想是只对少量适配器 (即 LoRA 层) 进行训练,而不用对完整模型进行训练。推理时,可将生成的 LoRA 用于同一模型的任何微调版本,而无需对每个版本都进行蒸馏。训练自己的 LoRA流程如下:

从 Hub 中选择一个教师模型。如: 你可以使用 SDXL (base),或其任何微调版或 dreambooth 微调版。 在该模型上 训练 LCM LoRA 模型。LoRA 是一种参数高效的微调 (PEFT),其实现成本比全模型微调要便宜得多。 将 LoRA 与任何 SDXL 模型和 LCM 调度器一起组成一个pipeline,进行推理。就这样!用这个流水线,你只需几步推理即可生成高质量的图像。

推理

根据使用 LCM LoRA 4 步完成 SDXL 推理 (huggingface.co) 的说明进行推理。给出的使用说明只进行了T2I的示例,不知道Talking face生成的结果如何,首先尝试直接使用了SD-v1.5的预训练权重:latent-consistency/lcm-lora-sdv1-5 · Hugging Face

生成一段14s的视频,原模型用时:15min

使用LCM-LoRA后:

首先有一个diffusers库版本不匹配的问题,anipotrait使用的diffusers==0.24.0,而必须的load_lora_weights函数在新版本diffusers,更新库后编译报错

训练

参考:使用 LCM LoRA 4 步完成 SDXL 推理 (huggingface.co)

Stable Diffusion 1.5 训练脚本:diffusers/examples/consistency_distillation/README.md at main · huggingface/diffusers (github.com)

使用时,先加载微调后的模型,然后加载适合 Stable Diffusion v1.5 的 LCM LoRA 权重:

from diffusers import DiffusionPipeline, LCMScheduler
import torch

model_id = "wavymulder/collage-diffusion"
lcm_lora_id = "latent-consistency/lcm-lora-sdv1-5"

pipe = DiffusionPipeline.from_pretrained(model_id, variant="fp16")
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)
pipe.load_lora_weights(lcm_lora_id)
pipe.to(device="cuda", dtype=torch.float16)

prompt = "collage style kid sits looking at the night sky, full of stars"

generator = torch.Generator(device=pipe.device).manual_seed(1337)
images = pipe(
    prompt=prompt,
    generator=generator,
    negative_prompt=negative_prompt,
    num_inference_steps=4,
    guidance_scale=1,
).images[0]
images
使用 Stable Diffusion v1.5 模型去实例化一个标准的 diffusion pipeline。 应用 LCM-LoRA。 将调度器改为 LCMScheduler,这是 LCM 模型使用的调度器。

其他SD优化方案:diffusers SD推理加速方案的调研实践总结-CSDN博客

总结

### 总结:潜在一致性模型(LCM)
#### 背景与问题
潜在扩散模型(LDM)虽高分辨率图像合成方面表现卓越,但其迭代采样过程计算量大,导致生成图像速度慢。为加速此过程,研究者提出了潜在一致性模型(LCM),旨在快速从预训练的扩散模型中提取并生成高质量图像。
#### 潜在一致性模型(LCM)
- **目标**:在任意预训练的LDM(如稳定扩散SD)上,通过减少迭代步骤实现快速高质量图像生成。
- **原理**:将逆向扩散过程视为求解增强概率流ODE(PF-ODE),LCM设计用于直接预测ODE在潜在空间中的解,从而减少迭代需求,加快采样速度。
- **性能**:
- 快速训练:仅需约32个A100 GPU小时即可完成训练。
- 快速推理:2-4步,甚至一步即可生成768×768分辨率的高质量图像。
#### 关键技术与创新
1. **潜在空间中的一致性蒸馏(LCD)**:
- 利用图像的潜在空间来降低计算成本并提升图像生成质量。
- 引入一致性函数??,直接在潜在空间中预测PF-ODE的解,以减少迭代次数。

2. **单阶段引导蒸馏**:
- 集成了无分类器引导(CFG)到蒸馏方法中,通过求解增强的PF-ODE实现高效的单阶段蒸馏,避免了两阶段蒸馏的累积误差。

3. **跳过时间步加速蒸馏(Skipping-Step Method)**:
- 缩短时间计划长度,通过跳过部分时间步来加速蒸馏过程,但保持高质量的生成结果。
#### LCM-LoRA
- **目的**:减少训练成本,提高模型通用性。
- **原理**:
- 仅训练少量适配器(LoRA层),而不是整个模型。
- 训练后的LoRA可用于同一模型的任意微调版本,实现快速推理。
- **优势**:
- 成本更低:相比全模型训练,LoRA参数效率更高。
- 通用性更强:可灵活应对不同微调版本的模型。
#### 实践与结果
- **实现**:以Stable Diffusion v1.5为基础,通过少量训练步骤即可生成高质量图像。
- **推理示例**:
- 原始模型生成14秒视频耗时15分钟。
- 使用LCM-LoRA后显著加速,尽管过程中遇到了diffusers库版本不匹配的问题,但成功生成了高质量的图像和视频。
#### 结语
潜在一致性模型(LCM)与LCM-LoRA提供了一种快速高效的文本到图像生成方案,显著提升了预训练扩散模型(如SD)的生成速度与质量,对于高计算资源环境下的图像生成任务具有重要应用价值。

更新时间 2024-08-01