批量大小 30 AdamW 对比 批量大小 1 Adafactor SDXL 训练对比

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

我昨天在 OneTrainer Discord 上看到一位经验非常丰富的用户评论。他说 AdamW 比 Adafactor 更好。所以我询问了他的配置,你可以在这里看到:https://gist.github.com/FurkanGozukara/5e9ee7d2b2070abb9a173dab342e1221

我使用 Massed Compute 上的 RTX A6000 GPU,并按照此配置进行了 AdamW 训练。我使用了批量大小 30,因为我每次训练有 15 张常规图像,每个 epoch 有 15 张注册图像。因此,每个 epoch 总共有 30 张图像,所以批量大小为 30,一步即可训练一个 epoch。它消耗了 47 GB 显存。

下面分享了实验中使用的训练数据集——这是一个故意糟糕的数据集,因为如果它能在糟糕的数据集上工作,那么在更好的数据集上会工作得更好——这是机器学习的一般规则——“垃圾进,垃圾出”。

为什么这个数据集很糟糕?它有重复的背景,重复的衣服,缺乏姿势。

然后我用我在下面帖子中分享的配置,对相同的数据集和概念进行了训练。训练名称为默认。

https://www.patreon.com/posts/96028218

如果你不是我的 Patreon 支持者,可以在下面的教程视频中看到完整的配置

https://youtu.be/0t5l6CP9eBg

 

由于 AdamW 使用批量大小 30,我将其训练到 750 个 epoch,因为更大的批量大小意味着更低的学习率效果。此外,它的学习率比平常低,并且没有训练文本编码器。每 150 个 epoch 保存一个检查点。在 Massed Compute 上的 RTX A6000 上,一个步骤的持续时间为 11.5 秒。所以一步训练一个 epoch。观看上面的教程,你就会明白 15 张训练图像 + 15 张注册图像。

我使用 Patreon 上以及上述 YouTube 教程中分享的最佳配置,训练了 150 个 epoch。每 30 个 epoch 保存一个检查点。一步需要 2 秒,因此在 Massed Compute 上的 RTX A6000 上每个 epoch 需要 60 秒(出于某种原因比平时慢)。因此,两次训练的总训练时间几乎相等。

AdamW 比 Adafactor 占用更多显存。速度取决于批量大小、xformers 等。在我的训练中,我不使用 xformers,并且我使用批量大小 1。因为更小的批量大小意味着更好的质量。因此,如果你需要速度,可以增大批量大小,直到达到最大速度且不再增加。

以下是结果。我的结果在相似度方面远远优于对手。你可以在下面的链接中看到完整的网格对比文件:https://huggingface.co/MonsterMMORPG/Generative-AI/resolve/main/AdamW_vs_Adafactor.png

网格文件大小为 321 MB,分辨率为 11458 像素 x 22772 像素。它比较了 20 个特殊提示 + 1 个通用提示,以便你可以查看模型是否完全训练过度。

下面是上述对比的 4 个 JPG 格式网格。

在训练 450 个 epoch 后,AdamW 训练变得完全训练过度,其相似度仍然远远落后于 Adafactor 训练。我仍需再次寻找比我研究的配置更好的配置。我进行了超过 150 次完整训练才找到我的最佳配置 :)

Adafactor 通常是一个动态学习率优化器,但我以一种特殊的静态方式使用它。我的配置非常强大,允许你或多或少地进行训练,直到训练过度或欠训练。

我也提供咨询服务。你可以加入我们的 Discord 频道并给我发消息,或者在 LinkedIn 上找到我。

Patreon 独家帖子索引 以便轻松找到我们的脚本,Patreon 脚本更新历史 以查看哪些脚本收到了哪些更新,以及你可以用于任何任务的惊人Patreon 特别生成脚本列表

加入 Discord 获取帮助、聊天、讨论,并告诉我你的 Discord 用户名以获取你的特殊等级:SECourses Discord

请同时关注、星标并 Fork 我们的 Stable Diffusion & 生成式 AI GitHub 仓库,并加入我们的 Reddit 子版块,并在 领英 (我的真实个人资料) 上关注我

 

社区

注册登录 评论