pytorch 命令行稳定扩散耗尽GPU内存,但GUI版本没有

vnjpjtjt  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(208)

我安装了图形用户界面版本的Stable Diffusion here。有了它,我可以使用GeForce RTX 3070 GPU和8 GB内存制作512 × 512像素的图像:

但是,当我尝试使用命令行界面执行同样的操作时,内存不足:
输入:
>> C:\SD\stable-diffusion-main>python scripts/txt2img.py --prompt "a close-up portrait of a cat by pablo picasso, vivid, abstract art, colorful, vibrant" --plms --n_iter 3 --n_samples 1 --H 512 --W 512
错误:
RuntimeError: CUDA out of memory. Tried to allocate 1024.00 MiB (GPU 0; 8.00 GiB total capacity; 6.13 GiB already allocated; 0 bytes free; 6.73 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
如果我把图像的大小缩小到256 X 256,它会给出一个结果,但显然质量要低得多。
因此,我的问题的第一部分是,当我的卡上有8 GiB时,为什么我在6.13 GiB时会耗尽内存,第二部分是,GUI在允许512 x 512输出方面有什么不同?是否有一个设置可以更改以减少GPU上的负载?
非常感谢Alex

x8diyxa7

x8diyxa71#

这可能不是唯一的答案,但我使用优化版本here解决了这个问题。如果您已经安装了标准版本,只需将“OptimizedSD”文件夹复制到现有文件夹中,然后运行优化的txt 2 img脚本,而不是原来的脚本:
>> python optimizedSD/optimized_txt2img.py --prompt "a close-up portrait of a cat by pablo picasso, vivid, abstract art, colorful, vibrant" --H 512 --W 512 --seed 27 --n_iter 2 --n_samples 10 --ddim_steps 50
它在我的电脑上相当慢,但产生512 X 512图像!
谢谢你,亚历克斯

k5ifujac

k5ifujac2#

我得到同样的问题使用CPU,进程似乎只是被杀死时,它消耗了太多的内存,所以它可能会或可能不会的工人数量所提到的@inkblot,但它似乎不仅仅是一个GPU或cuda的问题。
对我来说,当我尝试@AlexS提到的optimisedSD脚本时,它也会被杀死。
因此,我猜这两个脚本可能不会保护过高的内存消耗(机器的总内存不足),只是假设它有足够的,因为大多数新的机器使用CUDA的GPU将。
我的用例是,我希望它执行完成,即使它需要更长的时间在我的CPU上,因为我的机器不能使用CUDA。所以它的可能性,进程内存使用量应该上限,并可能需要更节省地处理CPU。

相关问题