lllyasviel氏によるStable Diffusion WebUI の最適化&高速化版「Stable Diffusion WebUI Forge」の紹介です。
Stable Diffusion WebUI Forgeとは
Stable Diffusion WebUI Forgeは、ControlNet や Foocus の作者である lllyasviel氏によって作成された開発を容易にし、リソース管理を最適化し、推論を高速化するためのStable Diffusion WebUI(Gradioベース)ベースのプラットフォームです。「Forge」という名前は、「Minecraft Forge」からインスピレーションを受けており、このプロジェクトは、SD WebUI の Forge になることを目指しているとのことです。
オリジナルのWebUIであるのAutomatic1111のユーザーインターフェイスを変更することなく、高速化とメモリ効率の向上が実現されています。
そして、Forgeの非常に重要な変更として、Unet Patcherがあります。Unet Patcherを使用すると、Self-Attention Guidance、Kohya High Res Fix、FreeU、StyleAlign、Hypertileのようなメソッドを100行程度のコードで実装できます。このUnet Patcherのおかげで、SVD、Z123、マスクされたIp-adapter、マスクされたcontrolnet、photomakerなど、多くの新しいことが可能になりました。
高速化
オリジナルのWebUI(1024pxでSDXLの推論を行う場合)と比較して、以下のようなスピードアップが期待できます
- 8GB vramのような一般的なGPUを使用する場合、推論速度(it/s)は約30~45%向上、GPUメモリピーク(タスクマネージャーでの)が約700MBから1.3GB減少、最大拡散解像度(OOMしない)は約2倍から3倍に増加し、最大拡散バッチサイズ(OOMしない)が約4倍から6倍増加します。
- 6GB vramのようなあまり性能の高くないGPUを使用した場合、推論速度(it/s)は約60~75%向上、GPUメモリピーク(タスクマネージャーでの)が約800MBから1.5GB減少、(OOMしない)最大拡散解像度は約3倍、(OOMしない)最大拡散バッチサイズは約4倍に増加します。
- 24GBのvramを持つ4090のような高性能GPUを使用する場合、推論速度(it/s)は約3~6%向上、GPUメモリピーク(タスクマネージャーでの)が約1GBから1.4GB減少、最大拡散解像度(OOMしない)は約1.6倍に増加し、最大拡散バッチサイズ(OOMしない)は約2倍増増加します。
- SDXLにControlNetを使用する場合、最大ControlNetカウント(OOMしない)は約2倍増加し、SDXL+ControlNetのスピードは約30~45%スピードアップします。
■比較
これは SDXL を備えた 8GB VRAM (3070ti ラップトップ) での結果比較です。
新機能 (元の WebUI では利用できない)
Unet Patcher のおかげで、SVD、Z123、masked Ip-adapter、masked controlnet、photomaker など、多くの新しいことが可能になり、Forge でサポートされるようになりました。
また、Forge では以下の新しいサンプラーが利用できます。
DDPM DDPM Karras DPM++ 2M Turbo DPM++ 2M SDE Turbo LCM Karras Euler A Turbo
コマンドフラグについて
Forge バックエンドでは、リソース管理に関連するすべての WebUI のコードが削除され、すべて作り直されています。なので、 medvram, lowvram, medvram-sdxl, precision full, no half, no half vae, attention_xxx, upcast unet
…のような以前のCMDフラグはすべて削除されました。これらのフラグを追加してもエラーは発生しませんが、何も起こらないことにご注意ください。Forge では本当に必要であると確信できない限り、ユーザーに cmd フラグの使用を推奨していません。Forge にモデルをロードする方法を決定させることが強く推奨されています。
cmd フラグもなくても、Forge は SDXL を 4GB vram で、SD1.5 を 2GB vram で動作させることができます。
唯一必要なフラグは --always-offload-from-vram
((このフラグは処理を遅くします)です。このオプションは、Forge が常に VRAM からモデルをアンロードするようにします。これは、複数のソフトウェアを一緒に使用していて、Forge がより少ない VRAM を使用し、他のソフトウェアにいくつかの VRAM を与えたい場合、または Forge と VRAM を競合させる古い拡張機能を使用している場合、または(非常にまれですが)OOM が発生する場合に便利です。
インストールについて
A1111 を持っていて、Git を知っている
A1111をお持ちでgitに慣れている方は、ターミナルで /path/to/stable-diffusion-webui
で次のコマンドを実行することを強く推奨されています。
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
A1111 に戻るには、git checkout master
または git checkout dev
を実行してください。
次に、cd extensions/sd-webui-animatediff
と git checkout forge/master
を行うことができます。
A1111 を持っていない、または Git を知らない
ワンクリック インストール パッケージ (git と Python が含まれている) を使用することができます。
こちらから zip パッケージをダウンロードします。
ダウンロード後、解凍し、update.bat
で更新し、run.bat
で実行してください。
update.bat
を実行することが重要であることに注意してください。そうでないと、潜在的なバグが修正されていない以前のバージョンを使用している可能性があります。
拡張機能について
ControlNet と TiledVAE は統合されているため、次の 2 つの拡張機能をアンインストールする必要があります。
sd-webui-controlnet multidiffusion-upscaler-for-automatic1111
AnimateDiff は、sd-webui-animatediff forge/master ブランチとsd-forge-animatediffでcontinue-revolution氏によって作成中です。continue-revolution氏によると prompt travel, inf t2v, controlnet v2vはうまく動作することが確認されおり、motion lora, i2iバッチはまだ作成中で、近日中に完成するかもとのことです。
以下のような他の拡張機能も問題なく動くようです。
canvas-zoom translations/localizations Dynamic Prompts Adetailer Ultimate SD Upscale Reactor
ダウンロード
Stable Diffusion WebUI Forge の詳細やダウンロードはこちらから
コメント