Stable Diffusion Web UI をローカルで動かしたい。
でも自分のパソコンのスペックではきつい・・・。
という方も多いんじゃないでしょうか。
ここでは、低スペックVRAM4GBでもやれる!ってところを、お見せましょう。
私のPC環境
正直、PC詳しくないんで、これくらいで良いですかね。
- プロセッサ:Intel(R) Core(TM) i5-10400F CPU @ 2.90GHz 2.90 GHz
- 実装RAM:16.0 GB
- グラボ:NVIDIA GeForce GTX 1650 VRAM 4 GB
Stable Diffusion 動かすのに重要なのはVRAMだとか
色んなとこに書いてたので、たぶんこれで良いはず。
で、私のPCは VRAM4GB しかないんですよね。
それでも、Stable Diffusion を毎日動かしています。
もちろん快適とは言えませんが、それなりには使えています。
低スペック VRAM4GB の メリット、デメリット
【メリット】
- 生成が可能である
【デメリット】
- 生成にすごい時間がかかる
- 生成画像のサイズに制限がある
- 使用出来る機能に制限がある
- 使用出来る拡張機能に制限がある
- モデルによって制限がある
![](https://ctrs-jp.com/wp-content/uploads/2023/04/ba8d1900101e1703aa4bad57e8752b7e.jpg)
めちゃくちゃ過酷・・・。
どうですかこの過酷さ。
でも、メリットもあるんです。そう、「使うことが出来る」っていう最高のメリット。
それだけ、それに尽きます・・・。
低スペック VRAM4GB でどこまでやれんのか?
そう、これですね。
低スペック VRAM4GB のPCで、どこまでやれんのか?ってとこです。
実際に私のPCで出来ていること、出来ないこと、を紹介します。
生成画像サイズ
私が今まで生成してきた感じでは以下の通り
あくまでも拡張機能とか何もなしの、プレーンな状態で、です。
サンプリングステップ数はデフォルトの20で測定しました。
512×512 | 512×768 | 768×768 | 768×1028 |
○ | △ | △ | × |
可能 | モデルによっては エラー | モデルによっては エラー | 成功したことが無い |
基本的には 512×768 の縦長か横長をメインに使っていますが
モデルによってはエラーが出てどうにもならないことがあります。
512×512であれば、私が使ったことがあるモデルは全部OKでした。
768×768以上は、正直ダメだと思います。
動いたとしても生成時間がエグい。
なので、512×768がおすすめですね。
512×512だと顔アップのような構図じゃないと、ほぼ使えない。
人物無しであれば全然いけるかもですけど。
生成時間
上記で生成可能だったサイズのみになりますけど、参考までに。
512×512 | 512×768 | 768×768 | 768×1028 |
約60秒 | 約103秒 | 約165秒 | – |
これ、1枚生成する時間ですからね。
数十枚まとめて生成したわけじゃないですよ。
そしてこれ、上記でも言いましたけど、拡張機能とか何もナシですからね。
それでも、生成可能なんです!生成出来るだけで十分なんです。
![](https://ctrs-jp.com/wp-content/uploads/2023/04/1f90e65ff88ea81cfebf936557f894ec.jpg)
他のことしてれば良いだけよね!
Hires.fix
サンプリングメソッドの下にあるチェックボックス
1番右にあるやつです。
![](https://ctrs-jp.com/wp-content/uploads/2023/05/image-19.png)
これ、めちゃくちゃ重要なんですけど、結果から言いますね。
ほぼ使えません
アップスケールする際は必須の機能なのにほぼエラーです。
設定によっては、1.2倍くらいならギリギリ動いたりするんですけど
1.2倍じゃあんまり意味ない。
せめて2倍が動かないと全然使えない。
ただし!これは、Tiled Diffusion という拡張を使えば
同じようなことが可能です!
それについては、ここで書くと長くなるので、また別の記事で紹介します。
ControlNet
これも結構重要ですよね。
簡単に言うと、ポーズを指定出来る拡張機能です。
私はこれ、全部の機能使ったわけじゃないので
使ったことのある機能だけで言いますけど
制約はあるものの、使えます!
と言っても棒人間の OpenPose が使えたらあとは別に・・
もっと細かいことするなら他も必要だと思いますけど
いまのところ私は必要ないので、使ってません。
左から2個目にある Low VRAM にさえチェックを入れておけば
VRAMが少ないPCでもいけます。というチェックですね。
![](https://ctrs-jp.com/wp-content/uploads/2023/05/image-20.png)
ただし、ただでさえ時間のかかる生成が、更に長くはなります。
これはもう仕方がないことですから、あきらめましょう。
![](https://ctrs-jp.com/wp-content/uploads/2023/04/ba2f52fdfee8444218696283c966b532.jpg)
使えるなら全然OKよね
ControlNet の導入方法については以下にまとめているので
知らない方はこちらをどうぞ。
![](https://ctrs-jp.com/wp-content/uploads/2023/05/e8c578a8d3c28720a84cbb690dfd15a4-160x90.jpg)
これくらいで十分
他にも説明しだすとありすぎてキリがないので、これくらいで。
以上で、ある程度基本的なことは全部いけるんじゃないですか?
- txt2img で 512×768 の画像が生成出来る
- ControlNet OpenPose でポーズを指定出来る
- Tiled Diffusion でアップスケールが出来る
ほら、基本的なことは十分可能ですよ。
ただ、すごーく時間がかかるだけです。
どうですか?
一切使えない、よりは全然良いでしょ。
とりあえず、動かないだろうなーで諦めている人は試してみても良いんじゃないです?
少しでも快適に、拡張を使えるようにする策
かなり色々調べて、アレコレ試したんですけど
PCあんまり詳しくないんで、ややこしいの見るとすぐ投げちゃうんですよね。
たぶん、詳しい人は私のこんな記事見なくても、もうやってると思うんで
私みたいにあんまり詳しくない人でも
とりあえず簡単に出来るものだけ、書いときますね。
上記、Stable Diffusion Web UI のページになるんですけど
そこに書いてある方法です。
![](https://ctrs-jp.com/wp-content/uploads/2023/04/88ac4f2271cd17a8732afe4d21c34d37.jpg)
裏技みたいなのあるんだね!
これで少しでも解消されたらラッキー
webui-user.bat を編集する
起動するときに使用する webui-user.bat を右クリックして「編集」をクリック
すると、メモ帳が開いて、中身はこんな感じになってる思います。
![](https://ctrs-jp.com/wp-content/uploads/2023/05/image-21.png)
これの下から2行目の部分
set COMMANDLINE_ARGS=
ってとこですね、ここにコマンドを追加してやります。
xformers
まずは以下の xformers というもの。
–xformers
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Optimizations
xformersライブラリを使用します。メモリ消費量と速度が大幅に改善されました。バイナリがあるため、構成の小さなサブセットでのみ有効になります。
メモリ消費量と速度が大幅に改善
これが優秀です。
同画像を繰り返し生成する際に、同じものが出来ない、というデメリット?
が、あるようなんですけど、正直ほぼわかりません。
なので私は気にせずに使用しています。
set COMMANDLINE_ARGS=–xformers
こんな感じですね、これでOKです。上書き保存しておけばOK。
私はコレだけですね。あとは何も追加していないのですが
速度を犠牲にして、メモリ消費量を減らすコマンドもあります。
medvram / lowvram
–medvram
Stable Diffusion モデルが VRAM の消費を少なくするために、cond (テキストを数値表現に変換するため)、first_stage (画像を潜在空間に変換して元に戻すため)、および unet (潜在空間の実際のノイズ除去のため) の 3 つの部分に分割し、常に 1 つだけが VRAM にあり、残りは CPU RAM に送信されるようにします。ライブ プレビューが有効になっている場合を除き、パフォーマンスが少し低下します。–lowvram
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Optimizations
上記をさらに徹底的に最適化し、unet を多くのモジュールに分割し、1 つのモジュールのみを VRAM に保持します。パフォーマンスに壊滅的。
これは、VRAMの消費を抑える代わりに、速度を犠牲にするってやつ。
いや、これ以上遅くなったらやってられん。
って思って私は使ってないんですけど・・・
これを使用すれば、現状エラーのものでも使えるようになるかも?
ただし、速度は・・・ってことですね。
set COMMANDLINE_ARGS=–xformers –medvram
さっき紹介した xformers の後ろにつけるだけ
–lowvram に変えると更にVRAMを抑えてくれるけど
パフォーマンスは壊滅的。って書いてる笑
set COMMANDLINE_ARGS=–xformers –lowvram
どうしてもこのエラーを回避したい!というものがあれば
これを1度試してみると良いかもですね。
あ、書き換えたら上書き保存してくださいね。
で、Stable Diffusion を起動している状態であれば、再起動してくださいね。
制約は多いけど、ちゃんと使えるんです
以上のように、いろいろ制約はあるんですけど、ちゃんと使えます。
以下はいつも使っている DreamShaper V5 で生成したものです。
![](https://ctrs-jp.com/wp-content/uploads/2023/05/00055-3981244222.jpg)
こんなイラスト系のものから
![](https://ctrs-jp.com/wp-content/uploads/2023/05/00091-3288674054.jpg)
これくらいの半リアルなものまで、全然いけますよ。
生成中の待ち時間になにをするか?
生成時間長いんで、その間は他のことするんです。
ある程度プロンプトやパラメータを決めるとこまでやったら
Batch count を上げて、何枚も一気に生成開始。
まぁ、数分~何十分、下手したら何時間待ちにもなります。
その間に・・・
- 飯を食う
- 風呂に入る
- プレステをする
- Switchをする
- 動画を見る
- 映画を見る
- ドラマを見る
- テレビを見る
- 本を読む
ほら、めっちゃやれることある。
![](https://ctrs-jp.com/wp-content/uploads/2023/04/705293d939e77210f2ee60abfab8ec6f.jpg)
めっちゃポジティブ笑
私の場合はモニターを2枚にして、片方で画像生成させておいて
もう片方で、こうやってブログ記事を書いています。
今も画像生成やってくれていますよー。
数十枚つっこんでるんで、あと・・・2時間20分って出てるな笑
って感じで、この生成時間に慣れてしまえば、これが普通になります。
効率よくやれば1日に結構な枚数やれますよ。
まとめ
はい、まとめるとですね。
快適ではないけど、使えないよりは全然いいだろ
ってことです。
とは言え、快適な生成に憧れるもんです。
ここから、快適な環境に持っていくには・・・
グラボ変えるしか無いっすよね。
![](https://ctrs-jp.com/wp-content/uploads/2023/05/b148b30270237836fe5841e7b0b82906-160x90.jpg)
RTX3060 12GB 一択だと思うんですよねー。
なぜそれ一択なのか?を書いてるんで、また時間あったら見てあげてください。
私もそのうち、なんとか・・・買いたい、と思ってます。