Kohya的图形用户界面
这个仓库主要提供了一个用于Kohya的Stable Diffusion训练器的Gradio图形用户界面。通过社区贡献,它还支持Linux操作系统。目前macOS的支持还不够理想,但在条件允许的情况下可能可以使用。
该图形界面允许你设置训练参数,并生成和运行所需的命令行指令来训练模型。
目录
🦒 Colab
这个Colab笔记本不是由我创建或维护的,但看起来运行良好。源代码可以在这里找到:https://github.com/camenduru/kohya_ss-colab。
我要感谢camendutu的宝贵贡献。如果你在使用Colab笔记本时遇到任何问题,请在他们的仓库中报告。
安装
Windows
Windows 前置要求
要在Windows系统上安装必要的依赖项,请按照以下步骤操作:
-
- 在安装过程中,请确保选择将Python添加到'PATH'环境变量的选项。
-
安装Git。
Windows 安装步骤
要设置项目,请按照以下步骤操作:
-
打开终端并导航到所需的安装目录。
-
通过运行以下命令克隆仓库:
git clone --recursive https://github.com/bmaltais/kohya_ss.git
-
进入
kohya_ss
目录:cd kohya_ss
-
运行以下其中一个安装脚本:
对于只安装了python 3.10.11的系统:
.\setup.bat
对于安装了多个Python版本的系统:
.\setup-3.10.bat
在accelerate配置步骤中,除非你知道你的硬件需要其他设置,否则请使用配置过程中建议的默认值。GPU的VRAM大小不会影响使用的值。
可选:CUDNN 8.9.6.50
以下步骤是可选的,但会提高NVIDIA 30X0/40X0 GPU用户的学习速度。这些步骤可以实现更大的训练批量大小和更快的训练速度。
- 运行
.\setup.bat
并选择2. (可选)安装cudnn文件(如果你想使用最新支持的cudnn版本)
。
Linux 和 macOS
Linux 前置要求
要在Linux系统上安装必要的依赖项,请确保满足以下要求:
-
确保预先安装了
venv
支持。你可以在Ubuntu 22.04上使用以下命令安装:apt install python3.10-venv
-
按照此链接中提供的说明安装CUDA 11.8 Toolkit。
-
确保你的系统上安装了Python 3.10.9或更高版本(但低于3.11.0)。
Linux 安装步骤
要在Linux或macOS上设置项目,请执行以下步骤:
-
打开终端并导航到所需的安装目录。
-
通过运行以下命令克隆仓库:
git clone --recursive https://github.com/bmaltais/kohya_ss.git
- 进入
kohya_ss
目录:
cd kohya_ss
- 如果遇到权限问题,通过运行以下命令使
setup.sh
脚本可执行:
chmod +x ./setup.sh
- 执行以下命令运行安装脚本:
./setup.sh
注意:如果需要额外选项或关于runpod环境的信息,可以使用setup.sh -h
或setup.sh --help
显示帮助信息。
安装位置
Linux上的默认安装位置是脚本所在的目录。如果在该位置检测到之前的安装,安装将在那里继续。否则,安装将回退到/opt/kohya_ss
。如果/opt
不可写,回退位置将是$HOME/kohya_ss
。最后,如果前面的选项都不可行,安装将在当前目录进行。
对于macOS和其他非Linux系统,安装过程将尝试根据脚本运行的位置检测之前的安装目录。如果没有找到之前的安装,默认位置将是$HOME/kohya_ss
。你可以在运行安装脚本时使用-d
或--dir
选项指定自定义安装目录来覆盖此行为。
如果选择使用交互模式,accelerate配置屏幕的默认值将是"This machine"、"None"和剩余问题的"No"。这些默认答案与Windows安装相同。
Runpod
手动安装
要安装Runpod所需的组件并运行kohya_ss,请按以下步骤操作:
-
选择Runpod pytorch 2.0.1模板。这很重要。其他模板可能无法工作。
-
SSH进入Runpod。
-
运行以下命令克隆仓库:
cd /workspace
git clone --recursive https://github.com/bmaltais/kohya_ss.git
- 运行安装脚本:
cd kohya_ss
./setup-runpod.sh
- 运行GUI:
./gui.sh --share --headless
或者如果你通过runpod配置直接暴露7860端口,则使用:
./gui.sh --listen=0.0.0.0 --headless
- 连接到安装过程完成后显示的公共URL。
预构建的Runpod模板
要从预构建的Runpod模板运行,你可以:
-
点击https://runpod.io/gsc?template=ya6013lj5a&ref=w18gds2n打开Runpod模板。
-
在所需主机上部署模板。
-
部署后,通过HTTP 3010连接到Runpod以访问kohya_ss GUI。你还可以通过HTTP 3000连接到auto1111。
Docker
为GPU支持准备Docker
Windows
安装Docker Desktop、CUDA Toolkit、NVIDIA Windows Driver后,确保Docker使用WSL2运行,你就准备就绪了。
这里是官方文档以供进一步参考。 https://docs.nvidia.com/cuda/wsl-user-guide/index.html#nvidia-compute-software-support-on-wsl-2 https://docs.docker.com/desktop/wsl/use-wsl/#gpu-support
Linux, OSX
如果尚未安装NVIDIA GPU驱动程序,请安装。 https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html
按照此指南安装NVIDIA Container Toolkit。 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
我们的Dockerfile设计
- 要求所有训练数据存储在
dataset
子目录中,该目录挂载到容器的/dataset
。 - 请注意,文件选择器功能不可用。相反,你需要手动输入文件夹路径和配置文件路径。
- TensorBoard已从项目中分离。
- Docker镜像中不包含TensorBoard。
- "启动TensorBoard"按钮已隐藏。
- TensorBoard从一个独立的容器启动如此处所示。
- 浏览器不会自动启动。你需要手动打开浏览器并导航到http://localhost:7860/和http://localhost:6006/
- 此Dockerfile设计为易于丢弃。你可以随时丢弃容器并使用新的代码版本重新启动。
使用预构建的Docker镜像
git clone --recursive https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
docker compose up -d
要更新系统,执行docker compose down && docker compose up -d --pull always
本地Docker构建
[!重要]
递归克隆Git仓库以包含子模块:
git clone --recursive https://github.com/bmaltais/kohya_ss.git
git clone --recursive https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
docker compose up -d --build
[!注意]
构建镜像可能需要长达20分钟才能完成。
要更新系统,切换到新的代码版本并使用docker compose down && docker compose up -d --build --pull always
重新构建
如果你在Linux上运行,这里有一个限制较少的替代Docker容器端口可用。
ashleykleynhans runpod docker构建
在runpod上运行时,你可能想使用以下仓库:
- 独立Kohya_ss模板: https://github.com/ashleykleynhans/kohya-docker
- Auto1111 + Kohya_ss GUI模板: https://github.com/ashleykleynhans/stable-diffusion-docker
升级
要将你的安装升级到新版本,请按照以下说明操作。
Windows升级
如果有新版本可用,你可以通过从项目的根目录运行以下命令来升级你的仓库:
- 从仓库拉取最新更改:
git pull
- 运行安装脚本:
.\setup.bat
Linux和macOS升级
要在 Linux 或 macOS 上升级安装,请按照以下步骤操作:
-
打开终端并导航到项目的根目录。
-
从存储库拉取最新更改:
git pull
-
刷新并更新所有内容:
./setup.sh
启动 GUI 服务
要启动 GUI 服务,您可以使用提供的脚本或直接运行 kohya_gui.py
脚本。使用下列命令行参数来配置底层服务。
--listen: 指定要监听连接 Gradio 的 IP 地址。
--username: 设置身份验证的用户名。
--password: 设置身份验证的密码。
--server_port: 定义运行服务器监听器的端口。
--inbrowser: 在网络浏览器中打开 Gradio UI。
--share: 共享 Gradio UI。
--language: 设置自定义语言
在 Windows 上启动 GUI
在 Windows 上,您可以使用位于根目录的 gui.ps1
或 gui.bat
脚本。选择适合您偏好的脚本,并在终端中运行,提供所需的命令行参数。以下是一个示例:
gui.ps1 --listen 127.0.0.1 --server_port 7860 --inbrowser --share
或
gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser --share
在 Linux 和 macOS 上启动 GUI
要在 Linux 或 macOS 上启动 GUI,运行位于根目录的 gui.sh
脚本。提供所需的命令行参数如下:
gui.sh --listen 127.0.0.1 --server_port 7860 --inbrowser --share
自定义路径默认值
该存储库现在提供了一个名为 config.toml
的默认配置文件。这个文件是一个模板,您可以根据需要进行自定义。
要使用默认配置文件,请按照以下步骤操作:
- 从存储库的根目录复制
config example.toml
文件到config.toml
。 - 用文本编辑器打开
config.toml
文件。 - 根据您的需求修改路径和设置。
这种方法允许您轻松调整配置,以适应您的特定需求,打开 GUI 中支持的每种文件夹/文件输入的所需默认文件夹。
运行 GUI 时,您可以指定 config.toml(或您喜欢的任何其他名称)的路径。例如:./gui.bat --config c:\my_config.toml
LoRA
要训练 LoRA,您目前可以使用 train_network.py
代码。您可以使用全能 GUI 创建 LoRA 网络。
创建 LoRA 网络后,您可以通过安装此扩展使用 auto1111 生成图像。
训练期间的样本图像生成
例如,提示文件可能如下所示:
# 提示 1
masterpiece, best quality, (1girl), in white shirts, upper body, looking at viewer, simple background --n low quality, worst quality, bad anatomy, bad composition, poor, low effort --w 768 --h 768 --d 1 --l 7.5 --s 28
# 提示 2
masterpiece, best quality, 1boy, in business suit, standing at street, looking back --n (low quality, worst quality), bad anatomy, bad composition, poor, low effort --w 576 --h 832 --d 2 --l 5.5 --s 40
以 #
开头的行是注释。您可以在提示后使用 --n
等选项来指定生成图像的选项。可以使用以下选项:
--n
:直到下一个选项的负面提示。--w
:指定生成图像的宽度。--h
:指定生成图像的高度。--d
:指定生成图像的种子。--l
:指定生成图像的 CFG 比例。--s
:指定生成的步骤数。
提示权重如 ( )
和 [ ]
是有效的。
故障排除
如果遇到任何问题,请参考以下故障排除步骤。
页面文件限制
如果遇到与页面文件相关的 X 错误,您可能需要增加 Windows 中的页面文件大小限制。
找不到名为 tkinter 的模块
如果遇到指示找不到模块 tkinter
的错误,请尝试在系统上重新安装 Python 3.10。
TESLA V100 上的 LORA 训练 - GPU 利用率问题
问题摘要
在 TESLA V100 上训练 LORA 时,用户报告 GPU 利用率低。此外,难以指定默认以外的 GPU 进行训练。
潜在解决方案
- GPU 选择: 用户可以在设置配置中指定 GPU ID 以选择所需的 GPU 进行训练。
- 提高 GPU 负载: 使用
adamW8bit
优化器并增加批量大小可以帮助实现 70-80% 的 GPU 利用率,而不超过 GPU 内存限制。
SDXL 训练
本节的文档稍后将移至单独的文档中。
掩码损失
每个训练脚本都支持掩码损失。要启用掩码损失,请指定 --masked_loss
选项。
该功能尚未完全测试,可能存在错误。如果发现任何问题,请提出问题。
ControlNet 数据集用于指定掩码。掩码图像应为 RGB 图像。R 通道中像素值 255 被视为掩码(仅对具有掩码的像素计算损失),0 被视为非掩码。像素值 0-255 转换为 0-1(即像素值 128 被视为损失的一半权重)。有关数据集规范的详细信息,请参阅 LLLite 文档。
更改历史
请查看发布信息。