Würstchenの紹介: 画像生成のための高速ディフュージョン
TL;DR
Hugging Faceは、極めて効率的なテキスト・トゥ・イメージディフュージョンモデルであるWürstchenを発表しました。新しい二段階圧縮アーキテクチャを利用することで、Würstchenは42xの空間圧縮を達成し、Stable Diffusionなどの以前のモデルよりもはるかに低いメモリとトレーニング計算要件で、高解像度画像を高速に生成できるようになります。
高圧縮アーキテクチャ
Würstchenは、高度に圧縮された潜在空間で動作することにより、トレーニングと推論の計算コストを削減します。典型的なディフュージョンモデルは4xから8xの範囲で空間圧縮を使用しますが、Würstchenは42xの空間圧縮を採用し、画像の詳細を損なうことなく、より小さな潜在表現でのトレーニングを可能にします。
このアーキテクチャは、3つの主要なステージから構成されます:
- The Decoder (Stages A and B): このコンポーネントは、圧縮された画像をピクセル空間に戻してデコードします。ステージ A (VQGAN) とステージ B (Diffusion Autoencoder) から構成されます。
- The Prior (Stage C): このモデルは、高度に圧縮された潜在空間内で学習されます。画像生成プロセスのテキスト条件コンポーネントを処理します。
パフォーマンスと効率の向上
Würstchenは、Stable Diffusion XL (SDXL)などのモデルと比較して、推論速度とメモリ使用量において大幅な改善を提供します。A100 GPUなどのハイエンドハードウェアを持たないユーザーでも利用できるように特別に設計されています。
トレーニング計算の削減
このモデルは、トレーニングに必要なGPU時間が大幅に削減されていることを示しています:
- Würstchen v1 (512x512): 必要なGPU時間は9,000時間で、Stable Diffusion 1.4に費やされた150,000GPU時間と比較してコストが16x削減されていることを示しています。
- Würstchen v2 (up to 1536 resolution): 必要なGPU時間は24,602時間で、より高い解像度でのトレーニングにもかかわらず、SD1.4と比較して約6x安価です。
技術的実装と使用方法
Würstchenは、diffusersライブラリに完全に統合されており、AutoPipelineForText2Imageインターフェースを介して使用できます。このモデルは1024x1024から1536x1536の解像度でトレーニングされていますが、1024x2048でも品質の高い出力を生成でき、2048x2048の解像度へのファインチューニングも低コストで行えます。
統合された最適化
そのdiffusers統合を通じて、WürstchenはいくつかのOut-of-the-box最適化をサポートします:
- Memory Management: モデルのオフロードとシーケンシャルCPUオフロードにより、VRAM使用量を最小限に抑えます。
- Hardware Support: Apple Silicon Macの
mpsデバイスをサポートします。 - Prompting: Compelライブラリを使用したプロンプトの重み付け。
- Reproducibility: 一貫した結果を得るためにジェネレーターを使用します。
高度なパフォーマンスチューニング
ユーザーは、以下の2つの主要な技術を使用してWürstchenをさらに高速化できます:
- Flash Attention: モデルは自動的にPyTorch 2.0の
scaled_dot_product_attention(SDPA)を使用してメモリ効率の良い注意を行います。PyTorch 1.xのユーザーは、pipeline.enable_xformers_memory_efficient_attention()を介してxFormersライブラリを使用できます。 - Torch Compile:
torch.compileを事前モデルとデコーダーモデルに適用し(mode="reduce-overhead"およびfullgraph=Trueを使用)、初期コンパイル期間(最大2分)後の追加的なパフォーマンス向上を提供します。