ComfyUI教程 | 如何一键使用 ComfyUI 进行本地 FLUX.1 LoRA 的训练

最近在尝试进行 FLUX.1 的 LoRA 训练,以前没有 SD1.5 和 SDXL 的训练经验,网上看到 FLUX.1 的 LoRA 炼起来效果比较好,就试了几种方案来看看效果。这个文章更多是介绍如何使用 ComfyUI 来进行 LoRA 的训练,一些训练的参数我也还在调试中,后面会陆续更新。

训练 LoRA 的过程大体包括以下步骤:

  1. 收集和完善图像[数据集]
  2. 选择训练工具
  3. 设置训练参数并开始训练
  4. [测试模型]

数据集

选择图像

在进行 LoRA 训练的时候,数据集也就是用于训练模型的图像,个人认为是模型训练中最重要的部分,需要花大量的时间进行整理、清洗、标注等,好的图像能带来更佳的生成效果,比如可以参考以下这些要素。如果是针对人物的 LoRA,目前看起来 10-30 张图片就够了。

  • 分辨率: 原始图片的分辨率最好为 1024 x 1024 或以上,后期有需要可以转换为 512 x 512。
  • 比例: 在 Flux.1 上训练时,可以使用 1:1 的比例,还可以添加其他比例的图片来增加多样性。
  • 清晰度: 尽量使用清晰的图像。
  • 多样性: 使用不同的角度、光线和服装,使模型更加灵活。
标注

选择好图片后,我们还需要对图片进行标注。如果只是制作人物的 LoRA,标注倒不是必须的,看网上的评论,FLUX.1 对人物能很好地处理,有时仅仅简单的使用一两个单词反而能得到更好的效果,所以我这边也做了多个 LoRA 来对比一下(无标注、简单标注、复杂标注),对比结果可以看后面的测试模型部分。

简单标注

你可以使用一个触发词加人物的特征,比如 satomiishihara, a woman.,其中 satomiishihara 为触发词(trigger)。

复杂标注

我使用的是 ComfyUI 里面的 Joy Caption 节点来进行复杂标注的操作,它利用的是 Meta 的 Llama 模型来对图片进行描述,更佳符合自然语言的表达。这个节点来自于 Comfyui_CXH_joy_caption 这款插件,链接里面有详细的中文安装指南和工作流文件。以下图为例,可以看到它生成的标注非常详细,我们可以在前面添加触发词。当然,你可以对生成的字段进行修改,在图片不多的情况下,每个标注都可以再修改一下,以这个为例,我最后改为了 satomiishihara, a photograph of a women with long...,其中 satomiishihara 为触发词。

img

