一些过程+亿些踩坑记录
都是因为自己显卡太差,正好还有剩下来的深度学习平台租的服务器,单纯用的话没有必要这么麻烦,但训练对显存有要求而且我也没打算拿着小笔记本电脑跑到天荒地老。
目前时间是2022.11.12,以后和以前的版本可能会不适用。
我用到的过程们
创建环境(linux)
一般租的服务器会自带一些配置,似乎可以少配置一点,但我的教训是从头整一个干净的虚拟环境更省心。
conda create -n sd python=3.8
conda activate sd
关于conda、pip等东西,如果你的平台上没有自带,应该会有基础教程。关于怎么持久化你的虚拟环境各个平台应该有相应做法。
然后是官方网站给的指令:
sudo apt install wget git python3 python3-venv
新建一个文件夹,cd到文件夹里,把webui克隆过来:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
权重放在stable-diffusion-webui/models下。
如果十分顺利的话,进入stable-diffusion-webui,这个时候就可以按官方的一步到位。
bash <(wget -qO- https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh)
不顺利的话可以看看踩坑里有没有类似的,反正我最后放弃了这条指令分步拆的,可以看看后面按requirments.txt来的部分。
Deepbooru安装
进入stable-diffusion-webui/models/deepbooru文件夹,这个是给训练图片(二次元)自动做标注用的,不微调二次元图片可以不管,官方要求的tensorflow我忘了是webui的requirments里就有还是得单独安装了,这个没有遇到什么问题。
git clone https://github.com/KichangKim/DeepDanbooru.git
//如果要自己安装tensorflow
pip install tensorflow
pip install tensorflow-io
按requirments.txt来
由于我官方的那条指令并不顺利,所以在webui的文件夹下,
pip install -r requirements.txt
这里,包括前面的指令都可能遇到服务器配置的镜像源里的版本并没有跟上要求然后安装失败的问题,简单地说就是txt里的新版本下不到。最简单的解决方法就是看看源里最新的版本到哪(一般报错的时候会给报),然后把txt里的版本号改成你能下的那个版本。
搞完以后开始执行
python launch.py --share --listen --port 7860 --deepdanbooru
端口port写啥应该都可以,可能有些比较小的要sudo,7860是默认的,share是因为并不能指望云服务器上找一个浏览器,反正如果报错说类似localhost怎么怎么然后打开share的话按这个来,教研室的服务器如果要分享出去我猜要整穿透。然后复制它给你的分享网址粘贴进去就行了。deepdanbooru那部分是给训练用的,只生成图不用管。
更多的踩坑
配置环境部分
如果遇到error里有“no matches found: httpx[socks]”:
注意单引号给[]转义,它的提示里的pip install httpx[socks]是不行的,得这样:
pip install 'httpx[socks]'
训练部分
这个很怪,我遇到embedding能生成但界面那边刷新不出来也没法加载的问题,忘了报错是什么了,反正按照它的提示,去stable-diffusion-webui/modules下的share.py里,找一下--disable-safe-unpickle,把默认值写成true。
parser.add_argument("--disable-safe-unpickle", action='store_true', help="disable checking pytorch models for malicious code", default=True)
如果是这样解决的话训练完成的pt文件要在其它地方用也得改这个。
如果训练的时候没能开始,报错里有cpu之类的,用了这位大佬的方法,stable-diffusion-webui/repositories/stable-diffusion/ldm/models/diffusion,进入ddpm.py,1030行上面加入
t = t.to('cpu')
最后:单说服务器上折腾,其实可能不用webui用原版还会方便点……训练参数和不同方法的差别之类的还在试。