Forge

Last-modified: 2025-06-29 (日) 10:15:46

このアプリについて

概要

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以下で動かせる最も有効な手段である。

  • 6月8日に制作者が「A1111が次期バージョンで、Forgeと遜色ない生成速度を発揮できるようになる見通しが立ったこと」について
    • 筆者の環境で試したところVRAMが足りている場合はForgeよりA1111の方が若干速い
      使用VRAMは圧倒的に少ないが何かA1111にはないSTEPが入っている模様。しかし気にする程の差ではない。
      生成される内容も若干変わる。良くなったようにも取れるが人によっては劣化と取れるかもしれない。

「今後のアップデートでは互換性がなくなるような実験的な機能を追加しようと考えていること」などから「Forge利用者は元のA1111を利用するか、更新せずに使ってください。一般ユーザーは間違ってアップデートしないようにしてください」(いずれも意訳)と言った内容の説明が出された。

現在、Forgeを過去のバージョン(29be1da)として使い続けるか
A1111か、別のForge環境を利用するかのどちらかが求められている状況となっている。

A1111Forgeの性能差に関する報告として、Forge制作者の発表通り速度面についてはA1111についてもかなり高速化されており、Forgeに迫っているのは事実であるが、VRAM使用量については未だにForgeの方がかなり少なく済んでいるようであり、「VRAM8GB以下の環境で、Forgeなら問題なく生成できるが、A1111だと厳しい」、「画像生成と動画視聴・ゲームプレイを同時に行ってもForgeなら問題ないが、A1111だと画像生成だけでVRAMを食い潰してしまうため無理」といった声が聞かれており、Forgeユーザーが何も考えずにA1111環境に移行すればいい、といった状況には残念ながらなっていないのが現状であり、Forgeを不便なく利用しているという状態であれば、今しばらく様子見でも問題ないといったところ。

特に、SDXLをVRAM8GB以下で利用しているのであれば、A1111へ移行した結果、満足に生成が行えないという事態に陥る可能性が高いため、移行を考える場合は、現環境を削除せずに試してみることが望ましい。

※余談 SD3について

6月12日にリリースされたStable Diffusion 3(SD3)については、リリース時点でForgeが既に通常更新を終了していたことから非対応となっている。
SD3はSDXL以上のスペックが要求されることから、SDXLにおける実績からForgeに期待を寄せていたユーザーも多いと思われるが、残念ながらForgeでSD3の利用は絶望的となってしまっている。

そのため、これからSD3も見越してPCを新調しようとする場合、かなり高いスペックが要求される可能性もある点に注意が必要となる。
もっとも、余談の余談だが、SD3については2024年6月現在ではライセンス絡みで(特にエロ方面の生成で)先行き不透明となっているため、SD3を検討するのであれば、落ち着いてから考えた方が無難といえる。

最近の主な出来事も参照。

導入方法

インストール

  1. githubから導入パッケージ(webui_forge_cu121_torch21.7z)をダウンロードする
    https://github.com/lllyasviel/stable-diffusion-webui-forge/releases/tag/latest
    (gitやpythonなども含まれる)
  2. "D:\forge\"など全角文字や半角スペースが含まれない場所に解凍する
  3. update.batを実行してアップデート(定期的に更新しよう)2024/6/9現在は更新しないことを推奨
    Forgeユーザーは可能なら先に書いたreForgeに乗り換えるとよいだろう。
  1. 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用インストールはオリジナル同様必要

    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でやってしまうのが素直かと思われます
  • LoRAの効き悪くない?
    LoRAのTEが適用されない不具合がありましたが解消済み。
    細かい描写を苦手とするForgeの性質上、元々LoRAの再現度はA1111よりも低い。

参考👉[Bug]: LoRAs not working the same as A1111 · Issue #142

  • --xformersを一度利用した後で--xformersを外すと起動時にエラーを吐いて起動を完了できない
    ModuleNotFoundError: import of xformers halted; None in sys.modules
    参考👉[Bug]: No xformers with default webui-user.bat · Issue #152
    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)

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のポータブル版が同梱されているので、それを利用すると良いかも。
      まずコマンドプロンプトでこれ↓を実行する。
      パスやフォルダ名は自分の環境に合わせて書き換えてください。
      "B:\StabilityMatrix\Data\PortableGit\cmd\git.exe" config --global --add safe.directory "B:/StabilityMatrix/Data/Packages/Forge - Classic"
      次にこれ↓でギップルすればOK。
      "B:\StabilityMatrix\Data\PortableGit\cmd\git.exe" pull