关于sd,我自己也是新手,就简单记录一下
首先是项目地址,https://github.com/AUTOMATIC1111/stable-diffusion-webui
然后关于这个webui的使用教程,找到一个博客,但是需要科技才能上。
欢迎 | Stable Diffusion WebUI使用手冊(简体中文)|Ivon的部落格 (ivonblog.com)
在部署方面,也是查了很多博客,我这边是部署在autodl服务器上,安装的时候,碰到第一个问题,root用户下不能安装,但是如果新建一个用户的话,又没有python,两难。后来看了下webui.sh中有关于root的注释,其中有一段,注释掉后就不会报错了
# read any command line flags to the webui.sh script
while getopts "f" flag > /dev/null 2>&1
docase ${flag} inf) can_run_as_root=1;;*) break;;esac
done
我是把这个全部注释掉。比较担心会不会有后续影响,直到后来查看输入参数的时候,一直追查,从modules里的launch_utils.py到cmd_args.py,里面定义了很多参数,第一个就是
parser.add_argument("-f", action='store_true', help=argparse.SUPPRESS) # allows running as root; implemented outside of webui
从这个描述来看,应该就是允许root用户安装,不过我也没有用过,就是提一下,在launch_utils.py当中有一些需要安装的git的地址,如果存在网络问题的话,可以提前将这些地址改为镜像地址,如此的话可以一次成功,不然就自己提前下好装好也是可以的,但是sd他默认是会装一个虚拟环境,也就是不管你的conda是不是新建了环境,他都是使用在自己目录内的venv内的python环境,所以想要pip安装包,应该是venv/bin/python -m pip ...
在顺利装上sd之后,他好像是默认会下载一个model,但我的没有,可能是网络原因,所以我是自己下载的,推荐一个网站模型广场 (aigccafe.com),下载速度还不错,下载的时候需要注意看一下,至少需要一个checkpoint,不要下载到了lora,需要放置在正确的位置上。
对webui的启动,同样,执行webui.sh就可以了,但是autodl的端口,建议是6006,然后远程访问的话,除了对应ip,端口是54482。不过后来发现,用vscode的端口转发的话,什么端口号都可以了。还建议开启api模式,如果用--nowebui,则没有web,只有api模式,用--api的话,就是两个模式都可以,不过如果开启api模式的话,可以查看api文档,虽然也比较简略就是了。
webui支持插件功能,比如可以汉化,这篇帖子写了怎么汉化,还有一些使用教程,不过个人觉得,汉不汉化都无所谓,使用上没有障碍,主要是,在使用提示词的话,基本上不支持中文,所以需要注意使用英文。
推荐这篇浅谈stable diffusion (三) - 知乎 (zhihu.com)对各个参数有讲解,还是不错的,强烈推荐。
接下来说一下lora,在我的理解中,他就是对大模型的一个微调,所以比较小,在使用上,主要是通过<>来进行调用,括号中写上lora名和权重,默认是1,例如<MOXIN:0.9>,前面是lora名,就是文件名,后面0.9就是权重,但是需要注意的是,在web端,通过鼠标点击对应的图标来添加的话,他是使用的lora的别名,但是这个别名不好得到,所以使用文件名也是可以的,关于权重,可以参考下载的时候的模型描述。
因为我主要使用api模式,所以看了下api的代码,他提供了很多方法,这里提到一些坑,比如,需要更换模型,他是没有对应接口的,最开始我是修改了reload接口的代码实现的,后来发现,其实是有的,他有个setconfig可以设置很多信息,但最终其实没有必要,因为在进行文生图的时候,可以指定模型,这样还方便一些,每次发送文本和指定风格就行了,不然还需要先判断当前使用的是什么风格,再判断要不要切换风格并加载对应模型,不如每次都指定风格,省了很多事。
然后他的默认api好像是没有提供获取全部lora模型信息的,至少在api的py文件中没有,通过web端下方点击api按钮跳转api文档能看到有,如果没有的话,可能是需要安装一个插件,可以查看这个帖子,这个帖子主要是lora的训练和对比,但也提到安装一个插件。
对于lora的训练,首先,sd好像是没有提供训练的方法,他提供的训练也不太清楚是啥,有篇帖子介绍了比较详细,然后训练的话,最开始看的就是这篇,什么是LoRA模型,如何使用和训练LoRA模型?你想要的都在这! - 知乎 (zhihu.com)
他提到了训练的方式是,通过 bmaltais/kohya_ss (github.com)这个项目,这个项目也是有坑。
我这边不是按照那个lora训练的帖子来的,基本流程是,1.准备图片
2.通过sd webui做数据预处理,也就是生成图片标签,具体是训练标签中的数据预处理,填写好路径之后,下面勾选生成tags
3.生成的文本是txt格式的,此时遇到第一个坑,再kss这个项目中,他默认的标签文件格式是.caption,所以记住一定要在训练参数那一栏中找到,文本格式,填上.txt,不然在开始训练的时候,会有提示,找不到caption,但是仍然可以开始训练,所以是不会报错的,一定要注意看打印日志。
kss这个项目,在安装的时候,似乎也是会自己安装虚拟环境,但我的似乎是检测到什么,所以没有,直接使用的当前本地的python,但是他有个巨坑是,他第一步是检查自己是不是最新的,所以会先git自己,但是由于网络原因,不成功,虽然不影响后面进程,但是会很拖时间,通过什么参数可以取消这一步;然后由于他需要的库都指定了版本,且太新了,很可能pip会报错,此时,先不要急,想一想是不是使用国内的pip源,切换回原始源,然后更新pip,就可以了。这里吐槽一下,感觉实在没有必要,一定要最新的么,是不是过于新了,在安装的时候没折腾死。
总结一下,这篇简单的写了一下踩坑,但是并没有很详细的写具体怎么用,怎么训练,因为我觉得,怎么用sd,网上一搜一大把,至于训练,效果远不如网上下载的,有点折腾,而且生成的标签也需要人工校对,如果这些都愿意花时间解决,那区区一个训练,相对而言,花很少的时间就能解决