Stable Diffusion本身是一个模型,对于大多数想试试的人来说,使用这个web ui版本最合适
在github的Stable Diffusion相关应用中,目前为止是星星最多的
建议先看完再动手,虽然不难但是有门槛(主要要解决网络问题)
2023.6.21更新 1.32版本,重新按照

github页面:Stable Diffusion web UI

一、可能的误区

1.误区1:必须用linux或者windows
mac os也可以,但是同样在于其它的坑多,不建议在mac os上使用,当然我也没试过。
2.误区2:必须用N卡
N卡坑少,出问题容易找到答案,并不是只能N卡。A卡,甚至cpu也可以,不过可能使用难度较大。
Nvidia显卡(Cuda)或AMD显卡(ROCm)
3.误区3:必须用conda
用conda的原因在于很多开发者通常需要多个python环境,个人部署直接装在系统就行
4.误区4:必须用git
可以直接把文件下载下来解压就行,git拉取项目的本质也是下载文件啊

二、安装所需

为了坑最少,建议按照我的方法来:

(一)操作系统+cpu架构

ubuntu2204+x86_64

(一)显卡

gtx10系以上,建议rtx之后的显卡,4G以上现存,建议8g以上

(二)软件

具体操作看下一节

1.conda环境安装

无需提前安装python环境

2.下载脚本文件

可以不用git,我下面写了

3.安装cuda及显卡驱动

二、具体安装方法-conda集成环境(ubuntu2204+N卡)

如果使用cpu来做处理,可以不用装cuda,就是速度慢

1.安装anaconda和cuda

anaconda使用最新版的就行
cuda的版本可以使用11.8,如果用下面的教程,注意cuda版本,使用自己需要的

参考:cuda安装
参考:anaconda安装

2.使用conda安装环境(非必须)

官方指定3.10.6版本python(名字是sdwu)

conda create -n sdwu python=3.10.6

激活环境

conda activate sdwu 

3.安装git或直接把东西下载下来

实际上git也是把文件下载下来,如果不习惯,直接下载文件也行,不用装git(我这里下载下来了)
进入目录

cd /usr/local

或用git拉取(git通常已经安装,如果没有则apt-get install git)

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

附:直接下载方法,在项目目录把zip下载下来,解压即可,和git效果一样。或者在发行版里下载上传,内容是一样的。

4.使用脚本

可以打开看看,就是各种依赖的安装,如果卡住了可以看下一步的操作

cd /usr/local/stable-diffusion-webui
python launch.py

5.如果出现卡住下载不了的问题(主要是依赖)

源下载过慢,可以切换pip源或者从单个下载,然后继续运行上面的脚本

Installing gfpgan卡住

pip install basicsr -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install gfpgan -i https://pypi.tuna.tsinghua.edu.cn/simple

到目前为止,上面的操作在国内网络下即可。
实在没有耐心一点点去解决无法直连下载的各种问题了。
这里后面还有几个插件,都是常用的,如果不是网络受限,安装是很容易的,如果实在无法解决网络问题,可以找别人下载好的复制过来重建环境即可

6.启动后

注意,如果linux设置了代理,是会报错的
提示:To create a public link, set share=True in launch().

此时只能本地访问,web访问127.0.0.1:7860端口

7.非本地访问

1.3脚本之后作者重新配置了文件地址,现在位置变了

vi 

编辑launch.py,找到如下

commandline_args = os.environ.get('COMMANDLINE_ARGS', "")

并修改为

commandline_args = os.environ.get('COMMANDLINE_ARGS', "--listen")

上面的操作只能本地访问,如果想在互联网上用,做个反向代理吧。
可以使用frp将端口映射到局域网,或者nginx转发,只要程序认为是localhost请求的就行。
frp顺带可以内网穿透了,可以参考我的这篇frp用法,将7860端口内网穿透即可。
nginx等其它的操作方法我就不写了。
这个环境可以保存下来了,用conda导出环境,然后迁移到别的设备。

8.一键启动bash脚本

创建目录

mkdir /etc/sh && vi /etc/sh/sdwu.sh

内容如下

#!/bin/bashsource ~/anaconda3/etc/profile.d/conda.shconda activate sdwupython/usr/local/stable-diffusion-webui/launch.py

保存退出后,使用下面的即可一键启动

chmod +777 /etc/sh/sdwu.sh
/etc/sh/sdwu.sh

有了sh脚本,可以后台运行

nohup /etc/sh/sdwu.sh &>/dev/null &

9.systemctl 管理(参考)

vi /usr/lib/systemd/system/sdwu.service

内容如下:

[Unit]Description=sdwuAfter=network.target[Service]Type=simpleUser = rootGroup = rootKillMode=control-groupExecStart=/bin/bash /etc/sh/sdwu.sh startPrivateTmp=true[Install]WantedBy=multi-user.target

启动并开机启动

systemctl start sdwu && systemctl enable sdwu

三、优化

1.新模型的导入

上面安装的只是一个模型,后面比如更新了高的版本,可以下载 .safetensors的文件,放到指定目录下即可

找到存放位置

find / -name "*.safetensors"

我的是在

/usr/local/stable-diffusion-webui/models/Stable-diffusion

可以将其它的模型导入使用,比如自己训练的

2.设置密码登录

1.3版本后改位置了,我看了源码找到了位置

vi /usr/local/stable-diffusion-webui/modules/paths_internal.py

注意:密码登录可能有bug,官方已经说明,等后面更新
如果不加限制,放到公网上的会被别人扫描和蹭着用(我就遇到过)
找到并改为(7中间一样的配置位置)
编辑launch.py,找到如下,将用户名和密码设置为自己需要的

commandline_args = os.environ.get('COMMANDLINE_ARGS', "--listen --gradio-auth 用户名:密码")

配置完成后,再次登录就要输入密码了

3.安装xformers

默认是不安装xformers的,如果安装了,可以优化gpu显存使用

torch: 2.0.1+cu118 适配 0.0.20版本的xformers,脚本写的是0.0.17不要装那个版本,会造成其它的问题

pip install xformers==0.0.20

在启动脚本添加,1.3版本后改了位置,从源码找到应该修改这个文件

vi /usr/local/stable-diffusion-webui/modules/paths_internal.py
commandline_args = os.environ.get('COMMANDLINE_ARGS', "--listen --xformers")

4.汉化

github项目链接

github项目链接2

四、常见错误

1.Try adding –no-half-vae commandline argument to fix this

vi /usr/local/stable-diffusion-webui/modules/paths_internal.py

在下面的”–listen –xformers”后面添加–no-half-vae

commandline_args = os.environ.get('COMMANDLINE_ARGS', "--listen --xformers")