作者wres666 (永恒梦魇)
看板AI_Art
标题Fw: [AI] 如何训练LoRA? 猴子都学得会的手把手教学!
时间Fri Feb 10 05:59:17 2023
※ [本文转录自 C_Chat 看板 #1ZvMm1yc ]
作者: wres666 (永恒梦魇) 看板: C_Chat
标题: [AI] 如何训练LoRA? 猴子都学得会的手把手教学!
时间: Fri Feb 10 05:56:12 2023
先附上预览图,幼妲贴贴:
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 --system-site-packages venv
开一个独立的虚拟python环境
.\venv\Scripts\activate
启动虚拟环境 *之後每次要训练,记得都要先启动虚拟环境
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url http
s://download.pytorch.org/whl/cu116
pip install --upgrade -r requirements.txt
pip install -U -I --no-deps
https://github.com/C43H66N12O12S2/stable-diffusion-w
ebui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
安装依赖项
cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\ce
xtension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_set
up\main.py
复制库文件
accelerate config
设定完成
接下来要用
https://github.com/derrian-distro/LoRA_Easy_Training_Scripts 提供的脚
本进行训练
wget -O lora_train_popup.py
https://raw.githubusercontent.com/derrian-distro/LoR
A_Easy_Training_Scripts/main/lora_train_popup.py
将脚本下载下来 *如果没有wget,去用chocolatey装一个,或是
https://github.com/derr
ian-distro/LoRA_Easy_Training_Scripts/blob/main/lora_train_popup.py 文件右上角Ra
w右键->另存连结
accelerate launch --num_cpu_threads_per_process 12 lora_train_popup.py
开始训练
接下来会弹出一系列视窗,可以调整选项
Do you want to load a json config file?
是否载入设定,否
Select your base model
选择基底模型,如anything-v4.5.ckpt
Select your image folder
选择训练图像资料夹 *如何准备训练资料等等会说
Select your output folder
选择储存LoRA输出资料夹
Do you want to save a json of your configuration?
可以储存设定档以供第一步使用
https://i.imgur.com/M91Xpa8.png
记忆体<16g 设为1
Do you want to use regularization images?
是否使用正则化训练图片 *一样等等讲
Do you want to continue from an earlier version?
可以从中断的训练中回复,否
https://i.imgur.com/KzUWvcD.png
只有8g,Cancel使用预设为1
https://i.imgur.com/62tnNug.png
训练次数,200或更高,训练图片少者适量调高
https://i.imgur.com/Y4wtNYI.png
还记得前面说过LoRA将高秩矩阵近似成低维矩阵相乘吗? 这就是矩阵相乘中间的维度,可以
视为LoRA模型的深度/复杂度,可以视情况调整,通常保持预设即可
https://i.imgur.com/tAPF9pS.png
训练的参数,保持预设即可
https://i.imgur.com/7eCQ29d.png
训练图片的解析度
https://i.imgur.com/YG39Hyc.png
学习率,保持预设即可
https://i.imgur.com/1db1cRU.png
8g显存,保持预设即可 *我不是很确定这是干嘛的,也许可以微调CLIP使LoRA的效果更好,
欢迎大佬补充
https://i.imgur.com/IBLcgu1.png
8g显存,保持预设即可 *我不是很确定这是干嘛的,也许可以微调unet使LoRA的效果更好,
欢迎大佬补充
https://i.imgur.com/upMdQJn.png
学习率调整策略,保持预设即可 *有"linear", "cosine", "cosine_with_restarts", "pol
ynomial", "constant", "constant_with_warmup" 这些可以选
https://i.imgur.com/9h9fDex.png
前一步的依赖选项,保持预设即可
Do you want to save epochs as it trains?
是否储存中途训练结果,是
https://i.imgur.com/Z6Q2NQN.png
多久储存一次训练结果,根据自己的硬碟空间作调整,通常设10、20或50
Do you want to shuffle captions?
是否将训练资料的tag(prompt)打乱顺序,是
Do you want to keep some tokens at the front of your captions?
是否保留前几个tag不打乱顺序,是
https://i.imgur.com/Hurfs5D.png
保留多少个tag,通常设定1~3
Do you want to have a warmup ratio?
学习率调整策略,否
Do you want to change the name of output checkpoints?
是否更改输出模型档名,否
接下来就会开始训练,等待训练完成吧
https://i.imgur.com/CNDFeCU.png
如何准备训练资料
先贴一张图
https://i.imgur.com/UnnBT7P.png
训练图片资料夹的结构
子资料夹的名称为"重复次数_关键字"***重要:日後使用LoRA的关键字在此设定
可以为一个LoRA模型训练不同概念,重复次数可以调整资料平衡,图越少适当调高
子资料夹内的图片与文档怎麽来? 去蒐集要训练角色的图片吧,少至10张,多至上百上千张
都可以。
训练图片预处理使用webui来做,如果之前有训练过embedding应该不陌生
https://i.imgur.com/h1NVCSp.png
先帮webui加上--deepdanbooru参数
开启webui之後 训练->图像预处理
指定来源目录、输出目录与解析度
底下选项
建立镜像副本
-> 勾,训练图片越多越好,但如果训练的人物有标志性特定方向的头饰、配件,别勾
分割过大的图像、自动焦点裁切、Auto-sized crop
-> 处理图片大小,择一,如果图片长宽比不符再使用。推荐可以先使用Brime手动裁切就不
必使用。
使用 BLIP 生成说明文字(自然语言描述)
使用 deepbooru 生成说明文字(标记)
-> 自动给图片上tag(prompt),择一,通常二次元图片使用deepbooru比较好。 tag会存进
同名.txt档
像这样子:
https://i.imgur.com/1iIRfZv.png
另外还有正则化图片,如果图片太少(20张以内),或是图片视角不够多样化,通常会准备正
则化图像帮助训练,例如你要训练一个女V,那麽你就去收集动漫女孩的图,那如果你不想
自己找怎麽办?也可以直接用生成的。那要准备几张正则化图片呢?根据网路上各式各样的教
学,我看过说准备1:1,也看过说要10倍的,我在这部分没有太多经验可以推荐。
===================================
教学完成啦,可以开始训练自己的LoRA模型了!
在这边推荐各位一个网站,civitai,上面可以找到很多别人训练完的LoRA模型,可以拿来
混搭。
接下来分享一些我产的图吧,各种LoRA模型混搭真是好玩。另外,这位是我的推,ReLive_
灰妲,讲话风趣,杂谈之鬼,总是不知不觉就到三点,虽然平时没什麽气质,
只有炸鸡腿的
香味,但气质来的时候超婆的,重点是还有我真正的主推,幼妲,幼妲简直就是天使,萝莉
真是太棒了!!
大波鹦灰妲
https://i.imgur.com/oNJB01X.png
幼妲抱着小小妲
https://i.imgur.com/lXSwDOK.png
幼妲妮亚
https://i.imgur.com/4KrVvH8.png
幼妲,孤独摇滚ed ver.
https://i.imgur.com/6qQmVSY.png
迷之阴影(X
https://i.imgur.com/mfYUahk.png
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 124.218.206.38 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Chat/M.1675979777.A.F26.html
※ wres666:转录至看板 Test 02/10 05:58
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: wres666 (124.218.206.38 台湾), 02/10/2023 05:59:17
1F:推 v86861062: 推推 02/10 07:13
2F:推 zxcmoney: 推 02/10 08:41
3F:推 ZMTL: 这周末用我1080试试看XD 02/10 09:08
4F:→ milk830122: 虽然我是找对岸的lora教学 但是我也生出自己角色的模 02/10 10:23
5F:→ milk830122: 组了 而且算很快 3070也跑得动 02/10 10:23
6F:推 andyleeyuan: 推,正准备开始研究lora 02/10 12:11
7F:推 wandererc: 推推 02/10 13:10
8F:推 arenoe: 推推 02/10 13:27
9F:推 HysTakuya: tagging推荐用WD14 tagger 02/10 14:54
10F:推 HysTakuya: 可以用kohya webui 蛮方便 还可以存设定档 02/10 14:57
11F:→ HysTakuya: 感谢原po分享 推推 02/10 14:59
12F:推 kaori9993: lora或DB可以训练衣服吗? 图片要求後制成512*512 02/10 20:44
13F:→ kaori9993: 衣服总是会被切掉 02/10 20:45
14F:→ FoxWu930065: 有开buckets理论上可以 resolution设512的话 02/10 21:46
15F:→ FoxWu930065: 可以试试看丢384x576 02/10 21:46
16F:→ FoxWu930065: 我搞错了 Kohya's SD-Scripts可以长宽可以分开设定y 02/10 21:49
17F:→ FoxWu930065: 这个好像不行 02/10 21:49
18F:→ FoxWu930065: 主要是resolution 512没有384x576这个bucket 02/10 22:00
19F:→ FoxWu930065: 不然就是resolution 640 丢512x768 02/10 22:04
20F:推 kaori9993: 感谢,我试着弄弄看 02/11 00:31
21F:推 diabolica: 我是猴子 02/14 23:26
22F:推 likeyousmile: 推 10/05 10:10