Stable Diffusionでは、自分の思うがままに呪文(プロンプト)を入力し、AI画像を作ることができます。
しかし、正常に動作させるには高性能なグラフィックボードを搭載したパソコンが要求され、グラフィックボードの性能が悪いと、メモリ不足が発生してしまいます。
今回の記事では、そんなメモリ不足がStable Diffusion使用時に発生した際の対処法や対策についてご紹介していきます。
メモリ不足が発生するとどんなエラーが起きる?
Stable Diffusionでは、メモリ不足が発生すると画像の生成がストップされ、正常に画像を生成することができなくなってしまいます。
具体的には、下記のエラーが発生し、画像の生成がストップされてしまいます。
「RuntimeError: CUDA out of memory」
ここでいう「メモリ」とはVRAMのことで、VRAMの容量が4GB以下の低スペックなパソコンだと、メモリ不足が発生しやすいです。
Stable Diffusionのメモリ不足の対策
Stable Diffusionでのメモリ不足は、画像のサイズが大きすぎることなどが原因となって発生する場合も多いため、画像の解像度を下げるなどの処理を行うと問題が解決される場合もあります。
しかし、大きいサイズの画像であっても、綺麗に画像を生成したい場合もあると思います。
その場合は、解像度を下げる方法では問題の根本的な解決ができません。
そこで以下では、メモリ不足を防ぐための具体的な方法を解説していきます。
また、メモリ不足を解決するためのテキストは、Stable Diffusionの起動バッチファイルである『webui-user.bat』に書き込んでいきましょう。
対策①:GPUのメモリを再利用する
メモリ不足を防ぐための対策には、まず、GPUのメモリを再利用するという方法があります。
この方法は、GPUのメモリの利用率が60パーセントを超えたときに有用です。
GPUのメモリのブロックを再利用するための下記のテキストを入力することで、メモリ不足を防ぐことができます。
set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.6
対策②:「–medvram」「-lowvram」を利用する
また、「–medvram」や「-loevram」を利用することで、VRAMの負担を軽減し、メモリ不足を防ぐこともできます。
しかし、この方法では、VRAMの負担を軽くさせる分、画像の生成速度が遅くなってしまうというデメリットもあります。
特に、「-lowvram」は、公式サイトでも明記されているほど、画像生成速度が遅いので注意が必要です。
AUTOMATIC1111公式サイト
「–medvram」や「-lowvram」を用いる場合には、「set COMMANDLINE_ARGS=」の続きに、下記のテキストを入力してください。
--medvram
-lowvram
対策③:GPUのメモリの断片化を防止する
そして、メモリ不足の3つ目の対策方法として、GPUのメモリの断片化を防ぐという方法があります。
こちらの方法では、自分で設定した画像サイズよりも大きくなってしまう断片化を防ぐことで、メモリ不足を防ぎます。
下記テキストを入力することで設定が可能です。
max_split_size_mb:128
対策④:「-opt-sdp-attention」を利用する
メモリ不足発生への対策方法の4つ目は、「-opt-sdp-attention」を利用するという方法です。
こちらは、「対策⑤:「–xformers」を利用する」が使えない環境において利用するメモリ不足対策です。
「set COMMANDLINE_ARGS=」の続きに下記のテキストを入力することで設定が可能です。
-opt-sdp-attention
ただし、「–xformers」を利用する場合、「-opt-sdp-attention」と「–xformers」の併用はできないので、その点については注意が必要です。
対策⑤:「–xformers」を利用する
「xformersライブラリ」を使用することで、メモリの消費量を大幅に削減できます。
また、画像を生成する際のスピードについても大幅に向上します。
ただし、「–xformers」は「Nvidia GPU」のみでしか使用することができません。
AUTOMATIC1111公式サイト
また、前述のとおり、「-opt-sdp-attention」との併用は不可です。
「–xformers」を設定するには、「set COMMANDLINE_ARGS=」の続きに下記のテキストを入力してください。
--xformers
※「xformers」についてさらに詳しく知りたい方は、以下の記事を参考にしてください。
対策⑥:その他のアプリケーションを閉じる
また、メモリ不足発生への対策方法として、その他のアプリケーションを閉じるという方法も有効です。
Stable Diffusionを利用している間、他のアプリケーションを開いたままにしている場合は、それらのアプリケーションを一度閉じてみてください。
そうすることでメモリ不足の発生を防ぐことができる場合があります。
とてもシンプルかつ原始的な方法ではありますが、使っているものをStable Diffusionだけに絞ることで、メモリへの負担を減らすことができます。
対策⑦:Stable Diffusionの設定は、「webui-user.bat」に書く
Stable Diffuisonでのメモリ不足対策を行う場合、「対策⑥:その他のアプリケーションを閉じる」以外の方法では、テキストの入力が必要となります。
各テキストは、Stable Diffusionの起動バッチファイルである「webui-user.bat」というファイルに書き込んでください。
「Google Colab」でStable Diffusionoを利用している場合、「webui-user.bat」の開き方は以下となります。
- 「Google Drive」から「マイドライブ」を開く
- 「sd」をダブルクリックして開く
- 「stable-diffusion-webui」をダブルクリックして開く
- 「webui-user.bat」をダブルクリックする
- 「Text Editor」か「Anyfile Notepad」で「webui-user.bat」を開く
上記の手順で進み、以下の画面が表示されれば、対策のためのテキスト入力が可能となります。
※「webui-user.bat」にテキストを入力する際は、作業前に必ずファイルのバックアップをとっておきましょう。
※「対策②:「–medvram」「-lowvram」を利用する」「対策④:「-opt-sdp-attention」を利用する」、「対策⑤:「–xformers」を利用する」では「set COMMANDLINE_ARGS=」の続きに各テキストを入力してください
※「対策①:GPUのメモリを再利用する」、「対策③:GPUのメモリの断片化を防止する」で用いるテキストはファイルの冒頭部分にテキストを入力してください。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい
対策してもエラーが起きる場合
以上で解説した対策方法を用いてもメモリ不足が発生してしまう場合は、VRAMの容量が大きく、高速なグラフィックボードの導入を検討する必要があります。
Stable Diffusion 1.5のバージョンの場合、一応、4GBのグラフィックボードでも動作するとされています。
しかし、実情としては、4GBのグラフィックボードだと1枚の画像を生成するだけでもかなりの時間がかかってしまいます。
そのため、8GBや12GBのグラフィックボードを導入した方が、メモリ不足の発生を予防することもできることに加え、スムーズに画像生成ができるので、ストレスなくStable Diffusionを利用することができます。
大容量のVRAMのグラフィックボードの例としては、「GeForce RTX 3060」などが挙げられます。
こちらのグラフィックボードは12GBの容量を搭載しているため、メモリ不足の発生をかなり予防することができると考えられます。
※Stable Diffusionを利用する場合に、必要なスペックやおすすめPCについては以下の記事を参考にしてください。
まとめ
いかがでしたでしょうか?
今回はStable Diffusionでメモリ不足が発生した際の対策や対処方法についてご紹介してきました。
今回のポイントをまとめると、以下のようになります。
- メモリ不足が発生すると画像の生成がストップされてしまう
- メモリ不足への対策方法は、「GPUのメモリを再利用する」、「「–medvram」「-lowvram」を利用する」、「GPUのメモリの断片化を防止する」、「-opt-sdp-attention」を利用する」、「「–xformers」を利用する」、「その他のアプリケーションを閉じる」の6つ
- メモリ不足の対策に必要なテキストは、「webui-user.bat」に入力する
- メモリ不足の対策を行ってもエラーが起きる場合は、より大容量で高速なVRAMのグラフィックボードを導入する必要がある
お使いのパソコンによっては頻繁にメモリ不足が発生してしまう場合もあると思います。
そんなときはぜひ、今回の記事でご紹介した対策方法を試してみてください!
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい