Würstchen 소개: 이미지 생성을 위한 빠른 확산

TL;DR

Hugging Face은 극도의 효율성을 위해 설계된 텍스트-이미지 확산 모델인 Würstchen을 도입했습니다. 새로운 두 단계 압축 아키텍처를 활용하여, Würstchen은 42x 공간 압축을 달성하여 이전 모델인 Stable Diffusion과 같은 모델보다 훨씬 낮은 메모리와 훈련 컴퓨팅 요구 사항으로 고해상도 이미지를 더 빠르게 생성할 수 있게 합니다.

High-Compression Architecture

Würstchen은 altamente 압축된 잠재 공간에서 작동하여 훈련 및 추론의 계산 비용을 줄입니다. 일반적인 확산 모델은 4x에서 8x 범위의 공간 압축을 사용하는 반면, Würstchen은 이미지 세부 사항을 희생하지 않고 더 작은 잠재 표현에서 훈련을 가능하게 하는 42x 공간 압축을 사용합니다.

이 아키텍처는 세 가지 주요 단계로 구성됩니다:

  • 디코더 (Stages A and B): 이 구성 요소는 압축된 이미지를 픽셀 공간으로 다시 디코딩합니다. Stage A (VQGAN)와 Stage B (Diffusion Autoencoder)로 구성됩니다.
  • 사전 (Stage C): 이 모델은 altamente 압축된 잠재 공간 내에서 학습됩니다. 이미지 생성 과정의 텍스트-조건부 구성 요소를 처리합니다.

Performance and Efficiency Gains

Würstchen은 Stable Diffusion XL (SDXL)과 같은 모델과 비교하여 추론 속도와 메모리 사용량에서 상당한 향상을 제공합니다. A100 GPU와 같은 고사양 하드웨어가 없는 사용자에게 접근 가능하도록 특별히 설계되었습니다.

Training Compute Reduction

이 모델은 훈련에 필요한 GPU 시간이 크게 감소함을 보여줍니다:

  • Würstchen v1 (512x512): 9,000 GPU 시간이 필요하며, Stable Diffusion 1.4에 사용된 150,000 GPU 시간과 비교하여 비용이 16배 감소함을 나타냅니다.
  • Würstchen v2 (up to 1536 resolution): 24,602 GPU 시간이 필요하며, 더 높은 해상도로 훈련함에도 불구하고 SD1.4보다 약 6배 저렴합니다.

Technical Implementation and Usage

Würstchen은 diffusers 라이브러리에 완전히 통합되어 AutoPipelineForText2Image 인터페이스를 통해 사용할 수 있습니다. 이 모델은 1024x1024에서 1536x1536 사이의 해상도로 훈련되었지만, 1024x2048에서 품질 있는 출력을 생성할 수 있으며, 2048x2048 해상도로 저렴하게 파인튜닝할 수 있습니다.

Integrated Optimizations

Its diffusers 통합을 통해, Würstchen은 여러 가지 즉시 사용 가능한 최적화를 지원합니다:

  • 메모리 관리: 모델 오프로딩과 순차적 CPU 오프로딩은 VRAM 사용량을 최소화합니다.
  • 하드웨어 지원: Apple Silicon Macs에서 mps 장치에 대한 지원.
  • 프롬프팅: Compel 라이브러리를 통한 프롬프트 가중치.
  • 재현 가능성: 일관된 결과를 위한 생성기 사용.

Advanced Performance Tuning

사용자는 두 가지 주요 기술을 사용하여 Würstchen을 추가로 가속할 수 있습니다:

  1. 플래시 어텐션: 이 모델은 메모리 효율적인 관심을 위해 PyTorch 2.0의 scaled_dot_product_attention (SDPA)를 자동으로 활용합니다. PyTorch 1.x 사용자는 pipeline.enable_xformers_memory_efficient_attention()을 통해 xFormers 라이브러리를 사용할 수 있습니다.
  2. 토치 컴파일: torch.compile을 사전 및 디코더 모델에 적용하면 (using mode="reduce-overhead" and fullgraph=True) 초기 컴파일 기간이 최대 두 분인 후 추가적인 성능 향상을 제공합니다.

Sources