鉴于大家对 stable-diffusion-webui 的学习热度不减, 更新一篇我最近的环境部署,希望能帮助到对AIGC感兴趣的同学。
其实最简单的部署方法,应该是在B站找各路大佬提供的一键整合包。本文只适用于真的对Stable Diffusion感兴趣,想了解整套部署流程的同学。
介绍必要的关键概念知识
Stable Diffusion : AIGC文生图模型,很火,后文可能简称SD。 基本原理科普可见:
【翻译】How Stable Diffusion Work - 给小白看的StableDiffusion原理介绍 Sparrowfc Sparrowfc - https://zhuanlan.zhihu.com/p/598070109
零基础读懂Stable Diffusion(III):怎么控制 - https://zhuanlan.zhihu.com/p/598070109
Stable Diffusion Webui : 大神开发的基于python gradio的网页前端,集成了很多Stable Diffusion文生图的流程工具,很火。
WSL : Windows Linux子系统, windows下的官方Linux虚拟机工具,用来在Windows系统中跑一个Ubuntu系统用于部署SD webui。
Anaconda : python环境的隔离工具, 防止不同版本python, 不同版本依赖软件包互相干扰。
介绍整套部署方案的软硬件框架
硬件: 配置一 = i5 1135G7 笔记本 + 外置显卡坞 1080ti + 16G内存 . 配置二 = 11代i7 , 1080ti, 40G内存
软件: Win11 > WSL > Ubuntu-20.04 > anaconda > pytorch - cuda > stable diffusion webui > controlnet - grounding dino
部署 wsl + gpu驱动工具, 配置anaconda环境, 安装 stable diffusion webui , 安装 sd webui内的插件 controlnet等
注释说明:
(default: XXX.XX) - 本人安装时的软件或驱动版本, 可作为默认参考
(@@在线版@@) - 考虑到国内网络环境, 大部分的能提前下载的内容我都放到网盘了。网络好的同学可以按照在线版的部分, 替换对应安装步骤。
TLDR: 后续所有代码指令在这复制一份, 方便快速ctrl+c ctrl +v
网盘地址:
链接:https://pan.baidu.com/s/1MjoX4pUghUYOR-2UNbAVMA?pwd=wtum
提取码:wtum
安装 wsl 的 Ununtu 20.04 虚拟机, 并通过Windows Terminal终端进入虚拟机
平时工作环境更习惯linux, 而且linux下各种环境比较容易配置。 非技术类的同学要有个预期, 后面可能会敲很多指令。
nvidia官网更新显卡驱动(default: 531.79)- 应该都会, 不细讲了
https://www.nvidia.cn/Download/index.aspx?lang=cn
microsoft store 下载安装 Windows Terminal - 后续的指令大多通过这个软件输入
打开 Windows Terminal (可能名字叫 终端,自己试一下), 输入
wsl --update 更新 wsl
wsl -v 查看wsl版本 (default: 1.2.5.0)
microsoft store 下载 Ubuntu 20.04 - 用20.04版本而不用22.04的原因,是22版本大显存下可能存在兼容问题, 我不确定, 可以自行尝试 (default: 20.04.6 LTS)
500多mb要下载, 微软服务器可能抽风, 这里可能比较慢.
下载完成后点击打开
此时弹出窗口, 会开始wsl虚拟机安装流程
输入登陆账号用户名(username)
输入账户的密码, 两遍
完成后虚拟机应该就成功安装了
关闭所有终端窗口, 确保所有窗口已关闭
重新打开 Windows Terminal 终端, 此时上方的小三角可以选择新安装的 Ubuntu 20.04 了
点击即可进入ubuntu系统, 注意此时有两个标签页, 左边 Windows PowerShell 是最初打开的windows系统终端, 右边的tiger@XXXX 是Ubuntu虚拟机内的终端了. 后续执行命令时要分清在哪个终端输入.
可选操作: 如果你的C盘资源比较吃紧, 可以安装后将Ubuntu迁移到别的盘
安装虚拟机内的CUDA工具包 ,CUDA是NVIDIA提供的GPU调用工具包 ,用来给显卡分配工作任务
大部分的AI项目都需要调用CUDA工具包进行模型的推理,训练等任务。 这里使用固定版本进行安装, 保证一致性。
(@@在线版@@) CUDA Toolkit 11.7 Downloads - https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local
安装解压工具
进入Ubuntu虚拟机终端, 执行
sudo apt install unzip
安装解压软件 unzip.
会提示要输入Ubuntu系统安装时设置的密码.
拷贝+解压 cuda工具包
打开文件资源管理器, 左边应该已经出现了新装的虚拟机的磁盘系统。
在 /home/tiger/ 下新建 cuda 文件夹(此处的tiger为安装时的账户名, 后文不再单独说明)
将网盘内下载的 /2_CUDA_ToolKit/2_CUDA_ToolKit.zip 拷贝到这里(新创建文件夹或者拷贝文件后,看不到,可以尝试右键刷新一下)
再切回Ubuntu终端, 执行
cd ~/cuda 进入刚创建的cuda文件夹
unzip 2_CUDA_ToolKit.zip 解压文件
安装cuda toolkit (default: 11.7)
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
会提示输入密码
sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
//这里我没有配置成国内源,如果这步很慢通不过的同学可以尝试搜索 ’ubuntu20.04 替换国内源’
sudo apt-get -y install cuda
这几步基本都是官方指令, 大概就是配置安装源,安装粘贴过来的软件安装包
会安一大堆的东西, 这里是不是国内网络会造成安装失败我也不确定, 希望评论区回复
安装Anaconda环境。 Anaconda可以帮助配置虚拟的Python运行环境, 而python又是各类AI项目必不可少的。 Anaconda可以帮助解决各种项目python环境的冲突
(@@在线版@@) https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
这里我们使用的是Anaconda的精简版Miniconda
拷贝安装脚本
在虚拟机/home/tiger/ 下新建文件夹 conda
将网盘下的 /3_Anaconda/Miniconda3-py310_23.3.1-0-Linux-x86_64.sh 文件拷贝到新建的conda文件夹
安装miniconda
打开Ubuntu虚拟机终端,执行
cd ~/conda
chmod +x Miniconda3-py310_23.3.1-0-Linux-x86_64.sh 配置安装文件权限为允许运行
./Miniconda3-py310_23.3.1-0-Linux-x86_64.sh
会提示要看用户协议, 一路按回车即可
等到没有字了, 按提示输入 yes 回车
然后提示设置安装位置, 不用修改直接回车。
之后会再提示要自动初始化,这里输入yes后回车
等安装好后, 按提示先关闭所有终端窗口, 再打开Ubuntu终端,执行
conda config --set auto_activate_base false 取消默认进入conda环境的设置项(其实这步可有可无)
配置miniconda环境
将网盘下的 /3_Anaconda/.condarc 文件拷贝到Ubuntu虚拟机 /home/tiger/目录下, 文件内写入了国内的软件包下载站
在Ubuntu终端中执行
conda clean -i 清空旧的配置数据, 按提示输入y后回车
conda create -n sd python==3.10 创建一个新的名为 sd 的环境, 继续按提示输入y后回车
这时会开始安装一些基础的软件包, 安装完成后执行
conda activate sd 切换到新建的 sd 环境
注意这一句后续会经常输入, 保存好. 基本上每次关闭终端再打开后都需要输入这句指令
离线安装依赖软件包
大部分需要用到的Python软件包我都进行了离线下载, 方便无科学上网的同学使用。对自己网络有自信的同学可以略过这一步, 不过不推荐。
在虚拟机 /home/tiger/ 目录下新建文件夹 sd (如看不到新建的文件夹的, 右键刷新一下)
将网盘内/4_Python_Packages/下的 pip_package.zip 拷贝到新建的 /home/tiger/sd 目录
在虚拟机终端中执行
cd ~/sd
unzip pip_package.zip 解压压缩包
解压完成后执行(如果没在新建的sd的环境下,输入 conda activate sd , 保证终端显示的用户名前有”(sd)”的标记)
pip install --upgrade pip setuptools wheel 更新一下安装工具
继续执行
pip install --no-index --find-links=~/sd/pip_package ~/sd/pip_package/* 安装软件包
这就完成了软件包的离线安装(这里我将大部分需要的软件包都提前进行了下载, 尽可能避免网络问题)
至此,基本的环境配置就大致完成了
部署 stable-diffusion-webui 项目, 原项目地址https://github.com/AUTOMATIC1111/stable-diffusion-webui, 通过Python的gradio工具搭建了一个web端的便于使用的图形化工具。 类似于我们平时玩的游戏客户端, 其游戏本身是基于虚幻或者Unity引擎开发的,stable-diffusion-webui 使用的引擎就是 Stability AI 的 stable diffusion. 这个图形化工具依赖了很多第三方的python软件包,大家安装时出现的各种问题,大多都是因为这些复杂的依赖关系,某一个软件包安装失败, 整个项目都跑不起来
项目文件位于网盘 /1_Github_SD_WebUI/stable-diffusion-webui.zip , 拷贝到上面创建的sd文件夹内
在Ubuntu终端执行
cd ~/sd
unzip stable-diffusion-webui.zip
进入解压出的 stable-diffusion-webui 文件夹, 将网盘内的 /1_Github_SD_WebUI/repositories.zip 文件拷贝到这里, 这里是本项目依赖的一些第三方的开源项目
在Ubuntu终端执行
cd ~/sd/stable-diffusion-webui
unzip repositories.zip
将网盘内的 /1_Github_SD_WebUI/v1-5-pruned-emaonly.safetensors 这一 stable diffusion 的官方模型文件拷贝到 sd/stable-diffusion-webui/models/Stable-diffusion文件夹内
将网盘内的 /1_Github_SD_WebUI/webui.sh 文件拷贝到 stable-diffusion-webui 文件夹内, 替换原文件。 然后执行
cd ~/sd/stable-diffusion-webui
chmod +x ./webui.sh
./webui.sh
这里的 webui.sh 只进行了部分代码的注释,从而使用我们配置好的conda的python环境,而不是重新创建python的虚拟环境。可以自行和原项目文件对比。
此时就会开始初始化webui的python代码,因为大部分依赖都离线安装了,因此应该不会耗费太长的时间(可能还会访问一下github的代码库, 如果有卡在这里的同学也可以反馈一下)
至此, 整体的安装就完成了。 在浏览器访问 127.0.0.1:7860 就可以打开sd webui了。
如果想退出程序, 关闭Ubuntu终端, 或者在Ubuntu终端里按Ctrl+c 都可以。 下次想再打开程序时,在Ubuntu终端执行
cd ~/sd/stable-diffusion-webui
conda activate sd
./webui.sh
最后执行 webui.sh 时提示 Can't load tokenizer for 'openai/clip-vit-large-patch14’ ?
A: 大概率是网络问题, 尝试访问 https://huggingface.co/ 看是否正常, 可以尝试更新dns为 8.8.8.8 或 8.8.4.4 后重启电脑重试
出现 Permission denied?
A: 记得在./webui.sh前执行 chmod +x ./webui.sh
3. 出现 Couldn’t install 某个包 或者 Import 某个包失败之类的问题?
A: 先检查是否在conda环境下 (conda activate sd)