[StableDiffusion.cpp]メモリ不足エラーの解消

この記事は約2分で読めます。

やりたいこと

StableDiffusion.cppを実行した際に以下のエラーが表示されて失敗しました。

ggml_vulkan: Device memory allocation of size 956379392 failed.
ggml_vulkan: vk::Device::allocateMemory: ErrorOutOfDeviceMemory
[ERROR] ggml_extend.hpp:70 - alloc_tensor_range: failed to allocate Vulkan0 buffer of size 956379392
[ERROR] model_manager.cpp:291 - model manager alloc compute params backend buffer failed, num_tensors = 430
[ERROR] ggml_extend.hpp:1897 - krea2 prepare graph weights failed
[ERROR] stable-diffusion.cpp:2169 - diffusion model compute failed
[ERROR] stable-diffusion.cpp:2277 - Diffusion model sampling failed
[ERROR] stable-diffusion.cpp:4601 - sampling for image 1/1 failed after 35.92s
[ERROR] main.cpp:781 - generate failed

VRAMが足りないのかと思ってあきらめていたのですが解決できたので紹介します。

この記事の方法で必ず動作するわけではありません。

同じバージョンのStableDiffusionを使用して問題が解決するモデル、解決しないモデル両方がありました。

解決策

引数に以下のオプションを追加します。

--max-vram 4

4は使用するVRAMのサイズ(Gbyte)です。

環境によって値を調整してください。

私の環境では上記の対策で実行することができました。

余談

私の環境は専用GPUメモリが4Gbyte、共有メモリが13.9Gbyteです。

–max-vramを16にしてもよさそうですが、16でも8でも動作しませんでした。

専用GPUメモリのサイズを設定するのがよさそうです。

コメント

タイトルとURLをコピーしました