Nodes/ComfyUI_FL-Trainer/FL Kohya Easy Train
ComfyUI Node

FL Kohya Easy Train

The one-node LoRA trainer that wants you to stop overthinking

By filliptm·Created 2 years ago·Updated 4 months ago· 178
FL Kohya Easy Train
      lora_namemy_lora
      resolution512
      train_config_templatelora_sd1_5
      num_repeats30
      image_directorypath/to/images+captions.txt
      ckpt_name
      sample_promptSampling prompt here
      xformersdisable
      lowvramdisable
      learning_rate0
      epochs10

      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_5 or lora_sdxl, and it must match your checkpoint. Pick lora_sd1_5 with an SD 1.5 base and 512-ish resolution; lora_sdxl with 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 .txt caption 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/checkpoints folder.
      • sample_prompt - what the trainer generates during training so you can judge progress.
      • learning_rate - 0.0001 default is fine for SD 1.5; SDXL often prefers 1e-51e-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. lowvram helps 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.

      Category🏵️Fill Nodes/Training

      Inputs (11)

      NameTypeDefaultDescription
      lora_nameSTRINGmy_lora
      resolutionINT512256–2048
      train_config_templateCOMBOlora_sd1_52 options: lora_sdxl, lora_sd1_5
      num_repeatsINT30
      image_directorySTRINGpath/to/images+captions.txt
      ckpt_nameCOMBO0 options:
      sample_promptSTRINGSampling prompt here
      xformersCOMBOdisable2 options: enable, disable
      lowvramCOMBOdisable2 options: enable, disable
      learning_rateFLOAT01e-7–0.1
      epochsINT101–1000

      Outputs (0)

      No outputs