Stable Diffusion 在 Windows 下的容器方案
李二花 / 2023-02-26
Stable Diffusion 在 Windows 上安装依赖会很不好处理,因此我们使用容器方案。
Docker 环境配置
本方案基于 Docker 配置,而 Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,它必须部署在 Linux 内核的系统上。因此,Windows 系统想部署 Docker 就必须需要安装一个虚拟 Linux 环境,配置 WSL。
安装 WSL
在管理员 PowerShell 输入命令 wsl --install
,之后终端会默认安装 Ubuntu。系统下载时间较长,注意别关机。安装 Ubuntu 完成后,按提示设置 Ubuntu 账户和密码。
如果你本来就安装了 WSL 但是是版本 1,就需要提升版本信息,请参考如下的信息
安装 docker 容器
去 docker 官网,根据系统(Windows)下载不同的分发版本,然后跟其他的 Windows 软件一样安装即可。
记得安装完后,在 setting 里面修改下镜像的源,这样能够提高镜像的下载速度。
Stable Duffusion 处理
下载源文件
去这里下载到容器的 docker compose 文件。
安装
根据 Readme 里的 Setup & Usage 文件,我们要执行两步,一步是下载需要的 model 文件,而是运行对应的 stable diffusion webui
docker compose --profile download up --build
# wait until its done, then:
docker compose --profile [ui] up --build
需要注意的是,在运行 download 命令时,如果执行到某一步骤特别慢,一般都是运营商网络的问题,建议直接打开手机的热点,电脑连接到热点,把这部分下载慢的地方(一般这种情况不是 VPN 的问题,因为在本机直接 wget 也十分的慢,就是网络运营商的问题)通过热点的方式下载,然后再切换成无线网络下载。
需要的 model 等大的文件下载完毕后,我们开始执行第二部,也就是 docker compose --profile auto up --build
一般我们选择 auto 的方式执行即可,这个时候,可能遇到的问题会有很多。
建议先看下对应的 issue,里面有很多的解决方案,我罗列几个
docker compose 的文件,在 auto 那里记得加一个
network: host
不然容易出现没法连接 github 的问题auto: &automatic <<: *base_service profiles: ["auto"] build: context: ./services/AUTOMATIC1111 network: host image: sd-auto:47 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api
在执行 AUTOMATIC1111 安装的时候,注意
dockerfile
文件,一个是容易出现 download 时一样的问题,就是无法连接 github 的问题,再一个是pip install git+https://github.com/xxx/xxx@123456
这种情况,十分棘手,因为直接 git clone 对应的仓库是没有问题的,但是 pip install 这么写就是经常 SSL error,这种情况,推荐直接下载下来,然后安装,也就是需要自己修改下 dockerfile 的文件,或者去 gitee 找到镜像版本,改成镜像的地址,如果一直用git+https://github.com/xxxx
这种形式的话,会一直报错导致无法下载在最后如果全部下载完毕后,执行 entrypoint 时,如果报错,一般是 fastapi 的问题,推荐
RUN pip install --upgrade fastapi==0.90.0
来解决这个问题
model && Lora
因为目前容器里默认的 model 只有两个,如果我们想使用更多的 model 的话,推荐去这里下载对应的 model,然后放到对应的文件夹里,具体的文件夹剪下图,如果是 Lora ,可以去这里下载 因为 docker compose 里应写了 volumes 的对应关系,所以我们在本地的 data 文件夹里放入对应的文件,docker 容器里的也是会生效的。
volumes:
- &v1 ./data:/data
- &v2 ./output:/output
使用
要使用新的 model 和新的 Lora 的方式如下
一些参考