Skip to content

打通训练Flux LoRA 的任督二脉

youxiaohanpian
Published date:

kohya_ss官方地址

https://github.com/bmaltais/kohya_ss/tree/master

24G显存可用训练Kontext:

量化模型(比如 FP8、Scale)能不能作为底模来训练 LoRA?

✅ 一句话结论

理论上可以,但效果可能会差,甚至完全训练不了,取决于“量化种类 + 工具支持”是否兼容 LoRA 权重插值。


🔧 什么是量化模型?

量化方式简介特点是否推荐做 LoRA 底模
FP8(float8)8位浮点,通常用于推理优化精度好、兼容性强(如 NVIDIA 最新硬件)✅ 有可能成功,但不稳定
Scale量化(如 GPTQ、AWQ)整体缩放 + 近似替代原始参数,常用于压缩大模型精度损失较大,结构可能被改变❌ 高风险,不推荐

🤖 问题的核心:LoRA 是通过在底模的某些参数上叠加 adapter,这些参数必须是“可训练 / 可插值”的。而很多量化模型的权重结构已被改写,无法直接做 LoRA 训练。


💥 Flux LoRA 训练是否支持量化底模?

目前 Flux 的 LoRA 训练方案是:

❌ 所以:


📌 LoRA 训练的常规底模要求

条件是否必须
支持 float32bf16 训练✅ 强烈推荐
原始网络结构未被破坏(UNet/TextEncoder)✅ 必须
能被 Diffusers / HuggingFace 加载✅ 否则 Kohya/Flux 无法插入层
显存不足时建议使用 --gradient_checkpointing⚠️ 你 16G 还行,但最好打开
需要 patch 权重结构?❌ 避免

🧪 实际测试社区现象


✅ 建议硬件:


🎯 如果你预算吃紧 / 想节省显存?

建议采用:

precision: "bf16" or "fp16"
gradient_checkpointing: true
train_batch_size: 1~2
xformers: true

或者训练 LyCORIS / LoCon 模型替代 LoRA,占用更低。


🚀 Bonus:训练建议 for Flux.1 Dev

如下的 config(适配显卡和模型):


问题:


🌱 1. “需要 patch 权重结构”是什么意思?

在 LoRA 训练框架里(包括 Flux、Kohya、ComfyUI 等):

patch 权重结构 = 把底模的某些层,比如 UNet 的 attention 层,插入一个 LoRA 模块,然后替换成“支持权重更新”的结构。

举个例子:

原始模型可能长这样:

self.attn = Attention(...)

被 patch 后:

self.attn = LoRA_Attention(self.attn, r=8, alpha=32)

这一步叫 patch,是在加载模型的时候做的。

📌 如果你用的是“量化模型”,有时这些层已经不是标准结构了, 插不上 LoRA 层 ➜ 就训练失败。


🧪 fp16bf16 的区别?是不是不算全精度?

对,它们都属于“半精度”,但各自不同:

类型名称精度位数兼容性推荐
fp32全精度浮点32 位兼容最好,显存占用高✅ 训练稳定
fp16半精度浮点16 位(5 指数 + 10 尾数)NVIDIA 支持,精度低⚠️ 有时容易梯度爆炸,,会自动开启梯度缩放
bf16bfloat1616 位(8 指数 + 7 尾数)NVIDIA A 系列 / TPU 原生支持✅ 精度和稳定性更平衡会跳过梯度缩放

简说:

🎯 推荐设置:—mixed_precision=“bf16”,如果不行再退一步 fp16。


🌿 LyCORIS / LoCon 是什么?和 LoRA 有啥区别?

一般我们泛称“LoRA 模型”,但实际上 LoRA 只是低秩适配方法的一种。

LyCORIS 和 LoCon 是它的兄弟分支

名称全称特点用法
LoRALow-Rank Adaptation标准、最常见,训练速度快,兼容性好基础训练,稳定扩展风格
LoConLoRA with Convolution额外 patch 卷积层 ➜ 更强对局部纹理建模适合训练风格化纹理(如 MJ、油画)
LyCORIS多种融合结构(线性、卷积、混合)可调结构,复杂模型训练可压缩参数高级玩法,更灵活但训练慢一点

🧠 LyCORIS ≈ LoRA + 更多结构扩展 比 LoRA 更强,但显存占用略高,适合进阶用户


📐 训练图像尺寸:1024 vs 768,选哪个?

这个问题一语中的。咱们来拆解:

取决于你用的底模分辨率支持:

模型原生分辨率推荐训练图尺寸
SD 1.5 / chilloutmix / anything512 × 512512 最稳定
SDXL1024 × 1024768 ~ 1024 都行,最好不要超过1024
Flux.1 Dev原生支持高分辨率(1024+)✅ 推荐 768 ~ 1024,效果最好

