昨今のStableDiffusion AUTOMATIC1111でめっちゃ遅くなるあれ。VRAMのメインメモリへの自動スワップを止める方法の(. .)φメモメモ

AI

やばっ。もう1月が終わる(笑)
いつもの方、あけおめことよろ。

StableDiffusionというか、NVIDIAのドライバがいつの間にやらデフォルトでVRAMスワップをするようになっていて、メモリが足りない系のエラーは出にくくなったものの
メインメモリはVRAMと比べるとめっちゃ遅いので、AI生成ではかなり速度が落ちてしまいます(´・ω・`)

VRAMは簡単に増やせないので…実用的なGPUが10万以上するとなると気楽に買い替えもできないもので(T.T)
普段はメモリスワップなし、がっつり足りないときは、メインメモリへのスワップで対応するという風に使っていきたいところです。

プログラム毎にスワップの有効/無効を切り替える

そんなこんなで設定していきましょう!
※NVIDIAのコントロールパネルを開きます(インストールしてない方は入れてね)
インストールされていれば、タスクトレイのNVIDIA設定から開けます

python.exeを登録して設定を変えるらしい。
よく読まずに設定してみた。が、Automatic1111(WebUI)のインストール先のvenvではなかった(;^_^A アセアセ・・・

AI生成しているときに、タスクマネージャーでプログラムのパスを確認する

生成中に使用メモリやCPUリソースの数値が動いてるpython.exeをリストから探して、右クリックからプロパティを開いてファイルのパスを確認する。


例)C:\Users\○○○○\AppData\Local\Programs\Python\Python310\python.exe

NVIDIAのコントロールパネルにプログラムの設定を追加登録する



NVIDIAコントロールパネル→3D設定→3D設定の管理→プログラム設定より
初期値は「グローバル設定(ドライバのデフォルト)を使用する」になっているので、「システムメモリ フォールバックなしを優先」に設定して「適用」ボタンを押す


「適用」ボタンを押すのを忘れずに

設定が有効になっているのかテストする

・設定変更前
VRAMに収まらない生成をしてみる!( ゚o゚)ハッ得意!

共有メモリゴリゴリ使ってますね(笑)
使用環境はRTX3070無印のVRAM8GBです。1024×768を2倍のHiresで2048×153を生成しようとすると簡単に超えちゃいますね!
共有メモリ合わせると23.6GB使ってますね!

逆に考えると、メインメモリのあるだけ使えるという事( ̄ー ̄)ニヤリ
めっちゃ遅いけどね’`,、(´▽`) ‘`,、

このあたりの70BのLLMだって行けちゃうわーい\(^o^)/

話を戻して、NVIDIAコントロールパネルの設定をしてからWebUIを再起動すてみる

・設定変更後
メモリが足りなくなるはずなので・・・

「Out of Memory」出ましたね!設定が反映されています。

負荷を減らして、768×512を2倍のHiresをかけます。
最近はHiresの人気ないですけど、ノイズ取るのにはかなり有効ですよ。Tileはノイズも増幅しちゃいますからね


無事終了。設定完了ですね。
やり方がわかれば選択肢が増える。
ケースバイケースでうまく使いましょ!ヽ(*^。^*)ノ
ではおやすみなさい。


※参考にさせていただいたサイト。
NVIDIA RTX環境での「Stable Diffusion」はVRAMを使い果たすとDRAMも使えるが、逆にVRAMだけにもできる