介绍 Würstchen:用于图像生成的快速扩散
TL;DR
Hugging Face 推出了 Würstchen,这是一个专为极致效率设计的文本到图像扩散模型。通过利用一种新颖的两阶段压缩架构,Würstchen 实现了 42x 空间压缩,使其能够比之前的模型(如 Stable Diffusion)更快地生成高分辨率图像,并且内存和训练计算需求显著降低。
高压缩架构
Würstchen 通过在高度压缩的潜在空间中运行来降低训练和推理的计算成本。虽然典型的扩散模型使用 4x 到 8x 范围的空间压缩,但 Würstchen 采用 42x 空间压缩,以在不牺牲图像细节的情况下,在更小的潜在表示上进行训练。
此架构由三个主要阶段组成:
- 解码器(阶段 A 和 B): 此组件将压缩图像解码回像素空间。它包括阶段 A(一个 VQGAN)和阶段 B(一个 Diffusion Autoencoder)。
- 先验(阶段 C): 此模型在高度压缩的潜在空间中学习。它处理图像生成过程的文本条件部分。
性能和效率提升
与 Stable Diffusion XL (SDXL) 等模型相比,Würstchen 在推理速度和内存使用方面提供了显著改进。它专门设计为对没有高端硬件(如 A100 GPU)的用户可访问。
训练计算减少
该模型展示了训练所需 GPU 小时数的显著降低:
- Würstchen v1 (512x512): 需要 9,000 GPU 小时,相比 Stable Diffusion 1.4 的 150,000 GPU 小时,成本降低了 16x。
- Würstchen v2 (up to 1536 resolution): 需要 24,602 GPU 小时,尽管在更高分辨率下训练,但相比 SD1.4 大约便宜 6x。
技术实现和使用
Würstchen 完全集成到 diffusers 库中,使其可以通过 AutoPipelineForText2Image 接口使用。该模型在 1024x1024 到 1536x1536 的分辨率之间进行训练,尽管它可以在 1024x2048 分辨率下生成高质量输出,并且可以廉价地微调以达到 2048x2048 分辨率。
集成优化
通过其 diffusers 集成,Würstchen 支持几种开箱即用的优化:
- 内存管理: 模型卸载和顺序 CPU 卸载可最小化 VRAM 使用。
- 硬件支持: 对 Apple Silicon Mac 上的
mps设备提供支持。 - 提示: 通过 Compel 库进行提示权重。
- 可重复性: 使用生成器以获得一致的结果。
高级性能调优
用户可以通过以下两种主要技术进一步加速 Würstchen:
- 闪存注意力: 模型自动利用 PyTorch 2.0 的
scaled_dot_product_attention(SDPA) 进行内存高效的注意力。PyTorch 1.x 的用户可以通过pipeline.enable_xformers_memory_efficient_attention()使用 xFormers 库。 - Torch 编译: 将
torch.compile应用于先验和解码器模型(使用mode="reduce-overhead"和fullgraph=True)可在初始编译期间(最多两分钟)后提供额外的性能提升。