SimpleTuner 是一个专门用于训练优化的一组实验脚本的存储库。该项目旨在简化代码,重点是使代码易于阅读和理解。此代码库作为共享的学术练习,欢迎做出贡献。
设计理念
- 简单性:旨在为大多数用例提供良好的默认设置,因此需要的修补工作较少。
- 多功能性:设计用于处理各种图像数量 – 从小型数据集到大量集合。
- 尖端功能:仅包含已证明有效的功能,避免添加未经测试的选项。
教程
在开始学习本教程之前,请完整阅读此自述文件,因为它包含您可能需要首先了解的重要信息。
如需在不阅读完整文档的情况下快速入门,可以使用快速入门指南。
对于内存受限的系统,请参阅 DeepSpeed 文档,该文档介绍了如何使用 🤗Accelerate 配置 Microsoft 的 DeepSpeed 以实现优化器状态卸载。
特征
- 多 GPU 训练
- 图像和字幕功能(嵌入)会提前缓存到硬盘驱动器上,以便训练运行得更快,内存消耗更少
- 宽高比:支持各种图像大小和宽高比,支持宽屏和纵向训练。
- 炼油机 LoRA 或 SDXL 的完整 u-net 培训
- 大多数模型都可以在 24G GPU 上训练,甚至可以在较低的基础分辨率下训练到 16G。
- 使用小于 16G VRAM 的 PixArt、SDXL、SD3 和 SD 2.x 的 LoRA 训练
- DeepSpeed 集成允许在 12G VRAM 上训练 SDXL 的全 u-net,尽管速度非常慢。
- 量化 LoRA 训练,使用低精度基础模型或文本编码器权重来减少 VRAM 消耗,同时仍允许 DreamBooth。
- 可选的 EMA(指数移动平均)权重网络,用于抵消模型过拟合并提高训练稳定性。注意:这不适用于 LoRA.
- 直接从兼容 S3 的存储提供商处进行训练,无需昂贵的本地存储。(使用 Cloudflare R2 和 Wasabi S3 测试)
- 仅适用于 SDXL 和 SD 1.x/2.x,完整的 ControlNet 模型训练(不是 ControlLoRA 或 ControlLite)
- 用于轻量级、高质量扩散模型的专家培训组合
- Webhook 支持更新,例如。包含您的训练进度、验证和错误的 Discord 频道
- 与 Hugging Face Hub 集成,实现无缝模型上传和漂亮的自动生成模型卡。
Flux.1
包括对 Flux.1 的初步培训支持:
- 使用优化方法进行低损耗训练
- 保留开发模型的蒸馏质量
- 或者,将 CFG 重新引入模型,并以牺牲推理速度为代价来提高其创造力。
- LoRA 或通过 DeepSpeed ZeRO 进行全面调优
- 尚不支持 ControlNet 训练
- 训练 Schnell 或 Dev 模型
- 使用或用于节省大量内存来量化基础模型
--base_model_precision
int8-quanto
fp8-quanto
PixArt Sigma
SimpleTuner 与 PixArt Sigma 进行了广泛的培训集成 – 600M 和 900M 型号都可以轻松加载。
- 不支持文本编码器训练,因为 T5 非常庞大。
- LoRA 和完全调整都按预期工作
- 尚不支持 ControlNet 训练
- 两阶段 PixArt 培训支持(请参阅:MIXTURE_OF_EXPERTS)
请参阅 PixArt 快速入门指南以开始训练。
Stable Diffusion 2.0 & 2.1
众所周知,Stable Diffusion 2.1 在微调过程中会遇到困难,但事实并非如此。SimpleTuner 的相关功能包括:
- 仅训练文本编码器的后续层
- 在终端时间步长上强制执行零 SNR,而不是偏移噪声,以获得更清晰的图像。
- 在训练过程中使用 EMA(指数移动平均线)来确保我们不会“炸毁”模型。
- 能够在多个数据集上进行训练,每个数据集具有不同的基本分辨率,例如。同时提供 512px 和 768px 图像
Stable Diffusion 3
- 像往常一样支持 LoRA 和完全微调。
- ControlNet 尚未实现。
- 尚不支持某些功能,例如分段时间步长选择和强制长提示加权。
- 参数已经过优化,以获得最佳结果,并通过从头开始的 SD3 模型训练进行验证
请参阅 Stable Diffusion 3 快速入门以开始使用。
wai Kolors
基于 SDXL 的模型,使用 ChatGLM(通用语言模型)6B 作为其文本编码器,使隐藏维度大小增加了一倍,并大大提高了提示嵌入中包含的局部细节级别。
Kolors 支持几乎与 SDXL 一样深,但不包括 ControlNet 训练支持。
github: bghira/SimpleTuner: A general fine-tuning kit geared toward diffusion models. (github.com)