kohya_ss LoRA训练:从数据集到可加载的权重文件
【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss
读完能整理出带 caption 的数据集,在 kohya_ss 里跑通一次 LoRA 训练,产出可被推理界面直接加载的 .safetensors 文件。
项目定位
kohya_ss 是面向扩散模型训练的图形界面和命令行工具,把 Kohya sd-scripts 的训练参数做成表单,支持 LoRA、LoHa/LoKr、DreamBooth、全量微调和文本反转等训练方式,底模覆盖 SD 1.5/2.x、SDXL、SD3、Flux.1。适合想训练风格或角色 LoRA、又不想手拼一串命令行参数的人。
环境准备
克隆并进入仓库:
git clone https://gitcode.com/GitHub_Trending/ko/kohya_ss cd kohya_ssWindows 两条命令:
setup.bat gui.batLinux/macOS:
./setup.sh ./gui.sh启动后打开本地 Gradio 页面。需要远程访问时追加--listen 0.0.0.0 --server_port 7860 --headless。
核心工作流
准备数据集
图像质量和 caption 一致性决定效果上限。
- 训练数据放在根目录下的分类子文件夹,每张图配同名
.txt,内容即 caption - 仓库自带样本
test/img/,同一个角色 8 张图配同一句描述,可直接用来跑通流程 - 单图 512x512 即可,bucketing 按宽高比分桶,不需要预裁剪
统一 caption
caption 描述的是主体共有特征,推理时不会写进 prompt 的词会被模型"学进"LoRA。
- 批量生成可用 GUI 的 WD14/BLIP/GIT caption 页签,或
tools/里的标注脚本 - 生成后逐个核对
.txt,删掉与主体无关的标签
配置训练参数
LoRA 页签的核心参数先按下面这张表起步:
| 参数 | 作用 | 推荐值 | 选择依据 |
|---|---|---|---|
| learning_rate | 学习率 | 1e-4 (SD1.5) / 4e-7 (SDXL) | SDXL 文档以 4e-7 为标准值 |
| train_batch_size | 批大小 | 1 | 受显存限制,可用梯度累积替代 |
| max_resolution | 训练分辨率上限 | "1024,1024" (SDXL) | SDXL 标准分辨率为 1024 |
| lr_scheduler | 学习率衰减方式 | cosine | 配置文件默认值 |
| cache_latents | 缓存 VAE 结果省显存 | true | 显存 8GB 以内先开 |
| sample_every_n_steps | 采样间隔 | 每个 epoch 1 次 | 用于观察收敛情况 |
presets/lora/目录里放了 Adafactor、AdamW8bit 等优化器的组合,加载预设比逐项填写更快。
配置采样提示词
采样提示词文件每行一条 prompt,#开头为注释。行尾可加--n、--w、--h、--d、--l、--s分别指定负面提示词、宽高、种子、CFG 和采样步数。固定尺寸和种子,方便对比不同 epoch 的同一条出图。
运行训练并核对产出
填好底模路径、数据集目录和输出名后点击运行,GUI 会拼装命令行并调用 sd-scripts 的 train_network.py。权重按 epoch 写入输出目录,格式为 .safetensors,用采样图和 loss 曲线判断取哪个 epoch。
关键调优点
采样图某个 epoch 后变糊——原因:过拟合,学习率偏高或轮数过多。处理:学习率降一个数量级,或用 save_every_n_epochs 存多个版本,取中段产物。
训练后采样图没有变化——原因:学习率过低,或 caption 没覆盖主体共有特征,模型没有学到东西。处理:先对照图片和.txt内容,确认描述一致后再提高学习率。
CUDA out of memory——原因:VAE 编码或激活值占用显存。处理:开启 cache_latents,batch 保持 1,仍不够再打开 gradient_checkpointing。
masked loss 指定区域不生效——原因:掩码必须是 RGB 图,只有 R 通道为 255 的像素才计入 loss。
处理:把掩码做成黑底白色主体形状,存为三通道图片,再勾选--masked_loss选项。
高频卡点
报 No module named tkinter——系统 Python 缺 tkinter 组件。排查方向:重装 Python 3.10 并勾选 tcl/tk 选项,用python -c "import tkinter"验证。
SSH 场景下点运行后无响应——原生覆盖确认弹窗在服务器上无显示器可显示,进程被阻塞。排查方向:日志里找--headless提示,启动时带上该参数。
V100 训练时 GPU 利用率低——先看日志里的利用率数值,再按docs/troubleshooting_tesla_v100.md里的排查步骤逐项检查驱动和 xformers 配置。
延伸方向
- docs/LoRA/——LoRA 选项详解,包括 SDXL 建议只训 UNet 和显存要求
- docs/troubleshooting_tesla_v100.md——V100 利用率问题的专项排查,老卡用户值得先看
- test/——完整示例数据集和 masked loss 样本,可作环境验证的一套现成材料
先用 test/ 里的样本数据跑通一个小 LoRA,确认权重能在推理界面加载,再换成自己的数据集开始正式训练。
【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考