一、背景
需要训练自己的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_ss chmod +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 pyarrow from 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
一定可以训练成功的,有数据有模型有步骤,不清楚可以联系我
codegitgithubpngguipythonetfwebclonescriptpython包pandaswebui基础模型huggingfaceweb界面训练数据数据转换url