Stable Diffusion: CUDA out of memory
Jan. 6th, 2024 01:05 amРешил установить нейросеть Stable Diffusion у себя на компьютере. Хотелось пользоваться ей и без доступа в Интернет. Плюс немного вникнуть поглубже. В том числе очень заманчивым показался редактор изображений Krita, в котором пользоваться всеми прелестями Stable Diffusion, включая расширение картинки, генерацию объектов и исправление ошибок (в частности, с пальцами). Конечно же огромный плюс - это большая гибкость, а также абсолютная бесплатность решения (в отличии от того же Photoshop).
К счастью, появился лёгкий способ установки и запуска Stable Diffusion и других нейросетей - Pinokio.Computer. Попробовал установить Stable Diffusion web UI (AUTOMATIC1111/stable-diffusion-webui). Всё прошло очень гладко. Но при запуске появилась ошибка:
Неоднократно встречал, что для генерации картинок лучше использовать видеокарту NVidia с объёмом видеопамяти 12ГБ. Хотя и на таких карточках возникает ошибка с нехваткой памяти. В сети полно различных советов, которые могут и не помочь. В том числе, рекомендовалось уменьшить размер картинки с 512x512 до 256x256, уменьшить n_samples до единицы. В моём случае, ошибка с нехваткой памяти возникала даже при генерации картинки 64х64.
А на странице Troubleshooting для AUTOMATIC1111 решения уже давно перечислены:
Флаг --xformers у меня уже использовался. Добавил ещё --medvram в COMMANDLINE_ARGS=, и всё заработало.
Правда, генерация картинки на NVidia Quadro m2200 (на ноутбуке Dell Precision 7520) занимает более 40 секунд. Но собственно можно и использовать генерацию в реальном времени SDXL Turbo.
А в идеале хочется разобраться с ComfyUI, который позволяет использовать Stable Diffusion невероятно гибко. Но пока от всяких IPAdapter, ControlNet, LORA,... голова идёт кругом. Найти бы хорошее руководство, и можно будет генерировать потрясающие картинки, используя не только текст, но и множество настроек.
К счастью, появился лёгкий способ установки и запуска Stable Diffusion и других нейросетей - Pinokio.Computer. Попробовал установить Stable Diffusion web UI (AUTOMATIC1111/stable-diffusion-webui). Всё прошло очень гладко. Но при запуске появилась ошибка:
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 3.94 GiB total capacity; 3.80 GiB already allocated; 2.25 MiB free; 3.89 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
Неоднократно встречал, что для генерации картинок лучше использовать видеокарту NVidia с объёмом видеопамяти 12ГБ. Хотя и на таких карточках возникает ошибка с нехваткой памяти. В сети полно различных советов, которые могут и не помочь. В том числе, рекомендовалось уменьшить размер картинки с 512x512 до 256x256, уменьшить n_samples до единицы. В моём случае, ошибка с нехваткой памяти возникала даже при генерации картинки 64х64.
А на странице Troubleshooting для AUTOMATIC1111 решения уже давно перечислены:
For GPU with less amounts of VRAM, you may need --medvram or --lowvram, these optimizations reduces VRAM requirements but sacrifice performance. If you do not have enough VRAM, web UI may refuse to launch or fail to generate images due to an out-of-memory error. The amount of VRAM required largely depends the desired image resolution, for more details see Troubleshooting.
the Tiled VAE extension can help to reduce the VRAM requirement. https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Troubleshooting
Low VRAM Video-cards
When running on video cards with a low amount of VRAM (<=4GB), out of memory errors may arise. Various optimizations may be enabled through command line arguments, sacrificing some/a lot of speed in favor of using less VRAM:
Use --opt-sdp-no-mem-attention OR the optional dependency --xformers to cut the gpu memory usage down by half on many cards.
If you have 4GB VRAM and want to make ~1.3x larger images, use --medvram.
If you have 4GB VRAM but you get an out of memory error with --medvram, use --lowvram --always-batch-cond-uncond instead.
If you have 4GB VRAM and want to make images larger than you can with --medvram, use --lowvram.
If you have 4GB VRAM and get an out of memory error when loading a full weight model, use --disable-model-loading-ram-optimization (added in v1.6.0)
Флаг --xformers у меня уже использовался. Добавил ещё --medvram в COMMANDLINE_ARGS=, и всё заработало.
Правда, генерация картинки на NVidia Quadro m2200 (на ноутбуке Dell Precision 7520) занимает более 40 секунд. Но собственно можно и использовать генерацию в реальном времени SDXL Turbo.
А в идеале хочется разобраться с ComfyUI, который позволяет использовать Stable Diffusion невероятно гибко. Но пока от всяких IPAdapter, ControlNet, LORA,... голова идёт кругом. Найти бы хорошее руководство, и можно будет генерировать потрясающие картинки, используя не только текст, но и множество настроек.