前言
前两天突然想搭建一个AI作图的,但是一脸懵逼,lgithub地址,结果全英也看不懂,只知道了Stable Diffusion,这两天去了解了下,想要网页版就Stable Diffusion WebUI,在自己笔记本上尝试搭建,找了各种教程,我这小破电脑就是各种问题,给我整崩溃了,晚上下班回来不知道看的哪个教程跟着走的时候,发现最后就快要成功了,然后。。。
![](https://i-blog.csdnimg.cn/blog_migrate/33f01ef6992756c5daa68c8bb5e31f37.png)
没办法,只能gg,自己这18年买的笔记本,8g内存镶嵌的还不能加内存条,显卡也是老的,只能想办法,刚好看到阿里云有个试用,就试用了一个月这款
![](https://i-blog.csdnimg.cn/blog_migrate/ed3be0d8c75988dfb1b5ff020f9a0bc6.png)
然后我借鉴了这个教程:https://blog.csdn.net/weixin_39955411/article/details/128435879
但是中间也发现各种问题,然后自己深夜总结下。
正文
一、机器选择
我是选择的阿里云试用机器,试用的没有GPU,如果自己买的话,记得买GPU的
试用链接这里:https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=xnfx4mew,我选择的企业,也不知道为什么就通过了,这里贴个图
![](https://i-blog.csdnimg.cn/blog_migrate/ecd210feea2d1bcd45a221dc10434f0d.png)
试用成功进入实例管理
![](https://i-blog.csdnimg.cn/blog_migrate/ed3be0d8c75988dfb1b5ff020f9a0bc6.png)
等3分钟之后自己重置密码
![](https://i-blog.csdnimg.cn/blog_migrate/d11c12a4fc136ce006ee59254896a616.png)
然后自己Xshell连接就行了。
二、环境搭建
1、安装Python虚拟环境
# 安装python环境
sudo apt install wget git python3 python3-venv
这个时候我报了下面这个错误,如果报了这个错误,就更新下APT库,如果没报这个错误,可以正常执行,就跳到2
![](https://i-blog.csdnimg.cn/blog_migrate/758be275ddb64e869d14c67d5f8a4f90.png)
更新APT库
sudo apt-get update
sudo apt-get upgrade
![](https://i-blog.csdnimg.cn/blog_migrate/d773acca54e07bc7c71cfeebd3d3d8ce.png)
更新APT库的时候,Xshell页面可能会出现这种,不用管,默认的直接回车就行
![](https://i-blog.csdnimg.cn/blog_migrate/92306346ac72884c7dff2eee1c018309.png)
等最后会让你重启服务,回车之后就自动重启了下,然后再执行上面这个代码
sudo apt install wget git python3 python3-venv
此时就会成功
![](https://i-blog.csdnimg.cn/blog_migrate/6541d9f1828401f70a955162bb0e3b12.png)
2、创建非root用户
我最初没创建非root用户,直接用root用户去拉取文件并且执行,于是就有了这个错误
![](https://i-blog.csdnimg.cn/blog_migrate/13bd6716cddd41f8d25ee0a1fc1e9a78.png)
2.1错误列举
解决办法就是创建一个非root用户,然后再去执行。这里我最初采用我参考的上面那个方法创建
adduser --home /sean/sean
但是这样我发现依旧不行,执行 bash webui.sh 的时候报错
ERROR: Can’t cd to /home/sean/, aborting…
![](https://i-blog.csdnimg.cn/blog_migrate/6e52227279b9cbe6934d0448ef47c783.png)
2.2错误分析
我去看了这行代码,如果你 --home创建,他会去home目录下找你自己定义的这个用户目录,我的也就是/home/sean 目录,但是很显然没找到。
通过man useradd查看useradd命令的帮助
![](https://i-blog.csdnimg.cn/blog_migrate/e121f0206c42312cd543a7dbd8edfb47.png)
我们发现,由于 /etc/login.defs 配置文件中 CREATE_HOME 没有设置为yes,所以使用 adduser username 命令时,默认不建立home下对应目录,除非使用adduser -m username
所以我们要先去修改配置文件,然后再添加用户。
2.3错误解决
我们去 /etc 目录下找到 login.defs打开该配置文件vim /etc/login.defs,使用/CREATE_HOME搜索,无该词,使用G光标移至文档末尾,使用o换行插入,输入CREATE_HOME yes然后esc退出insert模式,:wq保存并退出文档。
(这里忘了截图了)
2.4开始创建
然后我们再创建用户,此时创建的用户自动在 /home 下
adduser sean
![](https://i-blog.csdnimg.cn/blog_migrate/35190c99bbe3fb6806f5fa4870b04ba8.png)
2.5 切换到创建的非root用户
然后我们切换用户到自己刚刚创建的
su sean
![](https://i-blog.csdnimg.cn/blog_migrate/3052b49110ef09ba68c3665c0aa3d45b.png)
3、安装webui
然后开始安装webui
# 这里运行官方的自动化安装脚本webui.sh
wget https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh
![](https://i-blog.csdnimg.cn/blog_migrate/23c4485a622120b7ad3ab617b94b13ef.png)
拉取完成,通过ll发现文件有了,然后开始执行
bash webui.sh
![](https://i-blog.csdnimg.cn/blog_migrate/b756ebaf22ffe294cf87df91ccca2bf0.png)
此时就可以顺利执行,自动下载了
![](https://i-blog.csdnimg.cn/blog_migrate/bf895ad433499e895b8b70338c2c4c5e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b2ac4308cd873022025af9fa532a8074.png)
但是我发现我的报错了,如果报这样的错
![](https://i-blog.csdnimg.cn/blog_migrate/30a049a82abf20647518797fce2582b1.png)
那么我们需要下载驱动,通过命令查看能下载那些
nvidia-smi
![](https://i-blog.csdnimg.cn/blog_migrate/82000555cc1a7b78726b09a14e58eda1.png)
然后切换到管理员进行下载
![](https://i-blog.csdnimg.cn/blog_migrate/2b44e4b89b24373f351c284e7f78b1b0.png)
下载过程中还会出现这样的画面
![](https://i-blog.csdnimg.cn/blog_migrate/41f167a08a6398104fed1221eb415521.png)
成功之后再次nvidia-smi,还是报错
![](https://i-blog.csdnimg.cn/blog_migrate/265842b465ab97fba7e0ccadaa90ce57.png)
用命令一看,没出现型号,原来我的g5没GPU,没GPU的话上面这个错误就忽略掉,那就用CPU跑吧
lspci | grep -i nvidia
![](https://i-blog.csdnimg.cn/blog_migrate/5c82c46e0df2464a1d843ac558bb6572.png)
由于我下来了驱动,但是没有GPU,这里给删除了下
sudo apt purge nvidia*
![](https://i-blog.csdnimg.cn/blog_migrate/a96208b46ecfaefcc6b819206b51295c.png)
然后再执行下 nvidia-smi,发现已经没那个错误了,驱动清除了
![](https://i-blog.csdnimg.cn/blog_migrate/5fa18442c809a38db73bf4b6dc97aab0.png)
4、下载训练模型
模型其实很多,根据自己需求下载:https://huggingface.co/stabilityai/stable-diffusion-2
我这里是之前随手下了个1.4的训练模型,就直接拿来测试用了
![](https://i-blog.csdnimg.cn/blog_migrate/ca6eee5d84485b83b8da3e3a2177e6b3.png)
我将下载好的模型改了个名字后放到了这里
/home/sean/stable-diffusion-webui/models/Stable-diffusion
根据自己的用户和拉取存放地址放进去
![](https://i-blog.csdnimg.cn/blog_migrate/2653afc7c5fd6f8a103b07ec14759771.png)
(也可以下载别的模型,如果下载的模型附带的有.yaml文件的话,连着文件一起改名字放进去,.yaml的文件命名需要和你的.ckpt前面一样)
番外、可能出现的错误
Can’t cd to /home/sean/, aborting…
ERROR: Can’t cd to /home/sean/, aborting…
这个错误再上面 创建非root用户 里已经给了解决方法。或者参考我参考的博主的方法:
手动下载链接: https://github.com/AUTOMATIC1111/stable-diffusion-webui
![](https://i-blog.csdnimg.cn/blog_migrate/fc8a5cc7ccba9d61318b24af0a4afe77.png)
Torch is not able to use GPU
Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
这个错误我在上面 安装webui 里面也给了我自己的情况解决,如果是有GPU的电脑还出现这种错误,参考我参考的博主解决方法:
GPU驱动手动查找下载链接:https://www.nvidia.com/Download/index.aspx
![](https://i-blog.csdnimg.cn/blog_migrate/eb862f30d487a18b71fa60e285ec3e7f.png)
HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443)
ReadTimeoutError: HTTPSConnectionPool(host=‘ files.pythonhosted.org’, port=443): Read timed out.
![](https://i-blog.csdnimg.cn/blog_migrate/c052a035147ee5d02babe0eb296e50fa.png)
参考那位博主的解决办法,改成清华pip源:
![](https://i-blog.csdnimg.cn/blog_migrate/adcdd10d75eab4fd5ccd2e62fde829e1.png)
但是这里你去编辑的时候,一定一定不要直接复制粘贴替换,不然就会报缩进错误或者制表符空格错误!
就是下面4和5的错误!
IndentationError: unexpected indent
IndentationError: unexpected indent
TabError: inconsistent use of tabs and spaces in indentation
TabError: inconsistent use of tabs and spaces in indentation
![](https://i-blog.csdnimg.cn/blog_migrate/2887cbc4f723a888d28fc11866d87fba.png)
4 和 5 的解决办法其实一样,用Xshell自带的XFTP,编辑launch.py文件的时候,找到要改的这两处之后,不要直接复制粘贴,只需要在参数前面加上要加的东西就行,不要换行、缩进!
-i https://pypi.tuna.tsinghua.edu.cn/simple
![](https://i-blog.csdnimg.cn/blog_migrate/0556208156fe0662c1e7e88dada80312.png)
-i https://pypi.tuna.tsinghua.edu.cn/simple
![](https://i-blog.csdnimg.cn/blog_migrate/d029f6dd2a49c5da89c8f0fb3d6f1878.png)
注意别加错!改好之后自己再按原有步骤去执行即可。贴一个我改好之后执行图,看下图里面的1,这里报了4的错误,我修改之后再次执行,不报 4错误了,看图里的 2 可以看出开始下载了,但是后面又报错了,报了6的错误。
![](https://i-blog.csdnimg.cn/blog_migrate/ec5c00cb9a0bc65751d193826066c2a4.png)
libGL.so.1: cannot open shared object file
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
![](https://i-blog.csdnimg.cn/blog_migrate/37ccad320d11fc22719dd06f77290937.png)
这个错误是无法打开共享文件,环境中缺少libGL.so.1文件,也就是缺少GL库文件,出现这种错误这样解决:(一定要进入到管理员 root 用户的根目录下)
1、更新apt-get:
apt-get update
![](https://i-blog.csdnimg.cn/blog_migrate/5149d999d6874570b026047820ba1e94.png)
安装GL库
![](https://i-blog.csdnimg.cn/blog_migrate/f297e627863037199a570cd6e36daadd.png)
中途记得 y 确认
安装过程这个样子:
![](https://i-blog.csdnimg.cn/blog_migrate/ca8df53e7d8bce03b7524f0809094a90.png)
安装完成这个页面记得回车重启服务(默认即可)
![](https://i-blog.csdnimg.cn/blog_migrate/41f167a08a6398104fed1221eb415521.png)
三、启动
1、没GPU或者显存太小,使用CPU跑图
设置下环境变量
export COMMANDLINE_ARGS=--skip-torch-cuda-test
![](https://i-blog.csdnimg.cn/blog_migrate/b2bebdf0119ff811f3c8f493baf7a8b4.png)
然后再运行,运行时禁用half
#port 后面改为自己想设置的端口
python3 launch.py --no-half --port 8528 --listen
![](https://i-blog.csdnimg.cn/blog_migrate/32684b570e53e69e6576196f5039326d.png)
这个时候我其实出现了各种错误,这些错误有的在上面 安装 webui 的时候其实也会出现,所以做了个错误合集,放在了前面,如果这一步出错的,去看看前面错误合集解决方法。
如果错误都解决了,再次执行,就会成功,图如下:
(注意,执行一定要切换到非ROOT用户下,然后进入到目录里去执行,所有错误解决完成,最终成功,图如下)
![](https://i-blog.csdnimg.cn/blog_migrate/0f89c13021914483dc4cb4aeb287056a.png)
2、有GPU显存足够,使用GPU跑图
venv/bin/python3 launch.py --port 9965 --listen --no-half
这里启动方法和上面没GPU的启动其实一样,只是命令不同,没GPU的只是把环境变量设置下即可。
注意,执行一定要切换到非ROOT用户下,然后进入到目录里去执行,所有错误解决完成,最终成功,图如下:
![](https://i-blog.csdnimg.cn/blog_migrate/0f89c13021914483dc4cb4aeb287056a.png)
3、成功后放开端口
如果顺利成功,那么就会出现下面这个
![](https://i-blog.csdnimg.cn/blog_migrate/55a489223979c7e0a9ba1f81a12e1a3d.png)
此时去你的服务器,安全组把自己设置的端口放开。
![](https://i-blog.csdnimg.cn/blog_migrate/daf57f958aea32806591f625d53f5415.png)
然后浏览器输入你的服务器ip+端口即可访问
![](https://i-blog.csdnimg.cn/blog_migrate/1fde9bc0afc7701635269fe6e9a71c73.png)
四、其它
1、模型更换
启动后可以发现,左上角有个模型可以选择,这里就是自己传入的训练模型,可以根据自己需要,去添加模型、删除模型,添加之后这里可以看到所有模型,然后自己选择去训练。
![](https://i-blog.csdnimg.cn/blog_migrate/97bd059bfc54c75f94b5dedfb22b7df2.png)