"RuntimeError: Not enough memory" "OutOfMemoryError: CUDA out of memory." が発生し処理が途中で止まる - Stable Diffusion

Stable Diffusionで"RuntimeError: Not enough memory" "OutOfMemoryError: CUDA out of memory." が発生し処理が途中で止まる現象と対処法を紹介します。

現象

画像の生成処理中に以下のエラーが発生し処理が中止されます。
エラーメッセージ
RuntimeError: Not enough memory, use lower resolution (max approx. 896x896). Need: 0.8GB free, Have:0.5GB free Time taken: 54.68sTorch active/reserved: 3274/3614 MiB, Sys VRAM: 5120/5120 MiB (100.0%)
エラーメッセージ
OutOfMemoryError: CUDA out of memory. Tried to allocate 768.00 MiB (GPU 0; 5.00 GiB total capacity; 3.69 GiB already allocated; 0 bytes free; 4.22 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

原因

GPU(ビデオカード)のメモリ不足です。

対処法1: ハードウェア交換

上記のエラーメッセージは5GBのビデオカードで発生しています。Stable Diffusionである程度の処理を実行する場合、 VRAM 5GBでは厳しいです。画像生成速度の高速化も考慮すると、最新の12GB以上のビデオカードに交換することも検討したほうが良さそうです。

対処法2: Xformersを有効にする

Xformersを有効にするとVRAMの消費量を抑えられます。 ただし、NVIDIAのGPUの場合はPascal以降のGPUである必要があります。 Xformersを有効にする手順はこちらの記事を参照してください。

対処法3: Stable Diffusion Web UI の --medvram オプションを追加

Stable Diffusion Web UI を利用している場合、--medvram オプションを追加すると改善される場合があります。
webui-user.bat (変更前)
@echo off

set GIT_PYTHON_REFRESH=quiet

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=

call webui.bat
webui-user.bat (変更後)
@echo off

set GIT_PYTHON_REFRESH=quiet

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--medvram

call webui.bat
webui-user.bat (変更後 Xformers と併用)
@echo off

set GIT_PYTHON_REFRESH=quiet

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--xformers --medvram

call webui.bat

対処法4: 他のアプリケーションが起動している場合は終了する

他のアプリケーションが起動している場合は終了します。特にVRAMを使用するPhotoshopやIllustrator,After Effectsなどのアプリケーションが起動している場合は、 アプリケーションを終了するとVRAMが解放され、エラーが解消される場合があります。

著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2023-05-21
iPentec all rights reserverd.