Kohya_ss Flux.1 LoRA 训练完整教程:一次跑通可用的 Flux.1 LoRA
【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss
本文讲清 Kohya_ss Flux.1 LoRA 训练的完整流程:10–50 张图就位、改几处参数、按下 Start,最终产出一个可直接插进生成工作流的 Flux.1 LoRA 文件。
先摆清预期:四份模型资产与显存预估
GUI 里 Flux.1 的全部设置集中在 "Flux.1" 面板,对应源码在 kohya_gui/class_flux1.py。开训前先把四个文件放到磁盘,再把路径填进对应字段:
| 要填的字段 | 放什么文件 | 备注 |
|---|---|---|
| pretrained_model_name_or_path | flux1-dev.safetensors | Flux.1 基础模型 |
| ae(VAE Path) | ae.sft | 解码 latent 与采样 |
| clip_l(CLIP-L Path) | clip_l.safetensors | 选 chroma 模型时不需要 |
| t5xxl(T5-XXL Path) | t5xxl 的 fp16 版 | 预设明确注明 "Use the fp16 version" |
预设文件 presets/lora/flux1D - adamw8bit fp8.json 里这四处都写着 "put the full path to ... here",套用预设唯一要做的,就是把它们替换成真实路径。
Base Model Type 下拉有两项:flux 和 chroma。flux 是标准 Flux.1-dev,需要 CLIP-L;chroma 面向 schnell 系模型,不要 CLIP-L,且 guidance_scale 会自动归零。用 flux1-dev 训练就保持 flux。
显存预期:这套 fp8 基座 + bf16 + batch 1 是省显存组合。想调高分辨率或 batch,显存会跟着涨,动手前先按自己的显卡估一下。
训练数据先行:图片与同名标注的准备
目标人物(或风格)的图 10–50 张,每张图旁边放一个同名 .txt 标注文件。预设里 caption_extension 已是 .txt,图放进 train_data_dir 指到的文件夹即可。
 仓库 test/img 中的 512x512 示例图,是 Flux LoRA 训练数据的常见尺寸
 图片旁的同名 .txt 就是它的标注
标注文本不用讲究,一句英文描述风格加主体即可,仓库示例是 "a painting of a steam punk skull with a gas mask, by darius kawasaki"。
分辨率交给桶机制——它把图片按宽高比缩放进就近的预设档位。预设里 enable_bucket = true、max_resolution = 512,512、bucket_reso_steps = 64、bucket_no_upscale = true,含义是只缩不放、绝不上采样。max_resolution 别自己调高,显存会直接翻倍。
参数只需动这几处:预设加载与关键开关
第一次跑不要手写参数,在 GUI 预设区直接载入 flux1D - adamw8bit fp8 预设,它就是为 fp8 省显存训练准备的。正文真正要理解的只有七处:
- train_batch_size = 1:Flux 的双块(double blocks)体积很大,batch 1 是显存和收敛都成立的组合。
- optimizer = AdamW8bit:优化器状态用 8 位存储,比普通 AdamW 省显存。
- fp8_base = true:基座模型用 8 位精度(fp8,8 位浮点)参与训练,这是预设省显存的核心。
- mixed_precision = bf16:训练精度,与 fp8 基座配套使用。
- gradient_checkpointing = true:用重计算换显存,代价只是多花一点时间。
- learning_rate = 0.0003,network_dim = network_alpha = 16:10–50 张图规模下验证过的搭配。
- max_train_steps = 1000:1000 步足够练出一个可用 LoRA。
其余参数预设已写好,对照这张表确认即可:
| 参数 | 预设值 |
|---|---|
| discrete_flow_shift | 3 |
| timestep_sampling | sigmoid |
| model_prediction_type | raw |
| guidance_scale | 1(GUI 默认是 3.5) |
| flux1_cache_text_encoder_outputs / to_disk | 均 true,缓存文本编码器输出,免去每轮重算,落盘后中断恢复更快 |
| train_blocks | all,改 double / single 可只训部分块、省显存 |
| max_grad_norm | 1,梯度裁剪,防 loss 尖峰 |
| min_snr_gamma / loss_type | 7 / l2 |
启动训练、盯盘与挑出最好的一步
启动共四步:
- 填好并确认四个模型路径
- 加载数据集,确认 train_data_dir 指向图片文件夹
- 把 output_dir 和 output_name 改成自己的
- 点 Start
训练中盯两处:
- Checkpoint(检查点快照):save_every_n_steps = 50,每 50 步落盘一个 safetensors(save_precision = bf16)。最终效果不理想,也能从中间挑最好的一步。
- Loss 与样图:预设 sample_prompts 是一条带 --w 832 --h 1216 等参数的提示词,采样器为 euler。loss 应逐渐下降,样图逐步趋近目标人物,两者同时成立才算方向对。
出问题时按现象查
| 现象 | 第一动作 | 升级动作 |
|---|---|---|
| 训练中途显存爆 OOM | train_blocks 从 all 改成 double 或 single,只训部分块 | 打开 CPU Offload Checkpointing(实验性功能) |
| 训练起不来、报模型加载错误 | 逐个核对四个路径是否为完整绝对路径 | 确认 T5-XXL 是 fp16 版而不是 fp8 版 |
| loss 不降或上下震荡 | learning_rate 降到 0.0001,确认 max_grad_norm = 1 生效 | 把 min_snr_gamma、loss_type 还原成预设值 7 / l2 |
fp8_base + bf16 已是保守方案,多数 OOM 靠减块就能解决。
启动前自检:六项逐条过一遍
- flux1-dev、ae.sft、CLIP-L、T5-XXL(fp16)四个文件就位,路径已填
- 预设已加载,LoRA_type 显示为 Flux1
- 显存开关打开:fp8_base、gradient_checkpointing、文本编码器缓存(含落盘)
- train_data_dir 有 10–50 张图,每张配同名 .txt
- output_dir、output_name 已改成自己的
- 样图 prompt 已写,TensorBoard 已打开
【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考