9_1327415_ddd7d687d30fed3.png

水中捞月

GF  2023-03-15 07:52

告别一切环境依赖问题,使用 Docker 本地无痛搭建 StableDiffusion Web UI,有手就行【N卡必须】

我没有用过大佬们的一键包,一直用的 Automatic1111 的 web-ui 项目,最近重装了系统,突然发现从头搭建 StableDiffusion 对环境要求是挺麻烦的。

一般根据经验来讲, 这种对环境有复杂依赖的应用其实应该放到一个隔离的环境之中去做。
毫无疑问,得上 Docker,恰好能用显卡的 nvidia container 也出世很久了。

所以再根据经验,这种事肯定有人比我先想到,并且还动手去做了。

于是我去 Github 搜索找到了这个项目: Stable Diffusion WebUI Docker

简单介绍一下 Docker,它是一种超轻量的虚拟容器,是一种普遍而强大的应用隔离方案。
Docker 与传统虚拟化技术相比,效率大幅提高,而资源开销却低到忽略不计,启动也是几乎是瞬时的。
Docker 可以通过预先编排好构建文件,来实现自动化在容器镜像中为你自动安装一切运行特定应用所需的环境。

所以你只需要安装 Docker,通过别人预先编写好的配置让Docker 自动下载和构建 Stable Diffusion 所需的运行环境。
构建完毕后直接启动容器就能直接开始使用了,不用再在自己的系统中为这些东西的兼容性而头疼。
你不需要去管什么 Python 版本啦,CUDA啦,torch 为啥不用 GPU 非要用 CPU 之类的问题。
Docker 已经为你做好了这一切。

所以我称之为"无痛搭建"



虽说 Docker 搭建很方便,但是还是得说一下环境的要求:

1、必须是 N 卡。

2、必须是 Windows 或者 Linux (本文不含 Linux 安装过程)  

3、Windows 10 release >= 2021H2,按 Win + R 输入 winver 查看。

4、必须开启了 WSL2 功能(即  Windows Subsystem for Linux 2)

提前说明,启用 WSL2 和安装 Docker 都很简单,不要因为陌生而感到害怕。






启用 WSL2

勾选图中第4步,然后按提示重启。




也可以参考微软官方文章或者上 B 站搜索教程

注意: 参考 B 站教程时无需去商店安装 Linux 发行版。



确保你的 WSL 可用的内存有 16 GB。

C:\User\你的用户名\.wslconfig 增加如下代码,如果没有则新建这个文件,并且在其中添加如下内容
复制代码
  1. [wsl2]
  2. memory=16GB



下载安装 Docker Desktop.

官网地址:https://docker.com



安装一定要勾选 WSL2 这个选项,只有基于 WSL2 的 Docker 才能看得到你的 GPU。



安装完 Docker 后可能也会要求你重启。重启之后就可以在开始菜单搜索到 Docker

 

启动 Docker,会在右下角托盘发现一个图标,等它动画完毕。

打开 Powershell,输入wsl -l -v,如果你的结果和我图里一样的话,最麻烦的事情已经做完了。

 

解压项目文件

还是打开你的 Powershell,然后下载项目 到任意目录并且解压出来,建议选个空闲空间大的地方,以后下载的模型动辄就接近10个G,吃空间得很。
(有 git 的同学也可以 git clone  https://github.com/AbdBarho/stable-diffusion-webui-docker

解压后大概长这样:

 

自动下载基础模型

在新打开的 Powershell 窗口里输入 docker compose --profile download up --build 启动自动构建基本镜像,并且下载基本的 SD 1.5 模型。 下载数据大概 12G 左右,所以执行多久取决于网络速度,如果遇到网络原因失败,可以反复执行,没关系的。 提前提醒:模型只用下载一次,包括后续自动构建 Web-ui 的步骤也是一样,都只需要等待第一次下载很多东西,再启动就非常的快了.



当你看到下面这样的时候,下载就算完了。



自动安装 Stable Diffusion + web UI

输入 docker compose --profile auto up --build 开始自动安装 Stable Diffusion + Automatic1111 Web UI。

你不需要去管什么 Python 版本啦,CUDA啦,torch 为啥不用 GPU 非要用 CPU 之类的问题,Docker 镜像已经编排好了一切。



容器构建完成并启动了之后:



搞定,可以运行了。


none.gif

e75c4332

B1F  2023-03-16 06:07
从来没试过,马下