使用fluxgym轻松进行flux lora模型训练


flux lora模型训练

视频链接

还在准备中 …

资源

链接:https://pan.quark.cn/s/2b619b26b655

里面包含了

  • fluxgym整合包
  • 训练所需的模型文件
  • 图片素材(方便快速上手体验)
  • 图片裁剪工作流、lora效果XY表对比工作流

安装预启动

  • 下载资源并解压整合包(压缩解压工具推荐 7-zip ,下载地址 https://www.7-zip.org 开源的就是最好的🥰)

  • 将模型移动到models文件夹中,最后的目录结构如下

    ├─models|
            |
            ├─clip
            │      clip_l.safetensors
            │      t5xxl_fp16.safetensors
            ├─unet
            │      .gitkeep
            │      flux1-dev.sft
            └─vae
                    ae.sft
    

    如果之前已经下载过flux模型,可以参考 https://www.zwenooo.link/posts/published/windows-link/ 进行模型复用

  • 回到fluxgym的根目录下,点击start.bat启动程序(启动前需要关闭科学上网,如果没开请忽略)

  • 出现 http://127.0.0.1:7860/ 表示启动成功,点击进入fluxgym,界面如下:

    在这里插入图片描述

训练

Step 1. LoRA Info

  • The name of your LoRA

    • lora名字(只能英文)
    • 要求唯一
  • Trigger word/sentence

    • 触发词/或者句子

    • 如果是单个特征训练,直接固定写触发词就好了,或者加一些视角描述。比如我这里训练的图像是一只熊,另外我需要他带有特殊的标记那这里我就填

      zwen_bear, 我有尝试过这里的逗号加不加都可。特别是不带有描述的时候,可以直接写触发词。带有描述的时候可以尝试把触发词带入到自然描述语言中,比如:The frontal shot of the zwen_bear(zwen_bear的正面照)

    • 如果是复杂特征训练,触发词是需要带上逗号的,比如让ai学习一种绘画风格,此时我们需要对图片进行打标,需要触发词和标签文本分割开来,后面step 2.Dataset 会介绍到打标动作。

  • Base model

    • 选择flux-dev
  • VRAM

    • 显存,根据显卡能力选择;我使用的4060ti 16G,所以我这里为了保险选了12G。
  • Repeat trains per image(默认10次)

    • 每张图重复训练的次数
  • Max Train Epochs

    • 最大训练轮次(默认是16轮)
    • 比如我有16张图,16张图训练完了就叫做一轮。
  • Expected training steps

    • 预期的培训步数
    • 当图片数据集上传后,这个数值会被自动算出来。
    • 预期的培训步数 = 每张图重复训练的次数 * 最大训练轮次 * 图片数量
  • Sample Image Prompts (Separate with new lines)

    • 采样图像提示词,多个用新行分割
    • 用于训练过程中的生图提示词
  • Sample Image Every N Steps(默认0)

    • 每N步采样图像
    • 训练过程中,每多少步采样一次图像,方便你看到训练效果,图像的提示词为刚刚上面填的那个。
  • Resize dataset images(默认512*512)

    • 调整数据集图像的大小
    • 即使我们上传的图片大小规律不一,他也会统一帮我们裁切的指定的尺寸。

Step 2. Dataset

  • 上传数据集,要求是4 ~ 30张

    • 可以发现,每张图的Caption都被自动填上了触发词
  • 打标签(提示词反推)

    • 前面提到过打标签是根据训练的目的来的,如果是单一特征,其实就需要一个提示词就好,当然能够手动调整触发词融入到自然语言中效果是更好的

      如果是复杂特征训练,则需要使用提示词反推工具来帮助我们进行图片打标,比如fluxgym就自带了Florece-2
      在这里插入图片描述

Step 3. Train

不过在点击Start training之前,大家可以检查一下下面的参数是否正确,主要看里面的路径以及模型名字是否正确。

点击Start training之后就是漫长的等待了。提供一个参考,我的 4060ti 16G 训练16张512*512的图片,一共2560步,耗时约4个小时。

在这里插入图片描述

其它高级参数

可以发现在下方还有一个Advanced options ,展开之后里面有各种密密麻麻的参数,粗略的数了一下有164个😵‍💫。

这个fluxgym的作者非常贴心的将常用的参数放在了前面,下面我们也介绍下前面几个参数,对于其他参数有兴趣的小伙伴可以自行查阅资料进行探索。

Seed (种子)

  • 作用: 种子用于初始化随机数生成器,确保实验的可重复性。通过设置相同的种子,每次运行代码时生成的随机数序列都是相同的,从而保证实验结果的一致性。
  • 示例值: 42
  • 解释: 在这个例子中,种子被设置为42,这意味着每次运行代码时,随机初始化、数据打乱等操作都会产生相同的结果。

Number of Workers (工作线程数)

  • 作用: 这个参数指定了数据加载时使用的工作线程数。更多的线程可以加快数据加载速度,尤其是在数据集较大时。然而,线程数过多可能会导致内存占用过高或系统资源竞争。
  • 示例值: 2
  • 解释: 在这个例子中,数据加载器将使用2个工作线程来并行加载数据。

Learning Rate (学习率)

  • 作用: 学习率控制模型参数在每次更新时的步长。较大的学习率可能导致训练不稳定,较小的学习率可能导致训练速度过慢或陷入局部最优。
  • 示例值: 8e-4
  • 解释: 在这个例子中,学习率被设置为0.0008,这是一个相对较小的学习率,适合精细调整模型参数。

Save every N epochs (每N个周期保存一次)

  • 作用: 这个参数指定了每隔多少个训练周期(epoch)保存一次模型。保存模型可以用于后续的评估、继续训练或部署。
  • 示例值: 4
  • 解释: 在这个例子中,模型将每训练4个周期保存一次。比如最大轮次填16,则会每4轮保存一次,最终会输出4个模型。

Guidance Scale (引导尺度)

  • 作用: 这个参数通常用于生成模型(如扩散模型)中,控制生成过程中对条件信息的依赖程度。较高的引导尺度会使生成结果更符合条件信息,但可能导致生成结果的多样性降低。
  • 示例值: 1
  • 解释: 在这个例子中,引导尺度被设置为1,表示对条件信息的依赖程度较低。

效果效果

横轴: lora名字(我们一共训练16轮,每4轮保存一次,因此存在四个模型)

纵轴: lora强度

原图(16张)

在这里插入图片描述

提示词 1

zwen_bear ,A cozy scene of a zwen_bear sitting comfortably in a forest cabin, reading a thick book. The bear is wearing reading glasses, deeply engrossed in the pages. A warm fire crackles in the stone fireplace, casting a soft glow on the wooden walls. There are shelves filled with books around the room, and a fluffy rug beneath the bear's paws. Outside the window, you can see snow gently falling, adding to the peaceful atmosphere.

译文:
zwen_bear,一只zwen_bear舒适地坐在森林小屋里,读着一本厚厚的书的惬意场景。熊戴着老花镜,全神贯注地看着书。温暖的炉火在石头壁炉中噼啪作响,在木质墙壁上投射出柔和的光辉。房间里有摆满了书的书架,熊掌下面有一张毛绒绒的地毯。窗外,可以看到雪花轻轻飘落,增添了宁静的气氛。

在这里插入图片描述

提示词 2

zwen_bear,A curious zwen_bear sitting in a lush meadow, surrounded by colorful wildflowers, with a book in its paws. The bear looks serene, wearing a small hat, reading under the shade of a large oak tree. Sunlight filters through the leaves, creating dappled patterns on the ground. Birds can be seen flying overhead, and a gentle breeze rustles the leaves. The bear's expression is thoughtful, lost in the world of its book, while a nearby stream softly babbles in the background.

译文:
zwen_bear,一只好奇的zwen_bear坐在郁郁葱葱的草地上,周围是五颜六色的野花,爪子里拿着一本书。这只熊看起来很安详,戴着一顶小帽子,在一棵大橡树的树荫下看书。阳光透过树叶,在地面上形成斑驳的图案。可以看到鸟儿在头顶上飞翔,微风吹得树叶沙沙作响。熊的表情若有所思,沉浸在书的世界里,而附近的小溪在背景中轻声潺潺。

在这里插入图片描述

提示词 3

zwen_bear,zwen_bear and the girl are hugging.

译文
zwen_bear,zwen_bear和那个女孩在拥抱。

在这里插入图片描述

写在最后

不管是在图像还是语音的训练中,高质量的数据集和准确的标签对模型的训练效果至关重要。对于普通玩家来说,与其过早纠结于参数调优,不如先将精力放在数据集的整理上。当效果不理想或遇到瓶颈时,再进一步查阅资料,调整参数或优化模型。

### 使用 FluxLoRA 进行机器学习模型训练 #### 准备环境与工具 为了能够顺利地使用 FluxLoRA 来进行模型训练,首先需要准备好相应的开发环境。这通常意味着要安装 Python 及其必要的库文件,比如 PyTorch 或 TensorFlow 等深度学习框架。对于特定于 Flux 的情况,则需按照官方文档指导完成 Julia 编程语言及其依赖项的设置。 #### 加载预训练模型并应用LoRA微调 当准备就绪之后,可以从 Hugging Face Hub 下载预先训练好的基础模型作为起点[^2]。接着利用 LoRA 技术对该模型实施低秩适配(low-rank adaptation),即只更新部分参数而非整个网络结构中的所有权重值。这种方法不仅提高了效率而且减少了过拟合的风险。 ```python from peft import LoraConfig, get_peft_model import torch.nn as nn model = ... # Load your base model here. config = LoraConfig( r=8, lora_alpha=32, target_modules=["q", "v"], lora_dropout=0.05, ) peft_model = get_peft_model(model, config) ``` #### 构建数据集用于训练过程 构建适合当前任务的数据集至关重要。如果目标是创建像“黑神话悟空”这样的角色图像生成器,则应收集大量与此主题相关的高质量图片样本,并将其整理成可用于训练的形式。这些数据应当被划分为训练集、验证集以及测试集三大部分以便后续评估模型性能[^3]。 #### 开始训练流程 一旦上述准备工作全部完成后就可以启动实际的训练环节了。此阶段涉及到定义损失函数(loss function)、优化算法(optimizer algorithm)以及其他超参的选择。值得注意的是,在每次迭代过程中都要保存好最佳版本的模型副本至指定路径下以供将来部署或进一步改进之用[^1]。 ```python output_dir = "./ai-toolkit/output" for epoch in range(num_epochs): ... if best_loss > current_loss: best_loss = current_loss checkpoint_path = f"{output_dir}/best_model.pth" torch.save(peft_model.state_dict(), checkpoint_path) ```
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值