kohya_ss:Stable Diffusion 微调的事实标准,LoRA 训练绕不开的 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