🟢 如果用的是 Flux Dev ,且图片本身清晰度高、风格统一:

🎯 建议训练图像尺寸:1024x1024

条件是:


🧭 总结一下:

问题建议
patch 权重结构是 LoRA 的必要步骤,量化模型不一定能支持插入层结构
fp16 vs bf16推荐 bf16,更稳更兼容,你的 4090 支持
LoRA / LoCon / LyCORIS都属于“轻量微调方法”,LyCORIS 最灵活,LoCon 对局部风格建模好
训练图像尺寸Flux Dev 模型建议 1024,512 太糙、768 是中庸方案

4090 16G 显卡 + Flux.1 Dev 大底模 定制一份训练配置支持:


🧰 配置目标


🗂 文件结构建议

flux-lora-project/
├── train/
│   ├── images/             # 训练用图(jpg/png)
│   ├── captions/           # txt 自动打 tag 文件(推荐使用 wd14 tagger)
├── output/
│   ├── trained_model.safetensors
├── config/
│   └── flux_lora_config.json
├── logs/
├── flux_train.sh           # 可执行 shell 脚本

📄 flux_lora_config.json(适配 Flux Dev 的 LoRA 配置)

{
  "pretrained_model_name_or_path": "/path/to/flux-dev-model",
  "output_dir": "./output",
  "logging_dir": "./logs",
  "train_data_dir": "./train/images",
  "caption_extension": ".txt",

  "resolution": "1024,1024",
  "network_module": "networks.lora",
  "network_dim": 16,
  "network_alpha": 32,

  "train_batch_size": 1,
  "gradient_checkpointing": true,
  "mixed_precision": "bf16",
  "save_precision": "fp16",
  "xformers": true,

  "optimizer_type": "AdamW8bit",
  "learning_rate": 1e-4,
  "lr_scheduler": "cosine_with_restarts",
  "lr_warmup_steps": 100,

  "save_every_n_epochs": 1,
  "max_train_epochs": 10,

  "logging_steps": 20,
  "save_model_as": "safetensors",

  "train_text_encoder": false,
  "shuffle_caption": true,

  "min_bucket_reso": 256,
  "max_bucket_reso": 1024,
  "bucket_reso_steps": 64,
  "cache_latents": true,
  "enable_bucket": true
}

💡 参数说明(重要)

参数建议值说明
network_modulenetworks.lora / networks.locon / networks.lycoris可切换 LoRA 类型
network_dim8 / 16 / 32LoRA 宽度,越高越拟合,8 一般够用
resolution1024x1024匹配 Flux Dev 分辨率上限,视觉质量更好
train_text_encoderfalse默认不训练文本编码器(除非想训练 prompt 敏感度)
mixed_precisionbf16更稳,4090 支持
cache_latentstrue显著加速训练,但首次生成慢一点
enable_buckettrue动态 bucketing,适配图像不同长宽比(仍需统一尺寸更稳)

🏃‍♀️ 训练启动脚本(Kohya 兼容格式)

flux_train.sh

accelerate launch train_network.py \
 --config_file=config/flux_lora_config.json

当然,如果你在用 GUI 工具(比如 Kohya GUILoRA Training Extension for ComfyUI ),可以直接把这些参数一一填入界面。


🧪 进阶建议(可选)

场景设置建议
显存撑不住降低 network_dim 或开 gradient checkpointing
风格不收敛多训练几个 epoch(比如 15~20),降低 learning_rate
想训练 prompt 敏感度设置 "train_text_encoder": true 并减少 text_encoder_lr5e-5

🚀 下一步

只需要:

  1. 下载 Flux Dev 模型(建议 .safetensors 格式)放在 /models/
  2. 把准备好的图放进 /train/images ,运行 tagger 生成 txt 标签
  3. 启动训练!

🥇 炼丹炉(适合训练 LoRA)

🔥 炼丹建议搭配

组件建议选择说明
炼丹炉带 GUI 界面的图形界面 + 内置脚本 + 本地训练兼容性好
底模flux1-dev.safetensors建议使用 .safetensors 版本,注意:路径不能有中文
模型类型LoRA / LoCon / LyCORIS取决于你的训练目标,我建议从 LoRA 起步,再尝试 LyCORIS
精度设置bf16 (推荐) or fp16秋叶包中有 Mixed Precision 选项
图像尺寸1024x1024Flux 模型推荐分辨率,训练更准不发散
优化器AdamW8bit or Lion秋叶包里也可以选 DAdapt(但推荐 AdamW8bit 起手)
tag 工具内置 DeepDanbooru or WD14选一个自动打标签就行,能加速准备流程
batch size1~24090 顶住了就 2,OOM 就降
网络宽度8~16初学用 8 即可,后续可以调高观察拟合能力

