ComfyUI FLUX LoRA微调工作流

摘要:通过本详细指南,你将了解如何准备训练数据、设置工作流程、配置基本参数以及执行训练过程。释放 FLUX AI 模型的全部潜力,并创建与你的愿景完美契合的定制输出。

本文介绍的 ComfyUI FLUX LoRA 训练工作流使你能够使用自己的数据集微调预先存在的 FLUX 模型。

通过本详细指南,你将了解如何准备训练数据、设置工作流程、配置基本参数以及执行训练过程。释放 FLUX AI 模型的全部潜力,并创建与你的愿景完美契合的定制输出。

FLUX LoRA 在 AI 社区中获得了极大的欢迎,尤其是在那些希望使用自己的数据集微调 AI 模型的人中。这种方法允许你毫不费力地将预先存在的 FLUX 模型调整到你独特的数据集,使其高度可定制且高效,适用于广泛的创意工作。

如果你已经熟悉 ComfyUI,那么使用 ComfyUI FLUX LoRA 训练工作流来训练你的 FLUX LoRA 模型将轻而易举。工作流程和相关节点由 Kijai 创建,非常感谢他的贡献!查看 Kijai 的 GitHub 了解更多信息。

ComfyUI FLUX LoRA 训练工作流是一个强大的流程,专为训练 FLUX LoRA 模型而设计。使用 ComfyUI 进行训练具有多种优势,尤其是对于已经熟悉其界面的用户。使用 FLUX LoRA 训练,你可以使用用于推理的相同模型,确保在同一 Python 环境中工作时不会出现兼容性问题。此外,你可以构建工作流程来比较不同的设置,从而增强你的训练过程。本教程将指导你完成在 ComfyUI 中设置和使用 FLUX LoRA 训练的步骤。

在为 FLUX LoRA 训练准备训练数据时,为目标对象提供高质量的图像至关重要。

在此示例中,我们正在训练 FLUX LoRA 模型以生成特定影响者的图像。为此,你需要一组影响者在不同姿势和设置下的高质量图像。收集这些图像的一种方便方法是使用 ComfyUI 一致角色工作流,该工作流可以轻松生成一组图像,这些图像显示同一角色在不同姿势下的表现,同时保持其外观一致。对于我们的训练数据集,我们选择了影响者在不同姿势和设置下的五张高质量图像,确保数据集足够强大,以便 FLUX LoRA 训练能够学习产生一致和准确输出所需的复杂细节。

获取训练数据的过程:

FLUX LoRA 训练数据:

你还可以根据自己的特定需求收集自己的数据集——FLUX LoRA 训练非常灵活,可处理各种类型的数据。

FLUX LoRA 训练工作流由几个关键节点组成,它们协同工作以训练和验证您的模型。以下是主要节点的详细概述,分为三个部分:数据集、设置和初始化以及训练。

数据集部分包含两个基本节点,可帮助你配置和自定义训练数据: TrainDatasetGeneralConfig 和 TrainDatasetAdd。

TrainDatasetGeneralConfig 节点是你在 FLUX LoRA 训练中定义训练数据集的整体设置的地方。此节点可让你控制数据增强和预处理的各个方面。

例如,你可以选择启用或禁用颜色增强,这有助于提高模型在不同颜色变化中概括的能力。同样,你可以切换翻转增强以随机水平翻转图像,从而提供更多样化的训练样本。此外,你还可以选择随机播放与每幅图像相关的字幕,从而引入随机性并减少过度拟合。字幕丢失率允许你在训练期间随机删除字幕,这可以帮助模型对缺失或不完整的字幕变得更加稳健。

TrainDatasetAdd 节点是你指定要包含在 FLUX LoRA 训练中的每个单独数据集的详细信息的地方。

为了充分利用此节点,正确组织训练数据非常重要。使用 RunComfy 的文件浏览器时,将训练数据放在 /home/user/ComfyUI/input/{file-name} 目录中,其中 {file-name} 是你为数据集指定的有意义的名称。

将训练数据放在适当的目录中后,你需要在 TrainDatasetAdd 节点的 image_dir 参数中提供该目录的路径。这会告诉节点在哪里找到你的训练图像。

类标记:

如果你的数据集受益于使用特定的类标记或触发词,你可以在 class_tokens 参数中输入它们。类别标记是附加在每个标题前面的特殊单词或短语,有助于指导模型的生成过程。

例如,如果你正在对各种动物物种的数据集进行训练,则可以使用“狗”、“猫”或“鸟”等类别标记来指示生成的图像中所需的动物。当你稍后在提示中使用这些类别标记时,可以控制希望模型生成的特定方面。

除了 image_dir 和 class_tokens 参数之外, TrainDatasetAdd 节点还提供了其他几个选项来微调你的数据集。你可以设置图像的分辨率(宽度和高度),指定训练的批处理大小,并确定每个时期应重复数据集的次数。

点击这里查看大图

FLUX LoRA Training 的强大功能之一是能够无缝组合多个数据集。在 FLUX LoRA Training 工作流中,有三个 TrainDatasetAdd 节点按顺序连接。每个节点代表一个具有自己独特设置的不同数据集。通过将这些节点链接在一起,你可以创建一个丰富多样的训练集,其中包含来自各种来源的图像和标题。

