一、背景
需要训练自己的LORA模型
二、分析
1、有sd-webui有训练插件功能
2、有单独的LORA训练开源web界面
两个开源训练界面
1、秋叶写的SD-Trainer
https://github.com/Akegarasu/lora-scripts/ 没成功,主要也是cudnn和nvidia-smi中的CUDA版本不一致退出
2、Kohya's GUI
GitHub - bmaltais/kohya_ss 成功了
遇到问题1,cudnn和nvidia-smi中的CUDA版本不一致
解决方法:unset LD_LIBRARY_PATH解决了我的问题
问题2:报错量化错误
优化器Optimizer 选 :AdamW
三、步骤
1、下载代码
git clone https://github.com/bmaltais/kohya_ss.git
2、有Python 3.10.8环境
cd kohya_sschmod +x ./setup.sh./setup.sh./gui.sh --listen=0.0.0.0 --headless
不要自己去安装python包,巨坑。
3、准备数据
下载该数据
https://huggingface.co/datasets/lambdalabs/pokemon-blip-captions/tree/main
#安装处理该数据的包
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple fastparquet
# pip install pyarrowfrom fastparquet import ParquetFile
datadir = r'./'
filename = datadir + r'下载的数据.parquet'
pf = ParquetFile(filename)dF = pf.to_pandas()from PIL import Image
import io
import base64# 将byte数据转换为PIL图像对象
def save_png(name,image_bytes):image = Image.open(io.BytesIO(image_bytes))# 保存图像到文件filename = 'lora_data/'+str(name)+'.jpg'print(filename)# 调整尺寸new_image = image.resize((512, 512))new_image.save(filename)
def save_txt(name,text):# text = "这是要保存的文本内容"filename = 'lora_data/'+str(name)+'.txt'with open(filename, 'w') as file:file.write(text)
保存数据的
for index, row in dF.iterrows():# print(index,row['text'],row['image.bytes']) # 输出列名save_txt(index,row['text'])save_png(index,row['image.bytes'])if index==20:break
4、创建数据目录
在kohya_ss项目下,创建一个train目录,具体内容如下:
image : 图片放在这里。
log:训练记录
model:模型保存路径
image目录还有一个子目录,比如本文这里是100_pokemon,100表示100个steps,会直接影响训练的步数和效果,pokemon表示图片人物名称。
5、训练
训练数据目录填 /home/.../image 不要写到/home/.../image/100_pokemon
基础模型写全/media/...../openjourney-v4.ckpt
一定可以训练成功的,有数据有模型有步骤,不清楚可以联系我