kohya_ss:Stable Diffusion 微调的事实标准,LoRA 训练绕不开的 GUI

kohya_ss:Stable Diffusion 微调的事实标准,LoRA 训练绕不开的 GUI

AI 绘画

📖 简介

kohya_ss 是社区使用最广泛的 Stable Diffusion 微调工具链,把 sd-scripts 的 LoRA、DreamBooth、Textual Inversion 等训练方式包装成可视化 GUI,从数据集打标到出模型一条龙,训练专属画风的第一选择。

📝 详细介绍

一、这篇教程带你完成什么

我们从零把 bmaltais/kohya_ss 跑起来,用它自带的 GUI 训练一个能出效果的 LoRA 模型,最后拿到一个 .safetensors 权重文件,可以直接丢进 WebUI 或 ComfyUI 里加载使用。整个流程走完大概 40 分钟(不含训练时间)。

这个仓库是目前 Stable Diffusion 微调领域事实上的标准工具,Apache 2.0 协议,12,591 Star、1,608 Fork,最近一次提交在 2026-08-01,迭代仍然很活跃。它的价值在于:既提供了完整的命令行训练脚本(train_network.py 等),也提供了一个把几百个参数可视化暴露出来的 Gradio GUI。新手可以先点 GUI 建立直觉,熟练后再回到命令行做批量任务。

二、前置条件

  • Python 3.10.x(官方安装脚本按 3.10 设计,3.11/3.12 容易在依赖编译阶段翻车)。
  • Git,用于拉取仓库。
  • NVIDIA 显卡,显存建议 8GB 起;6GB 可通过混合精度 + 梯度检查点勉强跑 512×512 的 LoRA。
  • 已安装对应 CUDA 版本的官方显卡驱动(不需要单独装 CUDA Toolkit,PyTorch 会自带运行时)。
  • 至少 20GB 可用磁盘空间,模型文件和训练缓存都很占地方。

三、安装部署

1. 拉取仓库

git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss

2. 运行安装脚本

仓库自带一键安装脚本,它会创建独立的 Python 虚拟环境 venv 并装好 PyTorch、xformers 和全部依赖。

# Linux / macOS
./setup.sh

# Windows
setup.bat

过程中会问你几个问题:显卡型号、是否安装 xformers(建议 yes)、是否安装 bitsandbytes(8bit AdamW 优化器用,建议 yes)。装完大约 5-8GB。

3. 启动 GUI

# Linux / macOS
./gui.sh

# Windows
gui.bat

默认监听 http://127.0.0.1:7860。想局域网访问可以加参数:

./gui.sh --listen 0.0.0.0 --server_port 7860 --inbrowser

四、第一个 Demo:训练一个 LoRA

步骤 1:准备训练数据

kohya 使用「文件夹名即配置」的约定。N_概念名 中 N 表示每张图重复多少次,概念名会作为触发词。

mkdir -p train_data/10_mystyle
# 放入 10-20 张风格统一的图片,命名为 img01.png、img02.png ...
# 每张图片配一个同名 txt 打标文件:img01.txt、img02.txt ...

打标文件里写自然语言描述,比如:mystyle, a woman standing in a garden, soft light。没有打标工具可以用 GUI 里自带的 WD14 Tagger 页签自动生成。

步骤 2:准备底模

下载任意一个 SD1.5 的 .safetensors,放到 models/ 下(新建即可)。训练底模选干净的基础模型,不要用已经融合了一堆 LoRA 的二次元大模型,容易学偏。

步骤 3:执行训练

先让 accelerate 做一次环境配置(只做一次):

source venv/bin/activate
accelerate config
# 全部选默认即可,单卡训练不需要多进程

然后跑训练脚本。这是最小可用参数集:

accelerate launch --num_cpu_threads_per_process=2 train_network.py 
  --pretrained_model_name_or_path="./models/sd15_base.safetensors" 
  --train_data_dir="./train_data" 
  --output_dir="./output" 
  --output_name="mystyle_lora" 
  --resolution=512,512 
  --network_module=networks.lora 
  --network_dim=16 
  --network_alpha=8 
  --learning_rate=1e-4 
  --lr_scheduler="cosine" 
  --optimizer_type="AdamW8bit" 
  --max_train_steps=1500 
  --train_batch_size=1 
  --save_every_n_steps=500 
  --mixed_precision="fp16" 
  --save_model_as=safetensors 
  --enable_bucket 
  --cache_latents

预期输出:终端开始刷 steps: 10/1500 loss=0.0823 lr=9.9e-05 这样的日志,loss 从 0.15 左右逐步降到 0.05-0.08 区间并趋于平稳。跑完后 ./output/ 下会生成 mystyle_lora.safetensors,文件大小通常 9-40MB(取决于 network_dim)。把这个文件放进 WebUI 的 models/Lora/ 目录即可在提示词里用 <lora:mystyle_lora:0.8> 调用。

五、配置与调优

network_dim 与 network_alpha

network_dim 是 LoRA 的秩,直接决定模型容量和文件体积。人物/画风推荐 16-32;想学复杂构图或多种元素再用 64-128,但过拟合风险同步上升。network_alpha 一般取 dim 的一半,等于 dim 时训练更"激进"。

显存不够怎么办

按这个顺序加参数:先上 --gradient_checkpointing,再考虑把 --train_batch_size 降到 1、--resolution 降到 512,最后开 --xformers--sdpa。8bit AdamW(--optimizer_type="AdamW8bit")能省下不少优化器状态显存,基本是默认选项。

用 TOML 配置代替长命令行

参数多了以后命令行很难维护。GUI 右上角有「Save config」可以把当前设置导出成 TOML,之后直接:

accelerate launch train_network.py --config_file=./configs/mystyle.toml

这让批量实验和版本管理都轻松很多,建议从 Demo 跑通后就切换到这个模式。

六、常见坑与排错

报错信息原因解决办法
RuntimeError: CUDA out of memory显存不足,通常是 batch size 或分辨率过高--train_batch_size 到 1,加 --gradient_checkpointing,或把分辨率降到 512
No module named 'bitsandbytes'安装时跳过了 bitsandbytes,但配置里用了 AdamW8bit激活 venv 后 pip install bitsandbytes,或把优化器换成 AdamW
torch not compiled with CUDA enabled装成了 CPU 版 PyTorch删掉 venv 重跑 ./setup.sh,或在 venv 里按官网命令重装对应 CUDA 版本的 torch
assertionerror: no images found in train_data目录层级不对,图片没放在 N_概念名 子文件夹里确认结构是 train_data/10_mystyle/img01.png,而不是直接丢在 train_data/

七、下一步

  • 换训练目标:--network_module 换成 lycoris.kohya,可以训练 LoCon / LoHa 等变体,在细节表现上往往优于纯 LoRA。
  • 进阶微调方式:尝试 DreamBooth(train_db.py)或全量微调,理解 LoRA 与完全微调在效果和成本上的取舍。
  • 参数扫描:借助 TOML 配置 + Shell/Python 脚本批量跑不同 learning rate 和 dim 的组合,用固定随机种子和同一组提示词做横向对比,比凭感觉调参靠谱得多。
🚀

AI 项目推荐

AI 绘画
标签
#AI绘画 #LoRA #模型微调 #Stable Diffusion #训练
浏览
👁️ 1
发布日期
2026-09-19