使用ComfyUI作为生产力工具,调用Checkpoint叠加Lora出图,以下为使用自己的数据集训练用于ComfyUI的Lora流程。
服务器准备
用于训练Lora需要较高的GPU算力,选择智灵云服务器,其预载了ComfyUI和Lora训练器,非常方便。智灵云服务
注册好账号后,在GPU部署一栏中新建自己的GPU。为了方便将训练好的模型直接测试,本人开了两个GPU实例分别训练和测试,它们共用一块云磁盘,在GPU部署一栏中可见。
一般40GB的存储空间就够用了,GPU根据需要选择,一般训练Lora单4090即可跑满。
训练Lora的GPU
选择训练类模板下的SD Lora tranier,对应秋叶大佬的训练器,链接他在b站有很多AI作画相关的工具和教程。等待启动完毕打开trainer界面即可
训练flux lora的时候可能会报错40系列不支持分布式训练,需要在环境变量里提前禁用,如下,正常情况不需要考虑。
用ComfyUI测试Lora的GPU
选择推理类模板下的SD comfyUI,等待启动完毕打开comfyUI界面即可。
费用问题
注意,GPU存储会一直扣费,费用是1小时 10GB 1分钱,GPU从1块钱到几块不等,只在开启的时候计费,所以测试完毕后记得把服务关了,训练时可以预估时长设置自动关机时间,一般半夜会便宜25折。
Lora训练
整体流程分为图片清理->图片裁切->打标签->上传数据集->正式训练->导出模型。
图片清理
这一环节自己在本地筛选留下符合需求的优质图片即可。
图片裁切
通过链接网站工具进行批量裁切,支持自动识别重点像素,大小需要设置为32的倍数,推荐统一修改为jpg模式。
对裁切完的图片进行重命名,从000开始,这里附上bat命令,保存为.bat文件并修改代码中的图片地址即可使用。
@echo off
setlocal enabledelayedexpansion
rem 设置文件夹路径
set folder= T:\Huishi\birme-590x900
rem 进入目标文件夹
cd /d %folder%
rem 计数器
set count=1
rem 循环重命名文件
for %%f in (*.jpg) do (
rem 格式化数字(补零)
set filename=00!count!
ren "%%f" "!filename:~-3!.jpg"
rem 计数器加1
set /a count+=1
)
echo 重命名完成!
pause
重命名后清晰可见,上传时便于处理,bat命名使用方法:脚本第7行路径改成自己存放数据集的路径,复制代码到.txt文本中,改变后缀为.bat直接双击运行即可。
给图片打标签
启动GPU,通过SD-tranier中的WD标签器即可快速自动打标,有需要可以通过下方的标签编辑器修改标签。
点击启动后,会在对应的图片目录下生成txt文件。
实际使用时,GPU训练器中的打标功能可能有bug比较慢,可以本地部署SD-trainer打好标后再上传,链接本地部署方法。
上传数据集
如果使用服务器的SD-trainer打标,那么在图片裁切重命名后打开jupyternotebook上传即可,使用本地SD-trainer则在打好标后再通过jupyternotebook上传。
正式训练
由于使用SDXL作为基底模型,所以只能走专家训练,几个关键参数如下。
训练种类选SDXL,底模选择在素材网站上下载的Checkpoint文件,数据集路径填写时注意,一定要在root前面加/才是完整的路径。
图片大小按照裁切时的大小填即可,输出模型的地址一定要修改,推荐为/root/output,否则可能无法正常保存训练结果,其他训练参数根据需求修改即可。
PS:显卡显存够大的可以epoch开个50,batchsize按4 8 12往上加,他们的关系是训练的总次数=图片数量*epoch*batchsize
导出模型
最后训练出来的safetensor格式文件复制到comfyUI对应models的Lora文件夹下,进入测试流程。
使用comfyUI测试训练的Lora
启动GPU,在comfyUI中的工作流加载对应的底模Checkpoint和Lora的safetensor开始测试即可。