Stable Diffusion WebUI Forgeで生成速度が20%以上向上
昨年の3月頃に当ブログを開設してから間もなく1年が経とうとしていますが、いまだにStable DiffusionによるAIイラスト生成を楽しんでいます。
そのためか、今朝も何気なくBingの記事を眺めていたら、おすすめ記事に Stable Diffusion webui Forge に関する記事が挙がってきていました。
ComfyUIやFooocus等、より高速に画像生成できるGUIもどんどん開発されており、実際に自分も軽く触ってはみたのですが、AUTOMATIC1111氏が作成したwebuiのインターフェースの使い勝手がとても良いため、多少速度が上がったところで、この便利さを手放す気にはなれなかったんですね。
ところが、今回の Stable Diffusion webui Forge は元のwebuiをそのまま流用し、生成速度のチューニングのみ施したモノという話。理論値では、VRAM 8GB程度のGPUで30~45%、6GBの非力なGPUで60~75%もの高速化を達成したというのです。それは気になる。
うちのGPUはRTX4070 12GBのため、理論値ほどの高速化は見込めないかも知れませんが、UIが同じならちょっとインストールして試すだけのこと。大した手間でもないので、実際に生成速度を比較してみました。
Stable Diffusion WebUI Forgeの速度比較
先に結果から。
| 画像生成速度 | 時間短縮率 | |
|---|---|---|
| デフォルトのwebui | 15.3秒 | 0% |
| 起動オプションのチューニング | 10.3秒 | 32.6% |
| Forge | 8.2秒 | 46.4%(20.3%) |
こりゃすげーや。
使い慣れている人は既に起動オプション(--opt-sdp-attention等)のチューニング済だと思うので、20.3%程度の速度向上ですが、使い勝手変わらずに2割も生成時間が短縮できるのは大きいですよ。
Stable Diffusion WebUI Forgeのインストール方法
…と言っても、PythonとGitがインストールされている環境なら、
git clone https://github.com/lllyasviel/stable-diffusion-webui-forge
を実行するだけです。
Windowsのコマンドプロンプトでの実行例を出すとこんな感じです。
C:\>mkdir sd C:\>cd sd C:\sd>git clone https://github.com/lllyasviel/stable-diffusion-webui-forge Cloning into 'stable-diffusion-webui-forge'... remote: Enumerating objects: 37512, done. remote: Counting objects: 100% (2353/2353), done. remote: Compressing objects: 100% (686/686), done. remote: Total 37512 (delta 1766), reused 2162 (delta 1625), pack-reused 35159 Receiving objects: 100% (37512/37512), 43.84 MiB | 2.01 MiB/s, done. Resolving deltas: 100% (25667/25667), done.
Windows環境で、まだPythonもGitも入れていない場合は、「StableDiffusionとwebuiをWindows環境へインストールする」で詳しく解説していますが、Pythonのバージョンを 3.10.10 にしようね、っていうこと以外はダウンロードしてインストール画面で[次へ][次へ]とボタンを押すだけの作業です。猿でも出来るのでご安心ください。
尚、git clone自体は44MB程度なので、(回線速度にも寄りますが)ほんの10~20秒くらいで終わるはずです。
git clone後は、従来のwebuiと同様、webui-user.batで起動するだけですが、初回起動時に基本モデルのダウンロード等が発生するので、これに5~10分くらいかかるかも知れません。気長に待ちましょう。
今回のテストで使ったPC
| CPU | Intel 第12世代CPU Core i3-12100F |
|---|---|
| メモリ | 32GB (16GBx2 DDR5-6000) |
| GPU | GV-N4070WF3OC-12GD (nVidia RTX4070 12GB) |
| SSD | SP700-2TNGH (NVMe 2TB) |
人によってはCPUとGPUのバランスが悪いように感じるかも知れませんが、CPUがボトルネックになるような処理はほとんどしないのでギリギリまでケチっています。動画のエンコードもソフトエンコードは滅多に使わず、基本はGPU任せです。
逆に7zip等の圧縮展開処理(メモリの影響が大きい)は毎日のように使うのでメモリはDDR5のオーバークロックメモリ。場合によってはcheckpointを丸ごとRAMディスクへほおりこむことも考えて32GBにしました。64GBと最後まで迷ったけれど、あまり大きいとRAMディスクを作る処理に時間がかかり、PCの起動時間が遅くなるため、このへんで妥協。
SSDはどんな作業をするにしてもボトルネックになりがちなので公称値R:7450MB/s W:6700MB/sのモノを使っています。CPUクーラー、ケース、電源も別途購入して全部で15万円程度で済んだのでかなり安くあがったほうではないでしょうか。どうせ2~3年ごとに買い換えるので、そのときどきでコスパの良いパーツを選べば良いかなと思っています。
テストで生成したイラストとPrompt
1girl loli,knee up,smile,white panties
Negative prompt: (low quality,worst quality:1.2),bad hand
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 3251748454, Size: 512x512, Model hash: 7d1506d076, Model: angelbreed_jitomeV20, Denoising strength: 0.5, Clip skip: 2, Hires upscale: 2, Hires upscaler: R-ESRGAN 4x+ Anime6B, Version: f0.0.16v1.8.0rc-latest-241-g056d4d0f
ベースの画像サイズは512x512pxで、Hires.fixでR-ESRGAN 4x+ Anime6Bを使用して2倍の1024x1024pxにしています。
100枚ほど試しましたが、デフォルト設定のwebuiでは平均しておよそ1枚あたり15.3秒の生成速度でした。
起動オプションについて
使い慣れている方なら、webui-user.batを編集して起動オプションにメモリ最適化のコマンドラインオプションを記述しているかと思います。
うちの場合は下記のとおり。
set COMMANDLINE_ARGS=--no-half-vae --opt-sdp-attention --opt-channelslast --disable-nan-check
メモリ最適化としては、xformersオプションのほうが有名かも知れませんが、某リンクしてはいけないwikiを見て実際に自分の環境で試したところ、--opt-sdp-attentionのほうが生成速度が速かったため、こちらを採用しています。
※いじわるで参考資料を掲載しないわけではなく、リンクするなと明記されているためです。ご了承ください。
この起動オプションを付けて先述のイラストを生成したところ、生成時間が1枚当たり平均10.3秒まで短縮されました。約32.6%の向上であり、劇的です。
Forgeでのテスト
こちらが Stable Diffusion WebUI Forge の画面ですが、ほとんどAUTOMATIC1111氏のwebuiと同じ。
パッと見で違うところは、画面上部でSD VAEやClip skipの調整が出来る点、拡張機能を入れずとも最初からControlNet等のいくつかの機能がデフォルトで組み込まれている点などでしょうか。
このForgeでも先述のPromptを使い、100枚ほど生成を繰り返しましたが、平均およそ8.2秒でした。
最適化の起動オプションについては付けても付けなくても生成速度が0.1秒程度前後するだけだったため、誤差の範囲内と言えそうです。そもそもメモリの最適化機能を組み込んだのがForgeなのだから、当たり前ですよね。
念のため、Tome Optimizationのプラグインを入れてこちらも試しましたが、やはり生成速度は変わりませんでした。
Forgeは起動オプションも、拡張機能も一切触る必要がなく、最初からチューニングされたwebui以上の性能を発揮するので、これから入れる人はもうForgeだけで良いんじゃないかなって感じました。
まとめ
最初に記載した表のとおりですが、webui-forgeはデフォルト状態のwebuiと比べて46.4%、チューニングしたwebuiと比べても20.3%も生成速度が向上しました。
| 画像生成速度 | 時間短縮率 | |
|---|---|---|
| デフォルトのwebui | 15.3秒 | 0% |
| 起動オプションのチューニング | 10.3秒 | 32.6% |
| Forge | 8.2秒 | 46.4%(20.3%) |
気になる点としては、リリースの仕方について少々否定的な意見を見かけるところですかね。
見方を変えるとAUTOMATIC1111氏が築き上げたwebuiをチューニングして別ソフトとして公開しているようなもので、おいしいところだけ持っていくこんなやり方は認められない、と憤る人も少なからずいるそうです。
更にはそのチューニング部分にComfyUIのコードを丸々コピペして使っている部分もあるようで、あちこちから良いとこだけ集めて手柄を自分のモノにするやり方は褒められたものではない、と炎上している掲示板もあるとかないとか。
ぼくもノウハウはどんどんみんなで共有してより良いモノを作っていこうよ!という考えの人間なので知っていることは惜しみなくサイト上に公開していくのですが、明らかに記事をそのまんまコピペされて引用元の明示もないとモヤモヤした気持ちになることもあります。
ましてや、自分なんて比較にならないほどの偉業をなされている方々なので、きちんとリスペクトしてほしいなぁとは思いますね。
なので、今回このwebui Forgeについて記事にするかちょっと迷ったのですが、そもそもライセンス表記などはきちんと行っていたようですし、Forgeの作者いわく、
オリジナルと競合するために作ったわけではなく、(彼の)研究プロジェクトでのハイパフォーマンスを求めて作ったもの。オリジナルのパフォーマンスが同レベルになったら、(オリジナルに)拡張機能として統合予定。それまではガンガン開発する。
引用元:https://pc.watch.impress.co.jp/docs/column/nishikawa/1568551.html
とのことで、オリジナルの開発速度が遅くなりつつあるのは事実だし、最終的に統合まで考えているなら、良いのかな?と感じました。
…本音を言うと、毎日のように数百枚単位で出力している自分としては、使い勝手変わらずに20%もの時間短縮は無視できないレベルなので、ありがたく使わせて頂きたい、という気持ちです。














