このアプリについて
概要
- ControlNetやFooocusでお馴染みlllyasviel氏がStable-Diffusion-WebUIを最適化したアプリ
https://github.com/lllyasviel/stable-diffusion-webui-forge
参考👉Development Plan · Discussion #166
現在のForge本家は実験的ブランチになっており、一部のもの好き以外には非推奨となっている。
いわゆるヒトバシラー仕様
ただし、reForgeでは使用出来ないFLUX.1に対応している
SDXL(SD1.5)で画像を生成したいだけなら旧Forgeから派生したreForgeを使おう。
reForgeはかつてのForgeのように軽量化と(ある程度の)A1111互換を想定したアプリとなっている。
以下の説明は大体いまはreForgeにそのまま適用されると考えて良い。
https://github.com/Panchovix/stable-diffusion-webui-reForge
reForgeを使う、といわれてもどうすればいいかよく分からないという場合はEasyReforgeを利用するのがオススメ(導入方法等、当該ページを参照)。
特徴
- 利用者の多いStable-Diffusion-WebUIとUI構成が同じなので取っつき易い
Forge will never add unnecessary opinioned changes to the user interface. You are still using 100% Automatic1111 WebUI.
- 生成中のVRAM使用量を大きく削減できるためSDXLやVRAM4~8GBでも快適に動作する
(ただしメインメモリを結構食う)Forge can run SDXL with 4GB vram and SD1.5 with 2GB vram.
- 拡張も互換性が高いのでほぼ同じものが使える(または容易にForgeへ対応できる)ようになっている
Another very important change that Forge brings is Unet Patcher. No need to monkeypatch UNet and conflict other extensions anymore!
- 軽量と高速化の為、A1111では使えた機能が一部無効化されている。
- 処理は早いが正確な描写を苦手とする。特に手や足が破綻しやすい。背景のクオリティも若干下がる。
注意事項
2024年12月現在、ForgeはSDXLをVRAM8GB以下で動かせる最も有効な手段である。
「今後のアップデートでは互換性がなくなるような実験的な機能を追加しようと考えていること」などから「Forge利用者は元のA1111を利用するか、更新せずに使ってください。一般ユーザーは間違ってアップデートしないようにしてください」(いずれも意訳)と言った内容の説明が出された。
現在、Forgeを過去のバージョン(29be1da)として使い続けるか
A1111か、別のForge環境を利用するかのどちらかが求められている状況となっている。
A1111とForgeの性能差に関する報告として、Forge制作者の発表通り速度面についてはA1111についてもかなり高速化されており、Forgeに迫っているのは事実であるが、VRAM使用量については未だにForgeの方がかなり少なく済んでいるようであり、「VRAM8GB以下の環境で、Forgeなら問題なく生成できるが、A1111だと厳しい」、「画像生成と動画視聴・ゲームプレイを同時に行ってもForgeなら問題ないが、A1111だと画像生成だけでVRAMを食い潰してしまうため無理」といった声が聞かれており、Forgeユーザーが何も考えずにA1111環境に移行すればいい、といった状況には残念ながらなっていないのが現状であり、Forgeを不便なく利用しているという状態であれば、今しばらく様子見でも問題ないといったところ。
特に、SDXLをVRAM8GB以下で利用しているのであれば、A1111へ移行した結果、満足に生成が行えないという事態に陥る可能性が高いため、移行を考える場合は、現環境を削除せずに試してみることが望ましい。
6月12日にリリースされたStable Diffusion 3(SD3)については、リリース時点でForgeが既に通常更新を終了していたことから非対応となっている。
SD3はSDXL以上のスペックが要求されることから、SDXLにおける実績からForgeに期待を寄せていたユーザーも多いと思われるが、残念ながらForgeでSD3の利用は絶望的となってしまっている。
そのため、これからSD3も見越してPCを新調しようとする場合、かなり高いスペックが要求される可能性もある点に注意が必要となる。
もっとも、余談の余談だが、SD3については2024年6月現在ではライセンス絡みで(特にエロ方面の生成で)先行き不透明となっているため、SD3を検討するのであれば、落ち着いてから考えた方が無難といえる。
最近の主な出来事も参照。
導入方法
インストール
- githubから導入パッケージ(webui_forge_cu121_torch21.7z)をダウンロードする
https://github.com/lllyasviel/stable-diffusion-webui-forge/releases/tag/latest
(gitやpythonなども含まれる) - "D:\forge\"など全角文字や半角スペースが含まれない場所に解凍する
- update.batを実行してアップデート
(定期的に更新しよう)2024/6/9現在は更新しないことを推奨
旧Forgeユーザーは可能なら先に書いたreForgeに乗り換えるとよいだろう。
- run.batで起動!
もちろんgit cloneしても良い
モデルを共有する
すでにあるStable-Diffusion-WebUIなどとモデルを共有したい
- 起動オプションでパスを設定する場合
webui/webui-user.batを編集して場所を指定する
新たな--forge-ref-a1111-homeオプションでまとめて設定できるset COMMANDLINE_ARGS= --forge-ref-a1111-home "D:/sd.webui/stable-diffusion-webui"
¥記号ではなく/を利用しよう
個別でディレクトリ指定オプションを指定する
環境変数A1111_HOMEを指定するか--ckpt-dirに直接パスを書けばOK
@REM Uncomment following code to reference an existing A1111 checkout. set A1111_HOME=(例)D:/sd.webui/stable-diffusion-webui @REM @REM set VENV_DIR=%A1111_HOME%/venv set COMMANDLINE_ARGS=%COMMANDLINE_ARGS%^ --ckpt-dir %A1111_HOME%/models/Stable-diffusion^ --hypernetwork-dir %A1111_HOME%/models/hypernetworks^ --embeddings-dir %A1111_HOME%/embeddings^ --lora-dir %A1111_HOME%/models/Lora^ --gfpgan-models-path %A1111_HOME%/models/GFPGAN^ --esrgan-models-path %A1111_HOME%/models/ESRGAN
- シンボリックリンクで共有する場合
こちら👉モデルについて#シンボリックリンクの作成方法
- update.bat実行後にモデルが消えた!
オリジナルのweb-user.batやフォルダ構成が変わったときにリセットされる場合がある
落ち着いて再設定しよう
Python関係を共有する
なにも設定しないと初回起動時に全部ダウンロードしなおすので、気になる場合はCtrl+Cなどで取り止めて指定する
環境変数VENV_DIRをwebui-user.batなどで設定する
オリジナル側で本当になにも設定していない場合、stable-diffusion-webui/venv以下に入っているので使うよう指定
set A1111_HOME=(例)D:/sd.webui/stable-diffusion-webui @(中略) set VENV_DIR=%A1111_HOME%/venv
きちんと起動することが分かったらForge側でダウンロードされかけのvenvの中身は消して空にしてよい
統合拡張機能について
- ControlNetとTiledVAEは統合されているので以下の拡張機能はインストール出来ない
sd-webui-controlnet multidiffusion-upscaler-for-automatic1111
使用方法
基本機能
基本機能はStable-Diffusion-WebUIと同じなのでそちらを参照のこと
起動オプション
- 自動的に適切なモードで起動するので基本的にユーザーが指定する必要はない
medvram, lowvram, medvram-sdxl, precision full, no half, no half vae, attention_xxx, upcast unet...
- xformersはStable-Diffusion-WebUIと同様に指定すれば使えるようだ
Windowsではtriton関連で警告が出るのを確認(0.0.23.post1~0.0.24)
ただしForgeではxformersを使わない方がわずかだが高速になる
参考👉xformers N/A · Issue #150
- 演算精度に関するオプション
細かいモードの指定ができるようなので興味があればgithubのページを読んでみよう
- CPUだけで使うオプションはあるのか
COMMANDLINE_ARGSに「--always-cpu」を指定するとCPUしか使えない環境での起動ができる
なお、CPUのみ使用のオリジナル版と比較しても、もちろん少しだけ速い
メモリ消費量が増えてる気がするが(メモリ16GBでは常用できないかも)、検討の価値はあると思うtorchのGPUチェックは通常通り行われるので、CPU使用時の実際のコマンドライン指定は
set COMMANDLINE_ARGS= --always-cpu --skip-torch-cuda-test
となる。(右辺の前後に他のオプションが追加されていても構わない、要半角空白)
また、オリジナルのPython環境を共有していない場合はtorchがCPU対応の設定を持っていないので、
オリジナル同様stable-diffusion-webui-forge\modules\launch_utils.pyのtorch_index_urlを書き換える必要がある
(よくわからなければForge側でも設定してOK。torchインストール時にしか使われないので)
現時点では363行目(この行数はバージョンアップで変わるのでファイル内検索で探してくれ)def prepare_environment(): torch_index_url = os.environ.get('TORCH_INDEX_URL', "https://download.pytorch.org/whl/cu121") torch_command = os.environ.get('TORCH_COMMAND', f"pip install torch==2.1.2 torchvision==0.16.2 --extra-index-url {torch_index_url}")の、torch_index_url = os.environ.getなんとか…の行を
torch_index_url = os.environ.get('TORCH_INDEX_URL', "https://download.pytorch.org/whl/cpu")に変更する。なおPythonのコメント化は行頭に#。
FP8
- FP8起動オプション
モデルをFP8の精度でVRAMに格納して節約する
生成速度が若干犠牲になるほか出力結果が変わってしまう--unet-in-fp8-e4m3fn --clip-in-fp8-e4m3fn --unet-in-fp8-e5m2 --clip-in-fp8-e5m2
通常はe4m3fnでエラーや黒画像が出る場合はe5m2を使えば良いと思われる
筆者の環境では--clip-in-fp8-e4m3fnは利用出来なかった
SDXL1024x1024での出力例(--unet-in-fp8-e4m3fn --clip-in-fp8-e5m2 を利用)A: 7.11 GB, R: 8.04 GB, Sys: 9.3/11.9941 GB (77.2%) ※通常 A: 6.47 GB, R: 7.44 GB, Sys: 8.6/11.9941 GB (72.1%) ※UNetのみ A: 5.78 GB, R: 6.73 GB, Sys: 7.9/11.9941 GB (66.1%) ※UNet+CLIP A: 8.16 GB, R: 9.15 GB, Sys: 10.4/11.9941 GB (86.4%) ※CLIPのみは逆に増えた
体感だがLoraの効きに問題は見られなかった
- FP8 Weight(Settings->Optimizations)
モデルをFP8の精度でVRAMに格納して節約する
現時点では設定が効かない。webui-user.batのコマンドに 上記の--unet-in-fp8-e4m3fn 等を記入する事で有効と同じ状態になる。
3GBほど軽くなるが、生成速度と破綻が増えてしまう。
SDXLなどでVRAMが足りないと感じる場合は「Enable for SDXL」を選ぶとよいだろう
- Cache FP16 weight for LoRA(Settings->Optimizations)
- モデルをFP8で使用する場合のLoRAの精度を改善する。つまりForgeの劣化を改善する機能ではない。
TiledVAE
- VAE Decode時にOOMが発生すると自動的にTiledVAEでリトライする
Warning: Ran out of memory when regular VAE decoding, retrying with tiled VAE decoding.
Prefer No Sysmem Fallbackを設定しよう👉GeForceドライバ
追加Sampler
- LCM/Turbo(低STEPモデル用)やDDPMなどのSamplerが追加されている
DDPM DDPM Karras DPM++ 2M Turbo DPM++ 2M SDE Turbo LCM Karras Euler A Turbo
TIPS
不具合
- ○○が動かない気がする
結構な割合で本当に動かないです。(というか更新が止まっているので何が動かなくてもおかしくない状態。よく分からないなら諦める事も肝要)
報告済みで修正待ちだったりします。読める方はgithubのissuesを参照
オリジナル版の追加設定が共有由来で動作不具合(コンソールにPythonエラーのログが出るタイプ)を起こす場合、
ForgeのUI上で設定をいちど消して追加設定をやり直すと解消することがあります
- RuntimeError: "slowとかcpuとか低スぺ的文字列" not implemented for 'Half' ※通常生成はできるが拡大などでエラー
Forge作者の高速処理カスタマイズと、低スペックGPU/CPUのみ環境でのtorchの起動オプションが合っていません
一応理屈上は、Forgeの起動オプションに "--no-half --no-half-vae" を追記するとエラーは消えます
1111の低速起動指定と同じになるので、内部的には遅くなるかもしれないし、他の部分で競合的なエラーが新たに出る可能性はあります
(あるいはまあ、「no halfやno half vaeはもう要らないよ」という文言が、CPUユーザーを想定していなかっただけという可能性もあります)
報告などして公式で直るのを待つか、その処理部分だけ1111でやってしまうのが素直かと思われます
参考👉[Bug]: LoRAs not working the same as A1111 · Issue #142
- --xformersを一度利用した後で--xformersを外すと起動時にエラーを吐いて起動を完了できない
参考👉[Bug]: No xformers with default webui-user.bat · Issue #152
ModuleNotFoundError: import of xformers halted; None in sys.modules
xformersフォルダを削除すればOK
場所はForgeの導入の仕方によって異なる- One-Click Package(webui_forge_cu121_torch21.7z)を利用した人
system\python\Lib\site-packages\xformers
- git cloneを使用した人
venv\Lib\site-packages\xformers
(Linux/WSL2別解 venv/bin/pip uninstall xformers)
- One-Click Package(webui_forge_cu121_torch21.7z)を利用した人
built-in拡張機能
UNet Patcherの実装例としてのデモンストレーション的な意味合いが強い
要らなければアンインストールしてもいいし、設定のUser interfaceからHidden UI tabsで不要タブを非表示にもできる。
SVD
動画作れるやつ
モデル設置場所:webui/models/svd
参考👉https://ja.stability.ai/blog/stable-video-diffusion
Z123
3Dモデルを作れるやつ
モデル設置場所:webui/models/z123
参考👉https://ja.stability.ai/blog/stable-zero123-3d
ControlNet
こちら👉ControlNetの使い方
DynamicThresholding
CFG Scaleを高くしても破綻しにくくするやつ
FreeU
出力画像の品質をあげるやつ
HyperTile
計算時間を短縮するやつ
特に大きな画像を出すときに効果的なようだ?
Kohya HRFix
高解像度の画像出力でhires.fixを使わずに破綻を減らすやつ
動作イメージ的には途中のSTEPまで小さな画像で出しつつ途中から元のサイズに戻すような感じ?
- Downscale Factor
実際の出力サイズに対してどのくらい縮小するか
推奨サイズよりN倍の画像を出したいならNを指定する
(例)2048x2048を出力するときSDXLなら2を、SD1.5なら4を指定する
- Start Percent/End Percent
縮小開始STEPと終了STEPを指定する
通常は終了STEPを調整することで破綻と書き込み量のバランスを調整する
- 最大サイズの2048以上を指定できる?
webui/ui-config.jsonをメモ帳などで編集すれば可能"txt2img/Width/maximum": 2048, "txt2img/Height/maximum": 2048,
などを変えてみよう(64の倍数にすること)
LatentModifier
CFG Scaleを高くしても破綻しにくくするやつ?
MultiDiffusion
タイル分割して処理することで大きな画像を生成できるやつ
i2iやControlNetと組み合わせて使おう
SelfAttentionGuidance
出力画像の品質をあげるやつ
- クオリティの代償として速度が大幅ダウン。A1111に対するアドバンテージがVRAMのみとなる。
StyleAlign
他の拡張と連携するやつっぽい
参考👉how does the StyleAlign Integrated feature works?
Forge Classic
https://github.com/Haoming02/sd-webui-forge-classic
reForge同様に、旧Forge(2024/6~7頃のバージョン)からフォークして発展したもの。
- デフォルトではSampling MethodとSchedule Typeの項目が分離していない。
しかし2025/5/7のアプデにより、
Settingsにて「Display the Scheduler Dropdown」をONにすることで分離が可能になった。
トラブルシューテイング
- "config.json" の使い回しや "fp8_storage" のエラーについて
"config.json" をコピーまたはシンボリックリンク等で他のweb UI系ツールと使い回す場合は注意が必要。
1111、Forge、reForgeなどにおいて、"fp8_storage" の設定内容は文字列(str型)で扱われている。
しかしForge Classicにおいてはtrue/falseの論理型(bool型)で扱われる。
そのため、他のツールで使っているconfig.jsonをForge Classicに持ち込むと、
起動時にWarning: bad setting value: fp8_storage: Disable (str; expected bool) Settings変更時には
AssertionError: Bad value for setting fp8_storage: Disable; expecting bool が表示され、config.jsonを上書きすることができない。
解決方法としては、Forge ClassicのSettingsにて "Store UNet Weights in fp8" を検索し、OFFにしてApply settingsを押す。
これでForge Classicが求めるbool型(false)で正常に書き込みが行われるので、静かになる。
ただしこのconfig.jsonをForge Classic以外に持ち込むと、そちらで今度は逆のエラー(想定されてるstr型じゃないんですけど!?って怒られる)が起きるので、シンボリックリンクで使い回ししている人はご注意を。 - Stability Matrix v2.14.2 (2025/5/24)では、Forge Classicの更新に失敗する場合がある。
https://github.com/LykosAI/StabilityMatrix/issues/1241
将来的にStability Matrix側のアップデートで解決されるかもしれない。されてほしい。暫定的な対策方法
- WindowsにGitをインストール済みの人:
昔ながらのgit pullコマンドでForge Classicを更新しましょう。
ただStability Matrix上では、Forge Classicの更新が済んでいないように見えてしまう。
(Stability Matrixの "settings.json" を書き換えてないから?) - そうでない人:
Stability Matrix自体にGitのポータブル版が同梱されているので、それを利用すると良いかも。
まずコマンドプロンプトでこれ↓を実行する。
パスやフォルダ名は自分の環境に合わせて書き換えてください。次にこれ↓でギップルすればOK。"B:\StabilityMatrix\Data\PortableGit\cmd\git.exe" config --global --add safe.directory "B:/StabilityMatrix/Data/Packages/Forge - Classic""B:\StabilityMatrix\Data\PortableGit\cmd\git.exe" pull
- WindowsにGitをインストール済みの人: