多功能強化版 Automatic1111 的 WebUI - Forge

現在 Fooocus 及 ControlNet 的作者 lllyasviel 再推出 Stable Diffusion WebUI Forge,一個基於 Automatic1111 版本改良的版本,除了 Automatic1111 的基本功能外,還新增一些內置功能以及使用不同的 Backend,新 Backend 使用更少記憶體及擁有更快的速度。

多功能強化版 Automatic1111 的 WebUI - Forge
多功能強化版 Automatic1111 的 WebUI - Forge

一直以來很多使用者都習慣使用 Automatic1111 Stable Diffusion WebUI,但是隨著 Fooocus 及 ComfyUI 的推出, Automatic1111 的 WebUI 即使一直更新但功能總是跟不上。

現在 Fooocus 及 ControlNet 的作者 lllyasviel 再推出 Stable Diffusion WebUI Forge,一個基於 Automatic1111 版本改良的版本,除了 Automatic1111 的基本功能外,還新增一些內置功能以及使用不同的 Backend,新 Backend 使用更少記憶體及擁有更快的速度。

對原有 Automaitc1111 版本用家來說是無痛升級,因為一樣的界面一樣的功能下,能使用更少記憶體就能更快生成圖片,強烈建議所有 Automatic1111 使用者升級到 Forge。


安裝 Stable Diffusion Forge

如果你懂得用 Git 又有使用 Automatic1111 版本 WebUI,在 Automatic1111 的 root 資料夾使用以下指令可以馬上轉成 Forge branch ,省卻搬 Model/Extension 的煩惱,也可以隨時切換 brand 回到 Automatic1111 版本。

git remote add forge https://github.com/lllyasviel/stable-diffusion-webui-forge
git branch lllyasviel/main
git checkout lllyasviel/main
git fetch forge
git branch -u forge/main
git pull

如果你想另外開一個資料夾來儲放,可以使用跟安裝 Automatic1111 的方法來安裝。

MacOS 安裝 StableDiffusionWebUI 及 有用的 Extension
雖然網上有不少 Cloud 的 圖像生成 AI service,但是如果要大量/長期免費地使用,在本地安裝及依靠本機運算能力的 Stable Diffusion 是一個不錯的選擇。

Windows 使用者可以下載後運行 update.bat 更新後運行 run.bat 啟動。

啟動後會自動下載一些 Model,然後就會自動彈出視窗。

Stable Diffusion WebUI Forge 的界面

跟 Automatic1111 一模一樣,只是多了一些 Integrated 的功能。


效能提升

官方做了效能比較,相同電腦用 Forge 生成相同的圖片會比 Automatic1111 快,所需的記憶體也較少。

而且電腦效能越低,加速的效果越強,一些以前不足以生成 SDXL 1024 x 1024 圖片的電腦也可以順便生成。

其中只有 6GB / 8GB GPU Ram 的速度提升最高,最高可以提升 75% 速度!反而 24GB 4090 經測試後只有 3-6% 的速度提升。

Forge 生成 SDXL 圖片只需 6.3GB Ram

Backend 功能

由於 Forge Backend 是全新設計的,一些原本啟動 Automatic1111 時的參數被刪除,e.g. medvram, lowvram, medvram-sdxl, precision full, no half, no half vae, attention_xxx, upcast unet 通通都不能用。

不過即使你什麼參數都沒有使用,還是可以以 4GB Vram 使用 SDXL Model。

一些使用時必須小心的參數

  1. --always-offload-from-vram 當你同時使用多個 software 或想 forge 使用更少 Vram 把 Vram 留給其他 software 使用時可以使用(使用這個時效能會慢一點但會較穩定)。
  2. --cuda-malloc 要求 pytorch 為了 tensor malloc 使用 cudaMallocAsync 。(效能會比較快,但有機會崩潰)。
  3. --cuda-stream 消取移動 model 的時間,SDXL 在小 Vram 的裝置上(RTX4050 6GB, RTX 3060 6GB)上有 15% 至 25% 的效能提升。但這個設定會因為 GPU 沒有足夠空間而容易崩潰,特別在舊電腦上。(效能會有所提升,但有機會崩潰)。
  4. --pin-shared-memory 這個只跟 --cuda-stream 一起使用時有用。卸載 model 時會將 model 卸載到 GPU 記憶體而不是系統記憶體。一些少 Vram 的使用 SDXL 時會有 20% 的效能提升,但是因為 pytorch 沒有有效的方法去偵測記憶體,所以會引致崩潰並而不能復原(效能會提升,但有機會崩潰)。

