让AI更听话:stable-diffusion出错图或报错的解决方案
stable-diffusion这款AI画图软件可以生成非常非常接近照片,甚至让你分不清到底是照片还是真人的图像,例如下图:
但是Stable-diffusion这款AI作图软件不是万能的,如果画出下面这样的错误的人物肖像图,怎么解决呢?请看下文的解决方案。
报错1:
Could not load library libcudnn_cnn_infer.so.8. Error: libnvrtc.so: cannot open shared object file: No such file or directory
网上已经有解决方案了(看下图):
这位叫做mjj的网友是建议用下面的两条命令来解决:
cd yourenv/lib/python3.10/site-packages/torch/lib
ln -s libnvrtc-672ee683.so.11.2 libnvrtc.so
也就是先是cd到yourenv/lib/python3.10/site-packages/torch/lib目录下,然后运行下面的那条命令。
关键是,
yourenv/lib/python3.10/site-packages/torch/lib这个目录怎么找到?
这要考验我们的linux功力了,我依稀记得使用find这个命令来找(所以平时多读点书,要使用的时候,会用得上的
)。
我忘记find这个命令怎么用了,于是搜索引擎查找find的用法,我用sudo find -name torch这条命令来查找名字为torch的文件夹:
竟然找到了三个带有torch名字的文件夹:
./home/yasden/anaconda3/lib/python3.8/site-packages/torch
./home/yasden/anaconda3/lib/python3.8/site-packages/torch/include/torch
./home/yasden/anaconda3/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch
只能一个个来试了,首先试验第一个文件夹,也就是:
./home/yasden/anaconda3/lib/python3.8/site-packages/torch
cd到/home/yasden/anaconda3/lib/python3.8/site-packages/torch文件夹下面:
一开始我还是用ls -a来查看,看看torch文件夹下面有没有lib这个目录,后来发现真麻烦,我直接继续cd lib就行了,如果下面有lib,就cd进去了,如果没有,就会报错的。
结果发现,torch下面真的有lib这个目录,之后就是用下面的命令回车:
ln -s libnvrtc-672ee683.so.11.2 libnvrtc.so
然后cd到stable-diffusion的目录下,用下面的命令来开启stable-diffusion软件:
python3 launch.py --xformers
我的神舟旧笔记本,cpu是i5-9400,64GB内存,英伟达1650-4G显存的显卡,ubuntu这个linux系统下画一幅白色小狗的AI图:
在Could not load library libcudnn_cnn_infer.so.8. Error: libnvrtc.so: cannot open shared object file: No such file or directory这个报错修复之前,是无法AI画图的。
报错2:
TypeError: 'NoneType' object is not subscriptable
这个报错一般是在stable-diffusion软件成功安装并运行后,出现的。出现TypeError: 'NoneType' object is not subscriptable的原因,一般是你的显卡的显存太小导致的,如果你的GPU显存比较小,建议不要画太大的图片,如果你只有4GB的显存,又要画2000*3000的图片,肯定会报错的。将画面调小一点,例如调成512*512或者512*768对于4GB显存来说一般都没问题。
解决方法:如果你调低了分辨率,发现还是报这个错,首先Ctrl+C将“终端”终止,
然后cd到stable-diffusion的目录下,用下面的命令来重新开启stable-diffusion软件:
python3 launch.py --xformers
这时候应该就不会报错了。
另外,如果你勾选了Restore faces(见上图),也很有可能由于显存不足而报TypeError: 'NoneType' object is not subscriptable的错误。不要勾选Restore faces就一般不会报错了。
显存小,限制了stable-diffusion的发挥,如果你要买显卡,至少买12GB显存以上的英伟达显卡,这样才能愉快的使用stable-diffusion。
报错3:
stable diffusion经常画出错误的人物图,或者人物图像扭曲,或者画出不正常的图像。
画出上图这样的图像,一般来说,就是你的Lora小模型和大模型之间不匹配造成的,你可以将Lora去掉,如果Lora去掉之后,画出来的图片是正常的,代表你的Lora小模型,和大模型不匹配。换个大模型,或者换个Lora试试看吧,一般都能解决问题。
报错4:
torch.cuda.OutOfMemoryError: CUDA out of memory.
这个报错是典型的显存不足,例如我的4GB显存的显卡,画968*968分辨率图像是正常的,画968*1152的分辨率图像也是正常的,画968*1264图像就报上面的错误了。
报错5:
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument index in method wrapper_CUDA__index_select)
Time taken:0.02s
Torch active/reserved: 17/54 MiB,Sys VRAM: 179/3904 MiB (4.59%)
这个报错原因是软件分不清用cpu还是用GPU来画图,一般来说,Ctrl+C将“终端”终止,然后cd到stable-diffusion的目录下,用python3 launch.py --xformers来重启软件,都能解决这个问题。
总结
1、如果你要买显卡,建议至少买12GB显存以上的英伟达显卡,这样才能愉快的使用stable-diffusion。请记住AI画图,显存越大越好。
2、不建议购买A卡或者Intel的显卡来使用stable-diffusion,除非你有比专业程序员更强的解决问题的能力。
3、苹果的M1芯片支持stable-diffusion软件画图,我的M1芯片的macbook只有16GB内存(苹果这款笔记本的显存是和内存共享的),悄悄告诉你:16GB内存的M1芯片Macbook Pro笔记本比4GB显存的英伟达显卡笔记本更好用,因为4GB显存的英伟达显卡画968*1264图像就报错误了(爆显存),但是16GB内存的M1芯片Macbook Pro我试过画更高分辨率的图都不会爆显存(甚至勾选脸部修复Restore faces都能顺利运行,但是4GB显存的英伟达是无法勾选Restore faces的)。如果你打算买M1芯片Macbook Pro,我建议买64GB或更大内存的,AI画图会更爽。
4、显存太小,AI生成的图片512*512分辨率太低怎么办?stable-diffusion有的是将512*512图片变成5120*5120的方法,下回在说,敬请关注。
全文完,谢谢观看。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~












留风流
校验提示文案
弗老大
校验提示文案
潮玩情报官
校验提示文案
巴伐利亚南大王
校验提示文案
超白金光环
校验提示文案
超白金光环
校验提示文案
巴伐利亚南大王
校验提示文案
潮玩情报官
校验提示文案
弗老大
校验提示文案
留风流
校验提示文案