【メモリ16G/VRAM4Gの糞環境でもStableDiffusionができる_トラブル解決奮闘記】③「Stable diffusion model failed to load, exiting」というエラーが出る⇒こうやって自分は解決した
Added 2023-03-01 13:26:10 +0000 UTC前回はグラボを買って、獅子奮迅ののちにエラーが出るとこまでやりました。
さて、StableDiffusion様の仰せのままにグラボも4Gの物を買い
苦労して、グラボも差し替えて
準備もOK
さぁ!!!!!起動しろStableDiffusion!!!!!
と願って起動しなかったStableDiffusion
なぜだーーーーーーーーーーーーーーーーーーーーーーーーーー!!!!
叫びたい気持ちはわかります。
作者も 何度も 何度も トラブルシュートしました。
gitとpytonをアンインストールして、再起動、再びインストール、動いた
えっ!?一瞬?なぜ?アンインストールからのインストール
動いた!
えっ!?
モデルが読み込めない?あっ!あのエラー!StableDiffusion落ちた!なぜ!?!?!
などなど
散々しました。
散々しました。
散々しました。
ええ、
散々しました
結論、
物理メモリ不足です
StableDiffusionで画を描画するのにはVRAMが必要なんじゃないのか!!!
と
突っ込みたい気持ちはわかります。
でも
物理メモリ不足です。
理由は簡単
StableDiffusionを動かしてるのがPythonというプログラミング言語で
そのプログラミング言語は物理メモリを消費して動いているからです。
そのうえでVRAMが絵を描画しているというわけですね。
つまりえ画を描くには
StableDiffusionがVRAMを使って絵を描いていて、
StableDiffusion事態は物理メモリを使って動いているということですね
こんなのどこにも書いてません。
試しに、
StableDiffusionの「webui.bat」や「webui-user.bat」を動かして
起動メッセージが流れてる時に
タスクマネージャで物理メモリを見てください。
使用量が急増してるのがわかります。
そこで物理メモリが足りないと
憎きあのメッセージが出るわけです
じゃあどうすればいいのか?
物理メモリまで買えばいいのか?
そこで題名に戻るわけです。
「メモリ16G/VRAM4Gの糞環境でもStableDiffusionができる」
メモリは16G必要です。
それ以下の人は無理です。増やしてください。
16G以下でできないのか?作者は試してませんので正確にはわかりませんが、
ただ言えるのは
物理メモリ16Gだと
・webブラウザはもちろんすべて止める
・立ちあがってる主要なソフトはすべて止める
・バックグラウンドで動いてる不要なソフトもすべて止める
をして物理メモリを極限まで開けて
初めて起動できます。
16G以下でできるとは到底思えません。
そんなことしたら、他のソフト何も起動できないじゃないか!!!!
このPCをStableDiffusion専用にしろっていうのか!!!!
ごもっともです
ただご安心ください。
StableDiffusionが
そんな無茶な物理メモリを使用するのは起動時だけです。
一回起動したら、そんな無茶なメモリ使用はしません
※でも高いです
いくらか空きができるので
いくらかのソフトは起動できます
そこは各人によると思いますが、
作者は
StableDiffusion起動時はいくらかの制約を受けました
例:StableDiffusion起動中にできなくなった事
・FireFOXとGoogleChromeは同時起動できない
・Apexは当然無理
・DMMGameもむり
・Steamでモンハンも無理
⇒StableDiffusionをいったん切ればOK、
ただし再度StableDiffusion起動時は上記の通りすべてのソフトを落とす
なので結論
StableDiffusionを動かすのに
本当に最低限の環境は
「メモリ16G/VRAM4Gの糞環境」
と言うことができます。
起動時だけは物理メモリを極限まで解放しないといけないということです。
起動時にあのエラーが出るということは
物理メモリの解放が足らないということです。
解放しても解放してもあのエラーが出るということは
物理メモリが根本的に足らないということです。
とはいえ、
まだまだ、最低限の糞環境だと受ける制約があります
起動がゴールではありません
絵を描こうとしてもまだまだエラーは出ます
受ける制約や解決策などを記事にしていこうかと思います
でもこの記事を読めてる人は、他の記事も読めてると思うので
画を見てみてください。
初めて20日でここまでできるようになります。
StableDiffusion
苦労していれても損はないと思います。