介绍 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:

  1. 闪存注意力: 模型自动利用 PyTorch 2.0 的 scaled_dot_product_attention (SDPA) 进行内存高效的注意力。PyTorch 1.x 的用户可以通过 pipeline.enable_xformers_memory_efficient_attention() 使用 xFormers 库。
  2. Torch 编译:torch.compile 应用于先验和解码器模型(使用 mode="reduce-overhead"fullgraph=True)可在初始编译期间(最多两分钟)后提供额外的性能提升。

Sources