Stable Diffusion 3.5 Large 與 Diffusers 整合
Hugging Face 已將 Stable Diffusion 3.5 (SD3.5) 整合至 Diffusers 函式庫,提供一個 8B 參數的模型,以提升 Stable Diffusion 3 的效能。此發行版包含兩個主要的 checkpoint:一個標準的 8B 大模型,以及一個時間步蒸餾的 8B 大模型,能在顯著更少的步驟中產生高品質影像。
SD3.5 Large 的架構增強
Stable Diffusion 3.5 Large 保持與 SD3 Medium 類似的 transformer 架構,但引入了兩項關鍵技術變更,以提升擴展性與效能:
- QK 正規化: SD3.5 Large 實作 QK 正規化,這是訓練大型 transformer 模型以確保穩定性的標準做法。
- 雙重注意力層: 模型將 MMDiT 區塊中每個模態流所使用的單一注意力層替換為雙重注意力層。
其他元件,包括 VAE、文字編碼器與噪聲排程器,與 SD3 Medium 中使用的相同。
使用 Diffusers 的推論實作
SD3.5 為受限模型,使用前需使用者在 Hugging Face Hub 上接受條款,並透過 huggingface-cli login 進行驗證。推論建議使用的精度為 torch.bfloat16。
標準與 Turbo 推論
使用者可以透過 StableDiffusion3Pipeline 來實作標準的 8B 模型。時間步蒸餾版本,稱為「turbo」模型,省去 classifier-free guidance 的需求,通常僅需 4 到 8 步即可產生影像,顯著降低延遲。
記憶體最佳化與量化
由於 8B 參數規模,SD3.5 Large 需要大量記憶體。Diffusers 支援 bitsandbytes 量化,以在消費級硬體上執行推論。透過使用 BitsAndBytesConfig 以「NF4」精度載入 transformer,使用者可大幅降低 VRAM 佔用。呼叫 pipeline.enable_model_cpu_offload() 亦可進一步節省記憶體。
微調與 LoRA 訓練
透過結合 bitsandbytes 與 peft,可在具備 24GB VRAM 的消費級 GPU 上微調 SD3.5 Large。雖然現有的 SD3 訓練腳本相容,但量化需要特定的修改:
- 使用量化設定或預先量化的 checkpoint 來初始化 transformer。
- 從
peft套件中呼叫prepare_model_for_kbit_training(),以為量化訓練做好模型準備。
彈性模型載入
Diffusers 提供 SD3Transformer2DModel 的 from_single_file 方法,讓使用者能直接從 Stability AI 發布的原始 .safetensors checkpoint 檔案載入 transformer,之後即可整合至 StableDiffusion3Pipeline。