kohya_ss:Stable Diffusion训练GUI工具
开源项目bmaltais/kohya_ss,目前获得了12,254个Star:
kohya_ss是基于Gradio开发的图形界面工具,用于Kohya的Stable Diffusion训练脚本。
Stable Diffusion训练支持用户自定义图像生成模型,可对现有模型进行微调,创建独特艺术风格,训练LoRA等专用模型。
该GUI的主要功能包括:
- 提供易用界面,可设置多种训练参数
- 自动生成运行训练脚本所需的CLI命令
- 支持多种训练方式,包括LoRA、Dreambooth、微调、SDXL训练
工具同时支持Linux和macOS系统。Linux支持由社区贡献维护,macOS兼容性可能存在差异。
安装方式
kohya_ss可在本地机器运行,也可通过Colab、Runpod等云方案使用。 如果你的设备配备GPU,且希望获得完整控制权,可选择使用uv或pip在本地安装。 如果设备不符合要求,或偏好浏览器端操作,可使用Colab或Runpod、Novita等付费GPU服务商的方案。 开发者或DevOps用户也可使用Docker部署。
本地安装
本地安装可选择uv或pip两种方式,根据平台和使用习惯选择:
- Linux推荐使用uv
- Linux或Mac可使用pip
- Windows两种方式均支持
uv安装速度更快,依赖隔离更彻底,适合希望减少配置麻烦的用户。 pip是更传统的安装方式,出现问题时更易调试,与部分IDE或Python工具的兼容性更好。 如果不确定选择哪种方式,可先尝试uv,如运行出现问题再切换为pip。
云安装
Colab
无需本地安装,可直接使用Colab notebook进行浏览器端训练。 Colab免费使用,GPU可用性可能存在波动。该notebook由camenduru维护,非原作者开发。 使用过程中遇到问题,可在camenduru的仓库提交反馈。
Runpod、Novita、Docker
这些方案适用于在托管GPU基础设施或容器中运行训练的用户。 Runpod提供现成GPU模板,支持后台训练。 Novita功能与Runpod类似,集成在Novita UI中。 Docker适用于使用容器化环境的开发者或系统管理员。
自定义配置
GUI支持通过config.toml配置文件设置默认路径,可避免每次启动GUI时重复手动选择目录。 config.toml可预填预训练模型、数据集、输出文件夹、LoRA模型等目录的默认路径,简化工作流程。
配置方法如下:
- 在kohya_ss仓库根目录下,找到config example.toml文件,复制并重命名为config.toml。该文件会在GUI启动时自动加载。
- 使用文本编辑器打开config.toml,根据本地目录结构修改对应键的路径。 配置文件使用TOML格式,由key = "value"键值对组成。路径需使用正斜杠,即使在Windows系统下也需遵循该规则,且指定目录需存在于系统中。
config.toml通常包含多个分区,对应不同训练模式或通用设置。常用可配置项包括:
- model_dir:加载基础Stable Diffusion模型的默认目录
- lora_model_dir:保存和加载LoRA模型的默认目录
- output_dir:训练输出(图像、日志、模型 checkpoint)的默认根目录
- dataset_dir:数据集的通用默认目录
- 不同训练标签(如Dreambooth、微调、LoRA等)的专用输入路径
用户也可在启动GUI时通过--config命令行参数指定自定义配置文件路径。
LoRA训练
训练LoRA可使用train_network.py代码,通过一体化GUI即可创建LoRA网络。 创建完成后,安装sd-webui-additional-networks扩展,即可在auto1111中使用生成的LoRA生成图像。 更多LoRA训练选项和高级配置信息,可参考官方LoRA文档。
训练过程样本图像生成
训练过程中支持生成样本图像,用户可通过prompt文件指定生成参数。 prompt文件中,以#开头的行为注释。prompt后可通过--n、--w、--h等选项指定生成图像的参数,包括负提示、宽度、高度、种子、CFG scale、步数等。
故障排查与其他功能
如果使用过程中遇到问题,可参考官方提供的故障排查指南。 Windows用户遇到页面文件相关错误,可尝试增加系统页面文件大小限制。 出现tkinter模块未找到的错误,可尝试重新安装Python 3.10版本。 TESLA V100 GPU上训练LoRA出现利用率问题,可参考对应的故障排查文档获取解决方案。
SDXL训练的详细指导,可参考官方sd-scripts文档及LoRA训练指南中的相关章节。 训练脚本支持masked loss功能,启用需指定--masked_loss选项。该功能目前尚未完全测试,可能存在bug,发现问题可在GitHub提交Issue。
项目也支持多GPU选择、多实例运行等功能。用户可在Accelerate launch标签中设置GPU ID,Linux用户可在不同端口启动多个GUI实例,实现同时运行多个训练任务。 项目欢迎社区贡献,bug报告或功能需求可在GitHub Issues页面提交,代码修改可提交Pull Request。 项目使用Apache License 2.0开源协议,可在LICENSE.md文件中查看详细条款。