Diffusers との Stable Diffusion 3.5 Large 統合
Hugging Face は Stable Diffusion 3.5(SD3.5)を Diffusers ライブラリに統合し、Stable Diffusion 3 を改良することを目的とした 8B パラメータモデルへのアクセスを提供します。このリリースには、標準の 8B ラージモデルと、タイムステップ蒸留された 8B ラージモデルという 2 つの主要なチェックポイントが含まれており、はるかに少ないステップで高品質な画像生成を可能にします。
SD3.5 Large のアーキテクチャ拡張
Stable Diffusion 3.5 Large は SD3 Medium と類似したトランスフォーマーアーキテクチャを維持しつつ、スケーリングと性能を向上させるために 2 つの重要な技術的変更を導入しています:
- QK Normalization: SD3.5 Large は QK 正規化を実装しており、これは大規模トランスフォーマーモデルの学習時に安定性を確保するための標準的な手法です。
- Dual Attention Layers: モデルは MMDiT ブロック内の各モダリティストリームで使用されていた単一のアテンション層を、二重アテンション層に置き換えています。
VAE、テキストエンコーダ、ノイズスケジューラなどの他のコンポーネントは、SD3 Medium で使用されているものと同一です。
Diffusers における推論実装
SD3.5 はゲート付きモデルであり、使用前に Hugging Face Hub の利用規約に同意し、huggingface-cli login で認証する必要があります。推論時に推奨される精度は torch.bfloat16 です。
標準推論とターボ推論
ユーザーは StableDiffusion3Pipeline を使用して標準の 8B モデルを実装できます。タイムステップ蒸留版は「ターボ」モデルと呼ばれ、classifier-free guidance が不要となり、通常は 4〜8 ステップで画像を生成し、レイテンシを大幅に削減します。
メモリ最適化と量子化
8B パラメータというサイズのため、SD3.5 Large は大量のメモリを必要とします。Diffusers は bitsandbytes 量子化をサポートしており、一般的なハードウェア上での推論を可能にします。BitsAndBytesConfig を使用してトランスフォーマーを「NF4」精度でロードすることで、VRAM の使用量を大幅に削減できます。さらに pipeline.enable_model_cpu_offload() を呼び出すことで、メモリ節約が可能です。
ファインチューニングと LoRA トレーニング
bitsandbytes と peft を組み合わせることで、VRAM 24GB の一般的な GPU 上でも SD3.5 Large をファインチューニングすることが可能です。既存の SD3 トレーニングスクリプトは互換性がありますが、量子化には特定の変更が必要です:
- 量子化設定または事前に量子化されたチェックポイントを使用してトランスフォーマーを初期化します。
peftライブラリのprepare_model_for_kbit_training()を適用し、量子化トレーニング用にモデルを準備します。
柔軟なモデルロード
Diffusers は SD3Transformer2DModel 用に from_single_file メソッドを提供しており、ユーザーは Stability AI が公開した元の .safetensors チェックポイントファイルから直接トランスフォーマーをロードし、StableDiffusion3Pipeline に統合できます。