背景
为了在本地愉快流畅地体验stable diffsion,且不希望直接在windows中安装过多复杂的环境,顺便体验容器的部署和发布的便利,决定选择stable diffusion的docker版(AbdBarho版)。
网上已经有很多stable diffusion的部署文章,有很多甚至是零基础或者一键安装的,但自己尝试之后才发现还是有很多坑,真正操作起来并没有那么容易。这些坑的来源主要是两个方面:一个是网络下载问题,另一个是docker中的GPU运行问题。
写这篇文章的主要目的并非详细介绍环境构建的步骤,而是记录部署过程中踩过的坑,以及相关的解决方案。如果你已经尝试了docker版部署并遇到了问题,可以做个参考。
系统需求
网上很多教程都是在Linux上部署的,但是有一点要明确:虚拟机上的Linux是不行的。
因为如果要在虚拟机上使用GPU,就意味着GPU必须虚拟化或者透传给虚拟机使用,就像CPU和内存的虚拟化一样,但GPU并不支持虚拟化(也许有,但你总不会为了部署个软件去改bios吧),所以即使你在虚拟机中安装了GPU驱动也无法使用GPU。
其次,由于docker只能在linux上运行,就意味着你必须使用wsl,在wsl里再安装docker。
(也可以安装docker-desktop,但似乎坑比较多,不如直接在wsl中直接安装docker-ce)。
需要安装的软件
windows上
Nvidia显卡驱动
https://www.nvidia.com/en-us/geforce/drivers/
wsl2
wsl --install
Ubuntu 22.04
wsl --install -d Ubuntu-22.04
git
(地址略)
Ubuntu上
针对wsl2的cuda驱动
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local
docker
curl https://get.docker.com | sh
stable diffusion
git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git
另外,nvidia-docker和docker-compose个人理解是不用安装的。
前者是docker的一个插件,用来自动给docker run增加gpu使用的参数,而最新版的docker在yml中已经支持gpu参数了,且在实际部署的过程中并没有用到过nvidia-docker命令。而后者docker也有自带的docker compose命令,并不需要使用docker-compose命令。
下载问题的解决方案
github上官方的安装命令非常简单,两个compose命令就可以自动下载安装包生成镜像并运行:
sudo service docker start
c