Stable Diffusionで画像生成していて、メモリーが足りないとき発生するのがGPUメモリ不足(RuntimeError: CUDA out of memory)です。
知人の少し古いWindowsマシンで大きめな画像生成にチャレンジ中に発生しました。
エンジニアさんのマターなので正直対策はプロにまかせるのが正解ですが、解決した際のメモを残します。
メモリ不足が発生する原因とは
GPUメモリ不足(RuntimeError: CUDA out of memory)とはこのようなエラーです。
RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 4.00 GiB total capacity; 3.42 GiB already allocated; 0 bytes free; 3.48 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
画像生成AIStable Diffusionを使いこなす時必要なのが、高速なグラフィックボードと大容量のVRAMです。
メモリーはあればあるだけよく、実用的に動かすためには8GBは最低必要なので注意しましょう。
生成する画像サイズが大きすぎたり、プロンプトが長すぎたり、搭載しているGPUが非力すぎたりすると発生しやすくなります。
解決策
解決策のヒントは次の通り
- システムを再起動する
- 軽量版のbasujindal/stable-diffusionを使う
- Nvidia CUDA Toolkit と一緒に Anaconda をインストールする
- Stable Diffusion の最適化されたバージョンを使用する
- 解像度を下げて画像を生成する(512 x 512 または 256 x 256 を使用してみる)
- Stable Diffusion フォルダー内の webui.bat ファイルをテキストで開き、冒頭に以下を追記した上でアプリをコマンドで立ち上げ直す
set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.6, max_split_size_mb:128
※webui-user.batと混同しないように注意。
Optimizations · AUTOMATIC1111/stable-diffusion-webui Wiki · GitHub
そのほかの対処法
Stable Diffusion runtime error – how to fix CUDA out of memory error
まとめ
初心者がStable Diffusionを使っていて CUDA out of memoryの発生を予防するには
- なるべく最新のPCを使う
- Stable Diffusionも最新のものを使う
- グラボのメモリーは最低8GBは用意する
などの対策を取りましょう。
こんにちは、フルタニです。放送局で番組作りをしてました。CUDA out of memory を書きます。