为了说明这一点,让我们考虑一个场景,你有三个独立的数据集:一个用于猫,一个用于狗,另一个用于熊。你可以设置三个 TrainDatasetAdd 节点,每个节点专用于其中一个数据集。在第一个节点中,你将在 image_dir 参数中指定“猫”数据集的路径,将类标记设置为“猫”,并调整其他参数(如分辨率和批处理大小)以满足你的需求。同样,你将分别为“狗”和“熊”数据集配置第二个和第三个节点。

这种方法允许 FLUX LoRA 训练过程利用各种各样的图像,从而提高模型在不同类别中概括的能力。

3、示例

在我们的示例中,我们仅使用一个数据集来训练模型,因此我们启用一个 TrainDatasetAdd 节点并绕过其他两个。以下是设置方法:

在“设置和初始化”部分,你可以配置 FLUX LoRA 训练的关键组件和参数。此部分包括几个基本节点,它们协同工作以设置你的训练环境。

首先,有 FluxTrainModelSelect 节点,它负责选择在 FLUX LoRA 训练期间将使用的 FLUX 模型。此节点允许你指定四个关键模型的路径:transformer、VAE(变分自动编码器)、CLIP_L(对比语言-图像预训练)和 T5(文本到文本传输转换器)。这些模型构成了 FLUX 训练过程的骨干。

OptimizerConfig 节点对于在 FLUX LoRA 训练中设置优化器至关重要,它决定了模型的参数在训练期间如何更新。你可以选择优化器类型(例如 AdamW、CAME),设置梯度剪裁的最大梯度范数以防止梯度爆炸,并选择学习率调度程序(例如常数、余弦退火)。此外,你可以微调优化器特定的参数,如预热步骤和调度程序功率,并提供额外的参数以进行进一步的自定义。

如果你更喜欢以内存效率和处理大型模型的能力而闻名的 Adafactor 优化器,您可以改用 OptimizerConfigAdafactor 节点。

InitFluxLoRATraining 节点是所有必要组件汇聚以启动 FLUX LoRA 训练过程的中央枢纽。

你需要在 InitFluxLoRATraining 节点中指定的关键事项之一是输出目录,训练好的模型将保存在此目录中。你可以选择 /home/user/ComfyUI/output/{file_name} 作为输出位置。训练完成后,ni 将能够在文件浏览器中查看它。

接下来,你需要设置网络维度和学习率。网络维度决定了 LoRA 网络的大小和复杂性,而学习率控制了模型学习和适应的速度。

另一个需要考虑的重要参数是 max_train_steps。它决定了你希望训练过程运行多长时间,换句话说,你希望模型在完全烘焙之前采取多少步骤。你可以根据您的特定需求和数据集的大小调整此值。一切都是为了找到最佳点,让你的模型学到足够的知识,从而产生令人垂涎的输出!

最后, FluxTrainValidationSettings 节点允许你配置验证设置,以在 FLUX LoRA 训练过程中评估模型的性能。你可以设置验证步骤的数量、图像大小、指导比例和可重复性的种子。此外,你可以选择时间步采样方法并调整 S 形比例和移位参数来控制时间步调度并提高生成图像的质量。

4、训练

FLUX LoRA 训练的训练部分是奇迹发生的地方。它分为四个部分:Train_01、Train_02、Train_03 和 Train_04。每个部分都代表 FLUX LoRA 训练过程中的不同阶段,让您可以逐步完善和改进模型。

让我们从 Train_01 开始。这是初始训练循环发生的地方。本节的主角是 FluxTrainLoop 节点,它负责执行指定步骤数的训练循环。在此示例中,我们将其设置为 250 步,但您可以根据需要进行调整。

训练循环完成后,训练好的模型将传递到 FluxTrainSave 节点,该节点会定期保存模型。这可确保你在训练的不同阶段都有模型的检查点,这对于跟踪进度和从任何意外中断中恢复非常有用。

但训练不仅仅是保存模型。我们还需要验证其性能以了解其表现如何。这就是 FluxTrainValidate 节点的作用所在。它采用训练好的模型并使用验证数据集对其进行测试。该数据集与训练数据分开,有助于评估模型对未见过的示例的推广效果。 FluxTrainValidate 节点根据验证数据生成样本图像,为你提供此阶段模型输出的视觉表示。

为了密切关注训练进度,我们提供了 VisualizeLoss 节点。这个方便的节点可视化了随时间推移的训练损失,让你可以看到模型的学习效果以及它是否正在向好的解决方案靠拢。这就像拥有一位私人教练,他会跟踪你的进度并帮助你保持正轨。

在 Train_02 中,从 FLUX LoRA 训练中的 Train_01 继续,输出将进一步训练额外的指定步数(例如 250 步)。Train_03 和 Train_04 遵循类似的模式,通过更新的连接扩展训练以实现平稳进展。每个阶段都会输出一个 FLUX LoRA 模型,让您可以测试和比较性能。

在我们的示例中,我们选择仅使用 Train_01 和 Train_02,每个运行 250 个步骤。我们暂时绕过了 Train_03 和 Train_04。但你可以根据自己的特定需求和资源随意试验和调整训练部分和步骤的数量。

一旦你拥有 FLUX LoRA 模型,就可以将其纳入 FLUX LoRA 工作流程。用你训练过的模型替换现有的 LoRA 模型,然后测试结果以评估其性能。

在我们的示例中,我们使用 FLUX LoRA 工作流程通过应用 FLUX LoRA 模型并观察其性能来生成更多影响者图像。

点击这里查看大图

来源:小园说科技

相关推荐