其他可以控制 GPU 的參數

只用 GPU/CPU Vram

--always-gpu
--always-cpu

設定 Attention layer

--attention-split
--attention-quad
--attention-pytorch
--disable-xformers
--disable-attention-upcast

設定 floaing point (使用 --all-in-fp16 可以節省記憶體的使用。)

--all-in-fp32
--all-in-fp16
--unet-in-bf16
--unet-in-fp16
--unet-in-fp8-e4m3fn
--unet-in-fp8-e5m2
--vae-in-fp16
--vae-in-fp32
--vae-in-bf16
--clip-in-fp8-e4m3fn
--clip-in-fp8-e5m2
--clip-in-fp16
--clip-in-fp32

設定平台

--directml
--disable-ipex-hijack
--pytorch-deterministic

Forge 本身不建議使用這些參數,除非你真的知道怎麼用並且有這個需要。


Unet Patcher

Forge 並不是借用任何平台的 backend,而是使用名為 Stable Diffusion WebUI with Forge backend,大家可以稱之為 Forge backend。一些 python symbols 跟其他軟件相似是為了減低其他開發者的學習成本。

現在開發 forge extension 很簡單,作者只用 80 行 code 就程寫了 FreeU 的功能。

extensions-builtin/sd_forge_freeu/scripts/forge_freeu.py

FreeU Integrated

其他相似的 extensions 好像 HyperTile,KohyaHighResFix,SAG 都能以大約 100 行 code 就能實現。

其他 integrated extensions

實現 Stable Video Diffusion 及 Zero123 也變得很簡單。

extensions-builtin/sd_forge_svd/scripts/forge_svd.py

現在所有 code 都看似獨立運作,但會自動進行卸載及轉移記憶體,以下記憶體由打開 WebUI,載入 SDXL,生成圖片,載入 SVD,生成影格,GPU 使用評保持平穩,代表記憶體完美平穩地轉移。

記憶體使用狀況

新功能

因為 Unet Patcher 的關係,使 Forge 可以輕易支援 SVD,Zero123,Masked IP-adapter,Masked ControlNet, Photomaker 等等。

Photomarker 這個功能需要 prompt 為 a photo of {photomaker} 去設定你的圖片變成某個攝影師的風格。

Photomaker
Marigold Depth

新取樣器

DDPM
DDPM Karras
DPM++ 2M Turbo
DPM++ 2M SDE Turbo
LCM Karras
Euler A Turbo

以下 extension 由於已經內置,所以不用安裝

sd-webui-controlnet
multidiffusion-upscaler-for-automatic1111

以下 extension 已確定無問題可以使用

canvas-zoom
translations/localizations
Dynamic Prompts
Adetailer
Ultimate SD Upscale
Reactor

如果使用 Forge 的 unet patcher 重寫舊 extension 的話,可以大幅減少八成的 code,特別是跟 ControlNet 相關的 extension 全都變得更細少。


History 記錄

History

Forge 還內置 History 記錄功能,在上面按一下沙漏齒輪 icon 就可以打開記錄側欄,只要 double click 圖片就可以即時套用該圖片的設定及 prompts,非常方便。也可以按上面沙漏 save icon 儲存現時的設定。


總結

Forge 可以作為一個強化版的 Automatic1111 WebUI 使用,因為分支的關係,可以繼續受惠於 Automatic1111 升級及 Forge 的原生性能提升。強烈建議所有 Automatic1111 WebUI 的使用者都馬上轉成 Forge。