見出し画像

新しい Stable Diffusion WebUI の『forge』を早速使ってみました

WebUI『forge』登場


2月6日の午前9時半頃、Xにこんな投稿がありました。

和訳
SD-WebUI 開発者の皆さん、ここを見てください!
Stable-Diffusion-WebUI-Forge は、
(1) 速度と VRAM の問題を完全に解決し、
(2) WebUI に UNet Patcher System を追加して、多くの新機能を約 100 行のコードで実装できるようにする新しいプラットフォームです

は……(;゚Д゚)<マジデスカ
lllyasvielさんって、確かあの『ContorlNet』を開発した方ですよね!

https://github.com/lllyasviel

githubのREADMEには、このような説明がありました(以下、本文を日本語化し要約しました)。

元の WebUI (1024px での SDXL 推論の場合) と比較して、以下の高速化が期待できます。

  1. 8 GB vram などの一般的な GPU を使用する場合、推論速度 (it/s) で約30 ~ 45% の高速化が期待でき…。

  2. 6GB vram などのそれほど強力ではない GPU を使用する場合、推論速度 (it/s) で約60 ~ 75% の高速化が期待でき…。

  3. 24 GB vram を備えた 4090 などの強力な GPU を使用すると、推論速度 (it/s) で約3 ~ 6% の高速化が期待でき…。

  4. SDXL に ControlNet を使用する場合、(OOM にならない) ControlNet の最大数は約 2 倍に増加し、SDXL+ControlNet の速度は約 30 ~ 45% 高速化されます。

はい!要は「早く生成できる」と言う事ですね。
と言う事で、帰宅後早速インストールして使ってみました。

インストール方法

Stable-Diffusionを既に利用されている方は、
適当なフォルダでcmd開いて、”git clone 該当のURL”を入れて下さい。
(すいません。これで分からない方はお近くの分かる方から教えて貰ってください)
その後は、webui.bat を走らせると自動的にvenv構築も終わります。

あと、既存WebUI(A1111)にモデル等が入っていると思いますので、user-webui.bat をメモ帳等で開いて起動オプションを加筆してモデルディレクトリ共有すると、起動までの時間を短縮できますし、すぐに使えるようになります。

具体的には、webui.batの6行目にある
set COMMANDLINE_ARGS= の後ろに
--ckpt-dir="自分のPC内のモデルフォルダパス" --vae-dir "自分のPC内のVAEフォルダパス" --embeddings-dir "自分のPC内のembeddingsフォルダパス" --lora-dir "自分のPC内のloraフォルダパス"
を加筆します。
(※私はvaeファイルもA1111から参照したいので、自己流で --vae-dir とvaeファイルの参照先も加筆して使って居ます)
あと、hypernetworkも追加したかったら、--hypernetwork-dir "自分のPC内のhypernetworkフォルダパス" の記載も追加して下さい。
(教えて頂いたO様、ありがとうございます)

あと、最近のA1111のembeddingsファイルは、modelsフォルダ内には無いので、
webui.batファイルの15行目
『@REM --embeddings-dir %A1111_HOME%/models/embeddings^』

『@REM --embeddings-dir %A1111_HOME%/embeddings^』
に、修正して下さいね。

ControlNetのモデルの関しては、ForgeはControlNetが組み込みになった関係なのか、現状(2024/02/08)ではファイルの自己改造無しにA1111内のControlNetモデルを参照する事は出来ないようです。
現状では、Forge内のControlNetフォルダ内にモデルを入れて使うのが、一番リスク少なくベストだと思います。
あとは、バージョンアップ等公式での対応を待つというのもありですね。

私のPC(GPU)環境

私のPCのGPUはRTX 4060 Ti (16GB)です。
それほど早くは有りませんが、VRAMは多めのGPUです。
ドライバーはバージョン31.0.15.3667と古めのバージョンです。
(トラブル怖くてバージョン上げていません)

SD1.5のHires. fix2倍生成比較

まず、A1111(version: v1.7.0)で6枚生成してみました。

次は、forge(ersion: f0.0.6-latest-39-g1ecbff15 )で6枚生成してみました。
わずかですが、同一条件でも生成される画像が変わりますね。

あれ?forgeで生成した方が9秒長くかかりました。でも、6枚で9秒なので誤差の範囲と言えば、特に気に気になる程度では無いです。
ですが、VRAMの使用率が10%ほど低下しています。もしかすると、VRAMが8GBや6GBのGPUだと生成時間に差が出て来るのかもしれません。

SDXLのHires無し生成比較

今度は、A1111でSDXLモデルを使って6枚生成してみました。

次に、forgeで6枚生成してみました。

早い!6枚で約30秒も早くなりました。
約130秒が約100秒に短縮ですから、生成時間は約25%短縮です。

SDXLのHires1.5倍生成比較

今度は、A1111でSDXLモデルを使って2枚Hires1.5倍生成してみました。
Hires時に、共有メモリも使用するためやはり時間が掛ります。

次に、forgeで2枚生成してみました。

え…。forgeさん、共有メモリ使わないんですか!

そして、この早さ!2枚で約40秒も早く生成できました。
約140秒が約100秒に短縮ですから、生成時間は約30%短縮ですよ。
うん、SDXLじゃないような体感速度ですね。

最後に

本当は、SDXL に ControlNet 使っても比較したいところなのですが、SSD メモリに余裕が少なくて、SDXL用ControlNetモデルを入れていないんです。
(すみません💦 でも、今までの感じでもう早く生成できるのは確実だと思います)
余り参考にならないかもしれませんが、『forge』を使うか使わないかの参考にして頂けると幸いです。

オマケ

追加で「animagine-xl-3.0」を使用して1024x1024で6枚生成を比較しました

WebUI A1111
サンプラーはRestart、ステップは35で約4分13秒でした。

WebUI forge
サンプラーはRestart、ステップは35で約3分26秒でした。

47秒短縮で、VRAM使用量が71%に減ってますね。

WebUI forge
サンプラーはDPM++ 2M Karras、ステップは25はなんと約1分30秒でした。

1枚当たり15秒…。SDXLだよね???
早いですわ~。

この記事が気に入ったらサポートをしてみませんか?