FL Kohya Easy Train
The one-node LoRA trainer that wants you to stop overthinking
If you've bounced off the Kohya config sprawl - and almost everyone has - FL Kohya Easy Train is the entire FL-Trainer pack collapsed into one node. You point it at a folder of images with matching caption files, pick a base checkpoint, type a sample prompt, and hit run. That's the whole workflow. The pack's README calls it "settings that just work," which is marketing-speak that happens to be true: it was built for people who want a good LoRA and don't want to think about network_dim or learning-rate schedules.
It's the flagship of this pack, and it's honest about what it's for. It trains SD 1.5 and SDXL LoRAs only - that's the whole supported universe here. If you're training on a newer architecture, stop reading and go use ai-toolkit or OneTrainer. This is for the huge installed base of SDXL-and-earlier checkpoints that still wants in-ComfyUI training.
How it works
Behind the single node it chains together all the other FL-Trainer nodes internally: it creates the workspace, clones the pinned kohya-ss/sd-scripts, loads your images and captions, writes a dataset config, then launches the actual training as a subprocess. What you get back while it runs is a progress bar inside the node with live inference samples, so you can watch the LoRA actually learning.
The settings it hardcodes are the interesting part, and they're sensible Kohya choices: rank 64 / alpha 32, the networks.lora module, Adafactor optimizer, constant scheduler with caption shuffling, a small noise offset, and a text-encoder LR at half your main LR. It also sets cache_latents and cache_latents_to_disk on - the two biggest speedups for repeat runs. You can't see or change any of that from the node, and that's the point.
Inputs that matter
- train_config_template -
lora_sd1_5orlora_sdxl, and it must match your checkpoint. Picklora_sd1_5with an SD 1.5 base and 512-ish resolution;lora_sdxlwith an SDXL base and higher resolution. Mismatch here is the #1 way to waste a run. - image_directory - a folder containing your images and a same-name
.txtcaption per image (myimg.jpg+myimg.txt). This is the real requirement. Images without a caption are silently skipped - a folder full of uncaptioned images trains nothing. - ckpt_name - dropdown of every checkpoint in your
models/checkpointsfolder. - sample_prompt - what the trainer generates during training so you can judge progress.
- learning_rate -
0.0001default is fine for SD 1.5; SDXL often prefers1e-5–1e-4. This is the one knob worth touching. - epochs, num_repeats, resolution, xformers, lowvram - mostly set-and-forget. Total steps ≈ images × repeats × epochs.
There are no outputs - it's an output node, deliberately. It trains, saves, and you'll find the finished .safetensors in ComfyUI/output/FL_train_workspaces/<lora_name>/output/.
Install
ComfyUI Manager → search "FL-Trainer", or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_FL-Trainer
# restart ComfyUI
First run auto-installs a handful of Python deps and clones sd-scripts, so give it a minute.
Gotchas
- It blocks the queue while training. ComfyUI waits on the training subprocess, so you're not doing anything else on that instance. Cancel via the interrupt button if you need to bail.
- SDXL wants real VRAM - figure ~12GB.
lowvramhelps but slows things down. - Caption quality is your ceiling. 15–25 good images with careful captions beat 100 sloppy ones every time; this node won't save you from a bad dataset.
- The bucket/mixed-resolution path had a reported rough patch back in 2024 (tensor-size errors with bucketing on). If a mixed-size dataset chokes, resize to a consistent size and rerun.
For its narrow lane - SD 1.5/SDXL, in-ComfyUI, zero-config - nothing else this small does the job. It's the one I'd reach for.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_name | STRING | my_lora | — |
| resolution | INT | 512256–2048 | — |
| train_config_template | COMBO | lora_sd1_5 | 2 options: lora_sdxl, lora_sd1_5 |
| num_repeats | INT | 30 | — |
| image_directory | STRING | path/to/images+captions.txt | — |
| ckpt_name | COMBO | 0 options: | |
| sample_prompt | STRING | Sampling prompt here | — |
| xformers | COMBO | disable | 2 options: enable, disable |
| lowvram | COMBO | disable | 2 options: enable, disable |
| learning_rate | FLOAT | 01e-7–0.1 | — |
| epochs | INT | 101–1000 | — |
Outputs (0)
No outputs