SDXL 微调的 20 个新测试及其结果(获得并发布了更好的工作流程)

社区文章 发布于 2024 年 8 月 13 日

image/png

我一直在使用 OneTrainer 对我相对较差的数据集进行 SDXL 微调测试。我的训练数据集故意设置得很差,以便您能轻松收集更好的数据集并超越我的结果。我的数据集之所以差,是因为它缺乏表情、不同距离、角度、不同服装和不同背景。

测试中使用的基础模型是 Real Vis XL 4:https://huggingface.co/SG161222/RealVisXL_V4.0/tree/main

以下是使用的训练数据集,共 15 张图像

image/png

本文中分享的所有图像均未经过精挑细选。它们是使用 SwarmUI 生成的网格。头部通过 segment:head - 0.5 denoise 自动修复。

完整 SwarmUI 教程:https://youtu.be/HKX8_F1Er_w

训练模型如下所示

https://huggingface.co/MonsterMMORPG/batch_size_1_vs_4_vs_30_vs_LRs/tree/main

如果您是公司,并且想访问模型,请给我留言

BS1

BS15_scaled_LR_no_reg_imgs

BS1_no_Gradient_CP

BS1_no_Gradient_CP_no_xFormers

BS1_no_Gradient_CP_xformers_on

BS1_yes_Gradient_CP_no_xFormers

BS30_same_LR

BS30_scaled_LR

BS30_sqrt_LR

BS4_same_LR

BS4_scaled_LR

BS4_sqrt_LR

最佳

Best_8e_06

Best_8e_06_2x_reg

Best_8e_06_3x_reg

Best_8e_06_no_VAE_override

Best_Debiased_Estimation

Best_Min_SNR_Gamma

Best_NO_Reg

基于以上所有实验,我更新了我们最好的配置,可以在这里找到:https://www.patreon.com/posts/96028218

它比下面这个杰作 OneTrainer 完整教程视频(133 分钟完整剪辑)中公开展示的略好一些

https://youtu.be/0t5l6CP9eBg

我比较了批量大小的影响以及它们与学习率的关系。但由于批量大小通常对公司有用,我不会在这里给出确切细节。但我可以说批量大小 4 在缩放学习率下表现良好。

以下是我获得的其他值得注意的发现。您可以在此帖子中找到适合提示网格的测试提示:https://www.patreon.com/posts/very-best-for-of-89213064

查看上述帖子的附件(test_prompts.txt, prompt_SR_test_prompts.txt),以查看 20 个不同的独特提示,用于测试您的模型训练质量以及是否存在过拟合。

所有对比完整网格 1 (12817x20564 像素):https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/full%20grid.jpg

所有对比完整网格 2 (2567x20564 像素):https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/snr%20gamma%20vs%20constant%20.jpg

使用 xFormers 与不使用 xFormers

xFormers 开 vs xFormers 关完整网格:https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/xformers_vs_off.png

xformers 确实会影响质量,并略微降低质量

示例部分(左侧为 xformers 开,右侧为 xformers 关)

image/png

使用正则化(也称为分类)图像与不使用正则化图像

完整网格在此处:https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/reg%20vs%20no%20reg.jpg

这是影响最大的部分之一。未使用正则化图像时,质量显著下降

我使用的是来自此处的 5200 张真实 Unsplash 正则化图像数据集:https://www.patreon.com/posts/87700469

正则化图像数据集示例,所有图片都经过预处理,具有完美的裁剪,并包含所有长宽比和尺寸

正则化图像关闭与开启的示例

左侧使用 1 倍正则化图像(每个 epoch 15 张训练图像 + 15 张从我们拥有的 5200 张正则化图像数据集中随机选择的正则化图像)——右侧不使用正则化图像,仅使用 15 张训练图像

在 OneTrainer 微调时,质量差异非常显著

image/png

损失权重函数比较

我比较了 min SNR gamma 与 constant 与 Debiased Estimation。我认为表现最好的是 min SNR Gamma,其次是 constant,最差的是 Debiased Estimation。这些结果可能因工作流程而异,但对于我的 Adafactor 工作流程而言就是如此

以下是完整网格比较:https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/snr%20gamma%20vs%20constant%20.jpg

以下是示例案例(左侧为 min SNR Gamma,右侧为 constant)

image/png

VAE 覆盖与使用嵌入式 VAE

我们已经知道自定义模型使用的是最佳固定 SDXL VAE,但我仍然想测试一下。正如预期,结果没有任何区别。

完整网格:https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/vae%20override%20vs%20vae%20default.jpg

示例案例

image/png

1 倍、2 倍、3 倍正则化/分类图像比例测试

由于使用真实正则化图像能提供更优异的结果,我决定测试如果使用 2 倍或 3 倍正则化图像会怎样。

这意味着每个 epoch 使用 15 张训练图像和 30 张正则化图像或 45 张正则化图像。

我觉得 2 倍的正则化图像略微好一点,但可能不值得额外花费时间。

完整网格:https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/1x%20reg%20vs%202x%20vs%203x.jpg

示例案例(1 倍 vs 2 倍 vs 3 倍)

image/png

我还测试了梯度检查点(Gradient Checkpointing)的效果,结果如预期,没有任何区别。

旧版最佳配置 vs 新版最佳配置

根据所有发现,这里是旧版最佳配置与新版最佳配置的比较。这是针对 15 张训练图像(如上所述)和每个 epoch 1 倍正则化图像(如上所述)的 120 个 epoch 的结果。

完整网格:https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/old%20best%20vs%20new%20best.jpg

示例案例(左侧是旧版最佳,右侧是新版最佳)

新版最佳配置:https://www.patreon.com/posts/96028218

image/png

社区

写得很好,
在 Onetrainer 中,正则化集似乎正在取代主数据集,也许应该将正则化概念的权重损失设置为非常低的数字,例如 0.1?我实际发生的是,使用正则化图像(大约 3k 1:1 比例,但我尝试过更少),我的模型慢慢漂移,直到变成另一个人。感谢您的关注。

@Audi777 多谢。抱歉回复迟了。假设你训练了 10 张图片 100 个 epoch,那么你进行了 1000 步。我建议采用 1:1 的比例,所以你需要 1000 张不同的正则化图片。

顺便说一下,这适用于 SD 1.5 和 SDXL,但不适用于 FLUX

注册登录 以评论