🔧 用秋叶包训练 Flux LoRA 简易流程:

  1. 下载秋叶包(最新版) 通常在 B 站或 GitHub,可以配合 sd-webui-kohya 关键词搜。

  2. 替换底模 找到秋叶包里 models/checkpoints/pretrained_model_path 位置,换成你下载好的 flux1-dev.safetensors

  3. 准备训练图 + 标签 图片命名统一 + 每张配 .txt 文件,格式为:

1girl, solo, looking at viewer, detailed eyes, flux-style

图可以提前裁剪成 1024x1024,推荐用 waifu2x 或 PS 批处理。

  1. 打开秋叶 GUI,配置训练参数

    • 模型类型选:LoRA / LyCORIS
    • 网络宽度:8
    • 精度选择: bf16 (如果你的环境支持)
    • 图片路径:指向你的训练集
    • batch size:1~2,根据显存调节
    • epoch:10~20
    • save format: safetensors
  2. 点击开始炼丹 ,耐心等待出锅,观察 loss 曲线。

  3. 将结果拿去 ComfyUI 加载 测试效果!


✅ Bonus:训练完成后,怎么测试 LoRA 是否有用?

<lora:my_flux_lora:1.0>, 1girl, dark background, glowing eyes, dramatic lighting

❓想清楚的几个问题

🎬 视频链接:BV1Xy4y1j7LJ - 【炼丹从零开始】最全 LoRA 教程教学 | 秋叶整合包

目标:训练一个 LoRA 能跑多个 base model,达成:

  1. 写实风格中国风图标
  2. 云纹、火纹等中国风纹样

🧭 一、思维导图(训练流程概览)

mermaid
复制编辑
flowchart TD
  A[准备底模] --> B[选炼丹炉(秋叶包GUI)]
  B --> C[准备素材(图 + 标注)]
  C --> D[配置秋叶GUI(LoRA設定)]
  D --> E[开始训练(监控loss)]
  E --> F[测试LoRA适配性]
  F --> G[调整与再训练]
  G --> H[输出用在不同base model]🧷 二、素材 & 标签模板

1. 素材准备建议

2. 标签(caption)模板

格式:

css
[主题], 中国风, 写实, 红铜色, 锈迹纹理, 雕刻质感, 云纹, 古风

可变元素替换示例:

青铜雕花云纹, 中国风, 写实, 青铜色, 古风图案, 1024x1024

龙形火焰纹, 中国风, 古风纹样, 黑金色调, 整体铺陈, 图案

纯标签建议:


🖥 三、prompt 示例

训练完成后测试 prompt 示例(多个 base model 共用 LoRA):

<lora:chinese_icon:1.0>, 1 logo, 中国风, 青铜浮雕云纹, 高细节, 写实风, 暗金色调, 1024x1024

纹样版:

<lora:chinese_icon:1.0>, seamless Chinese cloud pattern, 古风纹样, 青铜线条, 对称, 无缝贴图

注意引入关键词 "cloud pattern" , "seamless" , "Chinese" , "floating lines" 等。


🔧 四、秋叶 GUI 设置建议

以下是你的训练建议配置截图应包含参数项:

参数项建议值
LoRA 类型networks.lora
network_dim16
network_alpha32
mixed_precisionbf16
resolution1024×1024
train_batch_size1~2
gradient_checkpointing
cache_latents
epochs10~20
learning_rate1e-4
lr_schedulercosine_with_restarts
save_formatsafetensors
base modelflux1-dev.safetensors(GUI路径 replace)

截图时重点展示以上项,方便复用与复查。


🧪 五、训练 & 验证流程

  1. 开始训练 ,观察 loss 是否平稳下降,一般在 2~4 epoch 后有明显质感提升

  2. 导出 .safetensors LoRA 模型。

  3. 三个不同base model 上测试效果:

    • flux1-dev (最佳效果)
    • SDXL
    • Anything v4
  4. 测试 prompt 如上,比较效果是否一致,同一 LoRA 带来的风格质感是否保持。


✍️ 六、持续优化建议


✅ 总结

喂饭级Kontext lora训练教程,奶奶看了都会_哔哩哔哩_bilibili

https://www.bilibili.com/video/BV1xPyQYMELK/?vd_source=1c8cb094f5379f021095253ff5bb43d4

Previous
Particular粒子特效最重要的几个参数搞明白就可以随便玩了
Next
商业认知专题读书笔记