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 訓練

透過結合 bitsandbytespeft,可在具備 24GB VRAM 的消費級 GPU 上微調 SD3.5 Large。雖然現有的 SD3 訓練腳本相容,但量化需要特定的修改:

  1. 使用量化設定或預先量化的 checkpoint 來初始化 transformer。
  2. peft 套件中呼叫 prepare_model_for_kbit_training(),以為量化訓練做好模型準備。

彈性模型載入

Diffusers 提供 SD3Transformer2DModelfrom_single_file 方法,讓使用者能直接從 Stability AI 發布的原始 .safetensors checkpoint 檔案載入 transformer,之後即可整合至 StableDiffusion3Pipeline

Sources