西川和久の不定期コラム
VRAMが少ないGPUで画像生成AIを諦めていた人に。「Stable Diffusion WebUI Forge」登場!
2024年2月14日 06:14
生成AI画像ツールでデファクトスタンダードと言えばAUTOMATIC1111。その改良版をControlNetやFooocusを作ったlllyasviel氏がStable Diffusion WebUI Forgeとしてリリースした。早速試用レポートをお届けしたい。
Stable Diffusion WebUI Forgeとは!?
ちょうど前回の「Stable Video Diffusion 1.1」などを試しつつ執筆していた2月6日。Xのタイムラインに「WebUI Forge」(以降Forge)の文字が流れた。一瞬「ん?」っと思ったが、忙しかったこともあり、気にとめなかった。しかしその後、“ControlNetやFooocusを作ったlllyasviel氏によるAUTOMATIC1111(以降A1111)の改良版”と分かり、あわててチェックした次第。
とにかく彼の凄さはその実績からも明白。その彼が生成AI画像ツールのデファクトスタンダートとも言えるA1111に手を入れたとなると、ある意味大事件となる。
いろいろな憶測? が飛び交う中、ちょうどこの原稿を書いている最中に彼からアナウンス(Development Plan)があり、Geminiによる要約を見つつ、筆者が簡単にまとめると……。
オリジナルと競合するために作ったわけではなく、(彼の)研究プロジェクトでのハイパフォーマンスを求めて作ったもの。オリジナルのパフォーマンスが同レベルになったら、(オリジナルに)拡張機能として統合予定。それまではガンガン開発する。
的な感じだ。基本、欲しいものを作る……と言うFooocusと同じスタイルでいかにも彼らしい。
そしてGitHubには、チューンや機能追加が山盛り書かれている。
- 8GB VRAM などの一般的なGPUを使用する場合、推論速度(it/s)で約30~45%の高速化、GPUメモリのピーク(タスク マネージャーで)は約700MBから最大の1.3GB低下
- 6GB VRAM などのそれほど強力でないGPUを使用する場合、推論速度(it/s)で約60~75%の高速化、GPUメモリのピーク(タスク マネージャーで)は約800MBから最大の1.5GB低下
- SDXLにControlNetを使用する場合、ControlNetは最大は約2倍、SDXL+ControlNetは約 30~45%高速化
これを見ると、特にVRAM周りを大きく修正したようだ。容量が少なく半ば諦めていたGPUほど高速化が見込める、ということになる。
GeForce RTX 3090や4090のVRAM 24GBの場合、推論速度(it/s)で約3~6%の高速化、GPUメモリのピーク(タスク マネージャーで)は約1GBから最大の1.4GB低下とあり、遅くなるわけではないものの、効果は薄い感じとなる。
いずれにしても、VRAM容量が少ないGPU搭載機を所有するユーザーにとっては朗報だ。また、追加機能として以下のようなものも書かれている。
- Unet Patcherを使用すると、Self-Attention Guidanceを使うKohya High Res Fix(いきなり推奨解像度より大きい解像度を指定しても破綻しない仕掛け)、FreeU(生成画像の高品位化)などが約100行のコードで実装可能
これに関してはどちらも拡張機能だったが、ビルトインで標準搭載となっている。
- Sampling methodとしてDDPM, DDPM Karras, DPM++ 2M Turbo, DPM++ 2M SDE Turbo, LCM Karras, Euler A Turboなどを追加
特にオリジナルにはTurbo系がなく、Step数を減らして高速化するのにグッドな追加だ。
「少なめのVRAM」でも動くとなると、現在開発中でガンガンアップデートしているが、それでも使ってみたい! と思う人は多いのではないだろうか。
インストールその1
Windowsならインストールは簡単!
- これをダウンロード
- webui_forge_cu121_torch21.7z を適当なフォルダへ展開
- まずupdate.batを実行しアップデート
- run.batで起動する
たったこれだけとなる。起動すると以下のように、A1111とそっくりなWebUIが画面に現れる(基本UIに手を入れる気はないらしい)。
ただこの状態ではModelも何も入っていないので、別途ダウンロードし、該当フォルダ(webui/models/Stable-diffusion/やwebui/models/Lora/)などへ入れる必要がある。
既にA1111使用中の場合は、webui/webui-user.batの中を編集すれば、Modelなどを共有可能。具体的には@REM set A1111_HOME=Your A1111 checkout dirの@rem を外し、set A1111_HOME=として右辺にA1111のPATHを入れる。後は以降の@REM を外せばOKだ。COMMANDLINE_ARGSも必要に応じて追記する。
ただControlNetは構成が変わっているため共有できず、入れ直しとなる。
webui/webui-user.bat
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
@REM Uncomment following code to reference an existing A1111 checkout.
@REM set A1111_HOME=Your A1111 checkout dir
@REM
@REM set VENV_DIR=%A1111_HOME%/venv
@REM set COMMANDLINE_ARGS=%COMMANDLINE_ARGS% ^
@REM --ckpt-dir %A1111_HOME%/models/Stable-diffusion ^
@REM --hypernetwork-dir %A1111_HOME%/models/hypernetworks ^
@REM --embeddings-dir %A1111_HOME%/embeddings ^
@REM --lora-dir %A1111_HOME%/models/Lora
↓書き換えると
set COMMANDLINE_ARGS= --xformers --theme dark --listen
set A1111_HOME=/A1111
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
※ これらが上記のCOMMANDLINE_ARGS=の後ろに追加される
さて先の画面を見ると、結構いろいろなものが増えている。まず上段のタブは、SVD(Stable Video Diffusion)、Z123(Zero123 / 3D生成)。Stable Video Diffusionは1.1になったばかりでグッドタイミング!
続いて左側、DynamicThresholding (CFG-Fix) Integrated、FreeU Integrated、HyperTile Integrated、Kohya HRFix Integrated、LatentModifier Integrated、MultiDiffusion Integrated、SelfAttentionGuidance Integrated、StyleAlign Integrated……と、一部筆者も知らない(使ったことのない)機能が標準装備。特に個人的によく使うFreeUとKohya HRFixが入っているのはうれしい限り。
そしてControlNet Integrated。オリジナルではControlNetは拡張機能となっており、ここが標準搭載なのはある意味当然だろう(ControlNet作った本人)。加えて説明のあったSampling methodも増えており、下の方にTurboの文字が並んでいる。Fooocusもそうだったが、彼がやりたい事をどんどん入れてる感じで非常に面白い。
消費リソースや速度チェック
さて、ではどの程度省リソースで高速化するのか? いつもの“512×768:神里綾華ベンチマーク”を……とサイトに行くと、既にForgeのスコアが載っていて、さらに使用するModelも変わっていた。仕事が早い!
試したシステムは、USB4接続のGPU Box + GeForce RTX 3090。結果を見るとサイトの情報だとGeForce RTX 4070 Super辺りと同じ感じだ。
Forge
200/200 [00:18<00:00, 12.32it/s]
Time taken: 18.6 sec. A: 2.92 GB, R: 3.66 GB, Sys: 5.0/24 GB (20.8%)
A1111
200/200 [00:26<00:00, 10.72it/s]
Time taken: 26.4 sec. A: 3.82 GB, R: 5.19 GB, Sys: 6.5/24 GB (27.1%)
SD 1.5の512x768でもご覧の通り、時間で8秒、リソースで約7%の差が出ている。標準サイズの512x768だけでは効果薄いと思い、R-ESRGAN 4x+ Anime6B, 2.5x, Hires Steps 8, Denoising strength 0.3でUpscaleを同じようにBatch count 10で実行したのが以下の結果。
Forge
280/280 [01:50<00:00, 1.43it/s]
Time taken: 1 min. 50.2 sec. A: 7.15 GB, R: 13.71 GB, Sys: 15.0/24 GB (62.6%)
A1111
280/280 [02:14<00:00, 1.22it/s]
Time taken: 2 min. 14.1 sec. A: 10.75 GB, R: 21.78 GB, Sys: 23.3/24 GB (97.1%)
冒頭ではVRAM 24GBのGPUは効果薄い的な話になっていたが、生成時間は結構な差が出ている。VRAMの消費量も全然違う。これなら24GB搭載のGeForce RTX 3090でも使わない手はない。
筆者は、このGeForce RTX 3090のWindowsマシンにLLM系やStableSwarmUI、ComfyUIなど(同時には使わないが)同時に起動していることが多く、VRAM消費量が少ないのは嬉しい限り。VRAM 6GB or 8GBのシステムをお持ちの方はぜひ試していただきたい。
インストールその2/EasySdxlWebUi
もう1つのインストール方法は、そもそもVRAM容量で諦めていたので、A1111も入っておらず、Modelとか新規で入れるのが面倒な人向けだ。EasySdxlWebUiというセットアップツールがあり、これを使えば、A1111とForgeが同時に入り切り替え可能。Modelなどは共有。そしてイラスト系であるがAnimagine XL V3もインストール済み。ControlNetなど主要どころも入っている……という、何から何までそろって即生成可能な環境となる。
もしリアル系を出したいのなら、それだけダウンロードすればOK。Civitai Helperが入っているので簡単だ。もちろん、どちらからも使用できる。
インストール方法は、このページにあるInstall-EasySdxlWebUi-forge.batを右クリックでダウンロード、適当にフォルダを作りそこへコピー、そして実行。「これだけダウンロードするけどいい?」的にプロンプトが出るのでYでインストールが始まる。
かなり多くのModelなどをダウンロードするためちょっと時間はかかるが、手動だともっとかかるので(笑)、ここは終わるまでじっと待つ。またセットアップ直後でフォルダ下は約22GB使用。事前にストレージ残を確認した方が良い。
Forgeを起動する時にはSdxlWebUi-forge.bat、A1111を起動する時にはSdxlWebUi-a1111.bat、アップデートはそれぞれSdxlWebUi-Update-forge.bat、SdxlWebUi-Update-a1111.batを実行する。ただしセットアップしなかった方=今回はA1111の初回起動はvenvで環境を作るので時間がかかる(2環境合わすと約30GB)。
おそらくA1111側のアップデートはしばらくないと思われるが、Forgeは日々更新しているので、当面は起動前にアップデートする癖を付けておくといいかもしれない。
また生成時、A1111(Forgeも同様)で破綻するケースがあるバグ修正拡張機能、sd-webui-prevent-artifactもインストール済みで安心して利用できる。
まだ何も入ってない人はこちらの方が楽。おすすめのセットアップ方法だ。
以上、Stable Diffusion WebUI Forgeのご紹介をした。これまでVRAMが少ない、GPUが非力なので……と、生成AI画像を諦めていたユーザーもForgeなら使える可能性が高い。該当しそうなPCをお持ちの方は是非チャレンジしてほしい。