一键部署Kohya_ss 微调SD模型
Kohya_ss主要用于训练图像生成模型,提供用于模型训练的WebUI可视化界面。在AI绘画场景中,您可以将经过训练的LoRA模型应用于Stable Diffusion(SD)服务,作为辅助模型,以提升SD绘画的效果。
准备环境和资源
进入 AI计算资源>轻量计算实例,点击 添加实例 按钮,将已开通的云服务器添加到百舸平台中用于快速部署Kohya_ss。若轻量资源中已添加云服务器实例,可跳过此步骤。
安装Kohya_ss
- 在轻量服务>模版市场中选择 Kohya_ss 模版,点击 创建服务 按钮,快速部署Kohya_ss服务。
- 根据需要部署的模型参数量,选择使用卡数量,至少需要选择1张卡,点击 确定 启动服务,等待服务启动。
访问WebUI
服务部署成功后,您可以在服务详情中找到对应实例,单击 登录 查看WebUI的访问地址和用户名、密码。
准备训练数据
目录/root/kohya_ss/test/img with spaces/10_darius kawasaki person下有制作好的数据可以直接使用。
对于LoRA,图片收集的标准:
- 数量几十张即可;
- 分辨率适中,勿收集极小图像;
- 数据集主题和风格统一,图片不宜有复杂背景以及其他无关人物;
- 图像人物尽量多角度,多表情,多姿势;
- 凸显面部的图像数量比例稍微大点,全身照的图片数量比例稍微小点。
数据预处理
主要是图像分辨率方面的预处理,可以将图片裁剪到512✖️512,可使用https://www.birme.net/进行批量裁剪。
图片标注
对每张训练图片加以文字描述,并保存为与图片同名的txt格式文本。
可能会遇到ImportError: libGL.so.1: cannot open shared object file: No such file or directory,执行:
apt-get install -y libgl1-mesa-glx
LoRA微调
参数设置
为了能够稳定地进行训练,推荐如下配置:
- LoRA > Training > Accelerate launch > Resource Selection > Mixed precision,选择精度为bf16;
- LoRA > Training > Model,填写Pretrained model name or path、Trained Model output name和Image folder。然后勾选"SDXL"和"bf16";
注意:Image folder路径要包含图像子文件夹。以内附数据集为例,Image folder应填写/root/kohya_ss/test/img with spaces
- LoRA > Training > Folders,填写Output directory for trained model和Logging directory。这里可以设置Output directory for trained model为/root/apps/model;
然后,在LoRA > Training > Parameters下,可以调整训练参数。
开始微调
设置好训练的配置后,点击"start training"按钮,训练可随时通过点击"stop training"按钮终止训练。更新训练配置后,选择新的输出模型路径或模型名,即可重新开始训练。
注意:训练详情建议在终端执行tail -f /root/apps/logs/kohya.log查看。
成功进行LoRA训练的截图:
tensorboard打开参考 2.2 Dreambooth训练。
训练完成后,我们可以在/root/apps/model下找到训练好的LoRA模型:
以及在/root/apps/log下存储的相关训练日志:
出于安全考虑,我们暂时禁用了训练过程中tensorboard面板的实时启用,不过用户仍然可以通过如下命令行查看。其中,port 和 logdir可替换为自定义的端口和tensorboard日志路径:
tensorboard --host 0.0.0.0 --port 6009 --logdir=/root/apps/log/20241029160703/network_train
浏览器访问容器所在节点的公网IP : port,例如节点公网IP为120.48.10.237,端口设置为6009时,访问http://120.48.10.237:6007/即可查看。
Dreambooth微调
参数设置
可参考Lora微调中的参数配置。
开始微调
Dreambooth对于cuda内存的消耗很大,原因在于所有模型参数及其梯度都会被加载和更新,A10 24GB的内存占用率会很快达到100%,然后导致OOM。尽管已经将batchsize设置为1,此外,使用fp16训练也可能缓解内存占用,但可能导致Nan detected in latents错误。
参考文档
https://github.com/burashixi/kohya_ss_localized_zh/tree/master