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

我一直在使用 OneTrainer 对我相对较差的数据集进行 SDXL 微调测试。我的训练数据集故意设置得很差,以便您能轻松收集更好的数据集并超越我的结果。我的数据集之所以差,是因为它缺乏表情、不同距离、角度、不同服装和不同背景。
测试中使用的基础模型是 Real Vis XL 4:https://huggingface.co/SG161222/RealVisXL_V4.0/tree/main
以下是使用的训练数据集,共 15 张图像
本文中分享的所有图像均未经过精挑细选。它们是使用 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 分钟完整剪辑)中公开展示的略好一些
我比较了批量大小的影响以及它们与学习率的关系。但由于批量大小通常对公司有用,我不会在这里给出确切细节。但我可以说批量大小 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 关)
使用正则化(也称为分类)图像与不使用正则化图像
完整网格在此处: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 微调时,质量差异非常显著
损失权重函数比较
我比较了 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)
VAE 覆盖与使用嵌入式 VAE
我们已经知道自定义模型使用的是最佳固定 SDXL VAE,但我仍然想测试一下。正如预期,结果没有任何区别。
示例案例
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 倍)
我还测试了梯度检查点(Gradient Checkpointing)的效果,结果如预期,没有任何区别。
旧版最佳配置 vs 新版最佳配置
根据所有发现,这里是旧版最佳配置与新版最佳配置的比较。这是针对 15 张训练图像(如上所述)和每个 epoch 1 倍正则化图像(如上所述)的 120 个 epoch 的结果。
完整网格:https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/old%20best%20vs%20new%20best.jpg
示例案例(左侧是旧版最佳,右侧是新版最佳)