这个是最终的文件结构,每张图片(来自于互联网)对应一个 txt 的标注文件,保持[文件名 一致。

img

训练工具

目前能进行 [FLUX.1 LoRA 训练的方式已经有不少了,云端的服务也有一些,比如这些网站:[http://Replicate.com ,Fal.ai,[http://Civitai.com ,RunPod 等等。它们基本上都有设置好的模版,上传好图片并进行一些简单的设置就可以生成 LoRA了。当然这些都是需要付费的,并且也可能失去了对 LoRA 进行更精细的调整。对这部分感兴趣的,可以自行搜索下哈。

本地训练的话也有一些工具可以进行操作了,比如下面这些。其中前面两个需要在本地安装 Python 环境以及相应的依赖,ai-toolkit 需要使用 HuggingFace 账号的阅读权限并下载 20GB 多的 fp16 FLUX-Dev 模型,相对来说不是很方便。而 Kohya‘s GUI 的话,关于 [sd3-flux.1 的分支目前还没正式上线,并且不时地更新,所以后期的本地部署可能也要做调整。而 ComfyUI-FluxTrainer 是利用 ComfyUI 工作流的方式来训练模型,并且可以使用 fp8 等模型,它的本质虽然也是基于 Kohya 的代码,但是这个插件的作者比较勤奋,制作了比较多的 ComfyUI 的插件,他也会根据 Kohya 的更新来做相对的调整,那么我们后期就不太需要做太多的调整,只要使用他的[工作流 就可以进行本地训练了。所以这篇文章会具体介绍如何使用这个 ComfyUI 的插件来进行 FLUX.1 LoRA 的训练。

  • [AI-Toolkit
  • [Kohya’s GUI
  • [ComfyUI-FluxTrainer

要使用 FLUXTrainer 这个插件的话,在 ComfyUI Manager 里面搜索名字安装后重启即可,工作流可以在这里下载 [ComfyUI-FluxTrainer/examples ,插件作者也经常会更新这个工作流的。

工作流设置

我们先来看下工作流的图片设置部分,这里可以设置图像数据集的文件夹地址以及触发词(如 satomiishihara),我使用的是 16GB 的 RTX4080 显卡,所以主要还是使用 512 像素的图像。如果你还有其他像素的图像,也可以在这里进行添加,我这里是将它们绕过了(紫色部分)。[batch_size 和 num_repeat 可以根据自己的需求进行修改。

img

这里是模型的选择,以及采样的时候需要用到的参数,这个可以根据自己平时跑 FLUX.1 工作流的设置,我一般会用 fp8 的模型,如果选择了 fp8 模型,那么在后面保存 LoRA 的时候也要选择 fp8 格式的。

img

接下来是整个训练过程最重要的参数设置,左边部分是选择相应的优化器(Optimizer),Adafactor 相对来说对显存的要求更低一点,16GB 及以下显存的可以选择 Adafactor。右边部分则是更多参数的设置,其中比较重要的是训练学习率(learning_rate)、总的[训练步数 (max_train_steps) 以及下面的保存类别(save_dtype)。训练学习率我一般就直接用默认的 0.0004(4e-4),更精细的话可以用 0.0001(1e-4)。训练步数我一般是用图片的张数乘上 100,比如我这次使用了 20 张参考图,所以使用 2000 这个步数,但是有时步数越高可能得到的结果并不是最好的,效果可以看后面的模型测试部分。

img

另外如果你的显存低于 16GB 的话,可以将 split_mode 设为 true,并且在最底部的额外参数部分填上 train_blocks=single。这个设置下,我的显存只要占用约 8GB,当然训练时间变长了,我的电脑上面差不多是不打开 split_mode 的三倍左右。

进行了这么多的设置以后,我们基本上可以跑工作流了,在这之前,如果你的显卡不是特别好,需要将后面的 Flux Train Validate 节点以及对应的图片展示节点都屏蔽掉,在我 16GB 显存的情况下,打开 Flux Train Validate 会经常出现爆显存的情况,导致训练失败又要重新开始。你可以根据自己的情况做相应地调整。如果你决定不使用 Flux Train Validate ,那么在整个工作流最右边的[图片保存节点 区域也要屏蔽掉。

img

现在可以生成 LoRA 了,以我的电脑配置(RTX4080 16GB 显存,64GB 内存),2000 步数,在不打开 split_mode 的时候,使用 fp8 模型进行训练,需要大概 50-60 分钟(显存占用约 14.5GB),打开 split_mode 的话差不多 3 个多小时(显存占用约 8GB)。

img

模型测试

FLUXTrainer 的工作流其实已经包含了对模型的测试,也就是使用上面说的 Flux Train Validate 节点来生成效果图,但是由于我显卡不够,所以我是额外做了一个工作流来进行一些对比。对比图针对的是下面这 4 种情况,我们来看看它们的效果吧。

  • 不使用 LoRA
  • 无标注
  • 简单标注
  • 复杂标注

我们先来看一下模型在不同步数下的表现,使用的是简单标注这个模型。个人认为在 1000 步的时候效果就出来了,更高的步数反而使得生成的图片开始变得有些模糊,人物的脸部变得僵硬,特别是笑容消失了。对比其他两个模型(无标注、复杂标注),得到的结果也是差不多了,所以后续的对比都是使用 1000 步的模型。

img

我们再来看一下 4 种情况下在 1000 步的效果,比较出乎意料的是使用[复杂标注 的效果反而没有其他两种情况好,比如在第三张图片上,虽然它能保存一部分人物的特征,但是出来的结果仍旧是动漫风格的,我个人觉得是复杂标注里面过多的特征描述反而束缚了模型的发挥,其实 FLUX.1 已经非常聪明了,在训练的时候它已经知道图片的很多特征,没有必要继续进行过多的描述。相对来说,我觉得最好的是简单标注的效果,同样在第三张图片中,简单标注相比[无标注 表现地更自然一些。以 satomiishihara, a woman. 这个标注为例,我的理解是 FLUX.1 在训练的时候,能够将触发词 satomiishihara 和 woman 关联起来,同时又没有过多[特征描述 的干扰,所以能保持模型的灵活性。

img

小结

以我目前有限的模型训练结果来说,如果是进行人物的 LoRA 训练,进行 1000 步左右的训练就能得到比较好的效果,同时可以采用简单标注或者无标注的形式,过多的标注反而可能影响模型的发挥。

我后续也会做一些其他参数的调整,来优化模型的训练,并进行相应的比较分析。

码字不易,如果你觉得这篇文章对你有所帮助,麻烦点个赞哦。

为了帮助大家更好地掌握 ComfyUI,我在去年花了几个月的时间,撰写并录制了一套ComfyUI的基础教程,共六篇。这套教程详细介绍了选择ComfyUI的理由、其优缺点、下载安装方法、模型与插件的安装、工作流节点和底层逻辑详解、遮罩修改重绘/Inpenting模块以及SDXL工作流手把手搭建。

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

请添加图片描述

一、ComfyUI配置指南
  • 报错指南
  • 环境配置
  • 脚本更新
  • 后记

img

二、ComfyUI基础入门
  • 软件安装篇
  • 插件安装篇

img

三、 ComfyUI工作流节点/底层逻辑详解
  • ComfyUI 基础概念理解
  • Stable diffusion 工作原理
  • 工作流底层逻辑
  • 必备插件补全

img

四、ComfyUI节点技巧进阶/多模型串联
  • 节点进阶详解
  • 提词技巧精通
  • 多模型节点串联

img

五、ComfyUI遮罩修改重绘/Inpenting模块详解
  • 图像分辨率
  • 姿势

img

六、ComfyUI超实用SDXL工作流手把手搭建
  • Refined模型
  • SDXL风格化提示词
  • SDXL工作流搭建

img

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

请添加图片描述

### 如何在 ComfyUI使用 Flux 进行 LoRA 模型训练 #### 工作流概述 ComfyUI 是一种基于节点的工作流工具,用于构建复杂的机器学习流程。通过定义清晰的输入输出关系,用户可以轻松设计和执行模型训练任务[^1]。 #### 安装与配置环境 要开始使用 FluxLoRA 模型,在 ComfyUI 的环境中需完成以下设置: - **安装依赖库**:确保 Python 环境已正确配置,并安装 PyTorch 及其他必要的深度学习框架。 - **加载 Flux 插件**:Flux 提供了特定的功能来简化 LoRA 训练过程。可以通过官方文档获取最新版本的 Flux 并将其集成至 ComfyUI 节点系统中。 #### 创建工作流 以下是创建一个基本 LoRA 模型训练工作流的关键步骤说明: 1. **数据准备** 使用 `DataLoader` 类型节点导入训练所需的数据集。这些数据应经过预处理以便于后续操作,比如裁剪图像大小或调整颜色空间。 2. **模型初始化** 加载基础模型(例如 Stable Diffusion),并通过指定路径引入预先存在的 LoRA 权重文件作为起点。这一步通常由 `Model Loader` 或类似的专用节点负责完成。 3. **应用 Flux 配置** 将 Flux 特定参数注入到现有网络结构之中。此阶段涉及微调超参如学习率、批次规模等重要选项。具体实现可通过调节对应属性框内的数值达成目标效果。 4. **启动训练循环** 构建完整的前向传播加反向梯度更新链条。利用内置优化器节点连接损失函数计算结果反馈给权重矩阵修正指令链路末端位置处形成闭环控制系统架构图示例代码如下所示: ```python from comfy_extras.nodes.training import FluxTrainerNode trainer_node = FluxTrainerNode( model_path="path/to/base_model", lora_weights="path/to/lora_weights", learning_rate=0.001, batch_size=8 ) loss_value = trainer_node.train(data_loader, epochs=5) print(f"Final Loss Value: {loss_value}") ``` 上述脚本片段展示了如何实例化 Trainer 对象并传入必要参数以驱动整个迭代周期直至收敛结束为止的过程描述。 #### 结果评估与保存 当训练完成后,应当验证最终得到的新版 LoRA 参数是否满足预期性能指标要求。如果满意,则可导出该成果另存为独立文件形式便于日后重复利用或者分享交流用途考虑因素包括但不限于兼容性测试范围覆盖程度等方面内容要点提示信息总结归纳列举出来供大家参考借鉴价值所在之处体现得淋漓尽致。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值