先附上预览图,幼妲贴贴:
https://truth.bahamut.com.tw/s01/202302/a2c1b53fb942cba44f6ae71c514e82bb.JPG
网页好读版:
https://home.gamer.com.tw/creationDetail.php?sn=5657565
前言都是一些废话,如果只是想知道如何训练LoRA,可以直接往下跳至分隔线。
*本文只是个人训练LoRA的经验分享,因为还没有人做相关教学,所以写这篇文章来看看能
不能抛砖引玉,如果有任何问题欢迎大佬补充
在一开始AI绘刚红的时候,是看西洽有人分享用AI画大奶维多利亚美女,当时就有跟着教学
把stable diffusion弄来玩玩了,但除了抄抄大奶维多利亚美女的咒文之外,其他自己想画
的图并不怎么样。后来在西洽看了cybermeow大的文章,觉得能炼出特定角色的模型很实用
,可以拿来画我推的V,于是跟着YT教学一步步学着怎么用dreambooth,然而显存不够只好
去租3090,还因为国外网站卡在卡刷不过,跑去试用台智云,搞到台智云打给我们教授推销
ww,那时好像只有sd1.3跟wd几版我忘了,反正用dreambooth fine-tune wd出来的结果不是
很好,虽然还是有搞了张幼妲下蛋。后来novel ai模型泄漏出来以后台智云的试用期也过了
,加上训练embedding内建在webui以后太方便,用我这3070 8g的显卡随便炼,也就忘了dre
ambooth这件事。
但前阵子渐渐觉得遇到瓶颈,为了复杂的场景prompt下太多,角色的特征很容易会被抹掉,
原本就不是很准确的特征在复杂prompt下更难骰出好图。想起还有比较准确的dreambooth可
以用,想说也许经过几个月的发展dreambooth能在低显存的环境下训练,一开始的确有在re
ddit看到去年十月的文章说dreambooth可以在8g vram显卡上训练,但我试了无法,而且近
期的文章也都说要求10g显存。那本地不能训练,但我又不想在colab上跑,除了要挂载云端
硬盘然后还要清空间放模型很烦之外,邪恶的东西也不能在上面训练,于是dreambooth这件
事又被我放置了。
直到最近听说有个新技术,LoRA,不仅训练出来的模型很小对硬盘空间很友善,效果贴近dr
eambooth的同时,重点是,真的能在8g显存的显卡上训练了。LoRA(Low-rank Adaptation)
这个技术到底是什么呢?我们来看一下原github上的"简单"解释:
https://i.imgur.com/FltrSEe.png
简单来说,不直接微调模型权重,而是训练一个偏移量作用于于模型上,而且重要的是将这
个高秩的模型权重偏移量拆开,用低维度的矩阵相乘去近似它,因此可以节省空间,而且能
以比dreambooth更快的速度进行微调。
===================================
正题开始,如何训练LoRA?我知道现在webui的dreambooth插件也可以进行LoRA的训练,但除
了requirements容易冲突之外,重点是当我选了7.多g的模型要创建dreambooth模型时,直
接CUDA OOM (吐血,第一步都做不了,所以这里不使用webui插件训练LoRA。
首先,安装python 3.10.6与git,相信有装webui的各位都有了,如果没有可以去官网抓,
或是用包管理器chocolatey直接安装。
接着一步一步手把手教学
git clone https://github.com/kohya-ss/sd-scripts.git
将库clone下来
cd sd-scripts
进入资料夹
python -m venv