Kohya vs OneTrainer for LoRA Training
Choose Kohya_ss when you want deep sd-scripts control, widely shared configuration recipes, and a GUI that exposes a large number of training arguments. Choose OneTrainer when you want a more integrated workflow for concepts, captions, masks, workspaces, automatic backups, TensorBoard, sampling, and exports. Both projects currently support GUI and command-line use, LoRA training, SDXL, and Flux-family training, but they organize the work differently.
OneTrainer is not documented by its maintainers as a Kohya fork. It is an independent AGPL-3.0 project with its own training workflow. Kohya_ss is an Apache-2.0 GUI and CLI built around Kohya's separate sd-scripts project. Neither tool can rescue a weak dataset, and neither has one preset that fits subject, style, SD 1.5, SDXL, and Flux LoRAs. The practical choice is about control versus integration, then disciplined testing after every run.
Key Takeaway
Kohya_ss wins for parameter access, sd-scripts compatibility, and the huge pool of community recipes built around its fields. OneTrainer wins for an integrated training workspace, built-in dataset utilities, resumable backups, and a cleaner project flow.
For a first LoRA, we'd start with OneTrainer if its preset covers the target architecture. For advanced tuning, reproducing an sd-scripts recipe, or using Kohya-specific controls, choose Kohya_ss. OfflineCreator's planned LoRA Studio workflow aims to add more project structure; LocalForge AI remains a separate image-generation product.
For the surrounding workflow, use the LoRA Studio workflow overview, then continue with LoRA training dataset guide when that decision becomes relevant.
Kohya vs OneTrainer at a Glance
| Criterion | Kohya_ss | OneTrainer | Practical winner |
|---|---|---|---|
| Core design | Gradio GUI and CLI around sd-scripts | Independent GUI and CLI training application | Depends on workflow |
| License | Apache 2.0 | AGPL-3.0 | Depends on distribution needs |
| LoRA support | LoRA plus LoHa, LoKr, DreamBooth, fine-tuning, and Textual Inversion | LoRA plus full fine-tuning and embeddings | Kohya for method breadth |
| Current model breadth | README lists SD 1.5/2.x, SDXL, SD3, Flux.1, and newer families | README lists SD 1.5/2.x, SDXL, SD3/3.5, FLUX.1, Flux.2 variants, and newer families | Tie; verify exact architecture |
| Dataset workflow | Flexible folder/config workflows plus separate caption utilities | Concepts, prompt sources, captioning, masks, augmentation, and bucketing in one project | OneTrainer |
| Run organization | Config files, logs, samples, and outputs require your own discipline | Workspaces group backups, samples, and TensorBoard data | OneTrainer |
| Parameter exposure | Dense access to sd-scripts options and generated CLI commands | Broad controls organized around presets and tabs | Kohya |
| Backups and resume | Save states and configs depend on chosen training workflow | Automatic full training backups and documented continuation | OneTrainer |
| Sampling | Prompt-file samples during training | Integrated sampling UI and workspace samples | OneTrainer for convenience |
| Community recipes | Many guides and shared configs use Kohya field names | Smaller but active wiki, Discussions, and presets | Kohya |
| Best fit | Trainers who want exact control and reproducible sd-scripts commands | Trainers who want an integrated end-to-end application | Depends on experience |
Feature presence isn't the whole decision. A checkbox can exist in both tools while the setup, architecture support, defaults, and maintenance status differ. Check the official repository at install time.
The Projects Are Related by Purpose, Not by Fork History
Kohya_ss describes itself as a GUI and CLI for training diffusion models and explicitly points to Kohya's separate sd-scripts repository. Its interface generates the CLI command required to run those scripts and exposes a wide range of arguments.
OneTrainer describes itself as a one-stop solution for diffusion training. Its README links a custom dataset implementation, MGDS, and credits the archived StableTuner project as an inspiration. The official material doesn't identify OneTrainer as a Kohya_ss fork, so calling it one would be unsupported.
This distinction matters for troubleshooting. A fix, option name, preset, or limitation in one project shouldn't be assumed to apply to the other.
Installation and Updates
Kohya_ss currently documents local installation through uv or pip, with separate Windows, Linux, and macOS instructions. It also documents Docker, Colab, and hosted GPU paths. The project recommends uv first for a faster, more isolated environment.
OneTrainer currently requires Python 3.10 or newer and below 3.14. Its automatic path uses install.bat on Windows or install.sh on Linux and macOS, then start-ui.bat or start-ui.sh.
Neither project should be updated casually in the middle of a proven training run. Save the config, note the repository commit or release, and finish the baseline first. Training dependencies change quickly enough that an update can alter speed, memory use, defaults, or supported model paths.
Winner: OneTrainer has the simpler conceptual installation flow. Kohya has more documented environment choices, which is useful for local, container, and hosted setups.
Model and Training Method Support
Both current READMEs list SD 1.5, SDXL, and Flux support. Both also cover model families beyond those three, but a name in a support list isn't proof that every training method, precision, optimizer, or export format behaves identically.
Kohya_ss lists LoRA, LoHa, LoKr, DreamBooth, fine-tuning, Textual Inversion, and LECO concept editing. OneTrainer lists LoRA, full fine-tuning, and embeddings, plus masked training and EMA.
Kohya is the stronger choice when a project depends on a specific sd-scripts feature or network type. OneTrainer covers the mainstream LoRA workflow and adds integrated project tools that reduce context switching.
Winner: Kohya for training-method breadth and direct sd-scripts alignment. Tie for ordinary LoRA work, pending the exact model family.
Dataset and Captioning Workflow
Dataset quality dominates both tools. You still need to remove duplicates, weak images, unwanted watermarks, contradictory examples, and captions that describe the wrong traits.
OneTrainer makes dataset work feel more unified. Concepts can use prompts from same-name text files, image filenames, or a separate multi-line text source. The official feature list includes automatic BLIP, BLIP2, and WD-1.4 captions plus ClipSeg and Rembg masks. Its concept settings also cover augmentation, subdirectories, and prompt sources.
Kohya offers established dataset configuration patterns and captioning utilities in its broader GUI workflow, including WD tagger support. Its strength is flexibility, but users need to understand folder structures, repeats, subset configuration, and architecture-specific data settings.
Automatic captions from either tool need human review. Normalize names, remove hallucinated details, preserve the trigger token, and decide which features should vary. Our dataset and captioning guide covers this process without tying it to one trainer.
Winner: OneTrainer for first-run organization. Kohya for trainers who already have a structured dataset pipeline.
Presets and Parameter Control
Kohya's dense interface is an advantage only when you understand the fields. It exposes the arguments needed for nuanced sd-scripts recipes and can generate the underlying CLI command. That makes a run easier to audit when a guide specifies exact arguments.
OneTrainer uses presets to provide a starting configuration, then organizes input model, output, data, concepts, training, LoRA, sampling, backup, and other settings into a project flow. Presets reduce setup time but don't remove the need to inspect model type, resolution, learning rate, trained components, rank, alpha, precision, and total exposure.
A preset is not scientific evidence. Save it as a baseline, change one variable, and compare with fixed prompts. Copying a preset between SD 1.5, SDXL, and Flux is a common way to waste a run.
Winner: Kohya for experts who need exact parameter access. OneTrainer for users who want a stronger default path through the controls.
Workspaces, Backups, and Reproducibility
OneTrainer's workspace concept is its clearest operational advantage. A workspace stores the backup, sample, and TensorBoard data for one run. Automatic backups can preserve the state needed to continue training.
The catch is important: OneTrainer's official quick start says backups aren't files for Forge, SwarmUI, or other inference tools. You need a model save or converted export for inference.
Kohya can produce repeatable runs through saved configurations, generated commands, logs, sample prompts, and checkpoints. It gives you the pieces, but you must enforce the folder structure and naming discipline yourself.
A reproducible project in either tool needs the final LoRA, configuration, dataset manifest, caption snapshot, base-model hash, repository version, fixed sample prompts, seeds, and evaluation notes.
Winner: OneTrainer for built-in run organization and continuation. Kohya can match it with disciplined external project management.
Sampling and Monitoring
Kohya supports sample generation during training from a prompt file. Its README documents prompt options for negative text, width, height, seed, guidance, and sampling steps. This is enough to build a fixed evaluation grid.
OneTrainer includes a sampling UI and TensorBoard integration, with outputs attached to the workspace. This lowers the friction of checking visual progress while the run continues.
Don't choose a checkpoint from loss alone. Loss can help identify instability, but it doesn't measure prompt flexibility, identity, style strength, leakage, or whether a later checkpoint memorized the dataset.
For either trainer, use the same prompts, seeds, dimensions, sampler, and LoRA weights at every checkpoint. Include a trigger prompt, a variation prompt, a difficult composition, and a no-trigger control.
Winner: OneTrainer for integrated monitoring. Kohya's prompt-file method is equally valid when you already have an evaluation script.
SDXL and Flux Differences
Architecture matters more than trainer choice. SDXL and Flux should not share a generic preset.
Kohya's LoRA resource guide recommends at least 1024×1024 for SDXL, at least 12 GB GPU memory, and UNet-only training to avoid unexpected results from SDXL's dual text encoders. Treat this as a project baseline and test it against your dataset.
OneTrainer's quick start explains resolution, bucketing, mixed precision, component training, and multiple resolutions. Its Flux wiki calls Flux large and slow, recommends LoRA for ordinary training, and gives evolving model-specific guidance. The page explicitly says it is a work in progress.
Use our dedicated SDXL guide and Flux requirements guide after choosing the trainer. They separate architecture decisions from interface navigation.
Winner: Tie. The correct choice depends on which project currently supports the exact architecture, method, and hardware path you need.
Hardware and Memory
Don't choose a trainer based on one screenshot claiming a universal VRAM minimum. Batch size, resolution, precision, optimizer, caching, model format, trained components, and software version all affect memory.
Both tools can reduce pressure through architecture-appropriate settings, but the names and combinations differ. Start with batch size one for a smoke test, close inference applications, and confirm the run completes before scaling up.
SD 1.5 remains the easiest architecture for learning the process. SDXL raises resolution and memory demands. Flux is heavier again and needs its current project documentation.
Winner: Tie. The architecture and configuration dominate; neither interface creates free VRAM.
Output Quality
Neither trainer has an inherent quality button. Given the same architecture, clean dataset, equivalent objective, sensible settings, and stopping point, both can create useful LoRAs.
Differences appear because the workflows encourage different behavior. Kohya makes fine-grained experiments easier when you know which argument to change. OneTrainer makes run organization, backups, and integrated sampling easier, which can improve decision quality.
The biggest quality failures are tool-independent:
- Noisy data: Duplicates and contradictory examples weaken the target.
- Bad captions: Missing triggers or overdescribed permanent traits confuse associations.
- Wrong exposure: Too few steps underfit; too many lock in poses and backgrounds.
- Weak evaluation: Testing one prompt at one LoRA weight hides brittleness.
- Architecture mismatch: A model can save successfully and still be unusable with the intended base.
Winner: Tie. Process quality beats trainer branding.
Common Decision Mistakes
- Choosing by interface alone: A cleaner screen doesn't prove the required model path works.
- Assuming shared settings: Similar field names can have different valid values across architectures and optimizers.
- Calling OneTrainer a Kohya fork: The official project materials don't support that claim.
- Ignoring licenses: Kohya_ss is Apache 2.0 and OneTrainer is AGPL-3.0; base models and datasets have separate terms.
- Skipping a smoke test: A ten-minute pipeline check can catch missing captions and wrong output formats before a long run.
- Comparing uncontrolled outputs: Different seeds and prompts don't show which checkpoint improved.
Next Steps
Start with the overview pillar and the separate dataset and captioning guides. Then choose the dedicated Flux requirements or SDXL guide for model-specific setup. Use the existing local Stable Diffusion setup article to build a separate inference environment and test exports outside the trainer.
Run one short baseline in your chosen tool. Archive its config, samples, model hash, and repository version before changing any parameter.
Who should use what
Use Kohya_ss if:
- You want direct alignment with sd-scripts and community configs built around its arguments.
- You need LoHa, LoKr, DreamBooth, Textual Inversion, or another method explicitly listed by Kohya.
- You already understand dataset configuration and want finer parameter control.
- You prefer generated CLI commands and external experiment organization.
Use OneTrainer if:
- You want concepts, prompt sources, captions, masks, augmentation, samples, backups, and TensorBoard in one application.
- You value clean workspaces and resumable training state.
- You want a preset-led first run without giving up GUI and CLI options.
- You understand that backups are for continuation and exports are for inference.
Our recommendation: Start with OneTrainer for your first conventional LoRA when its current preset supports the target model. Move to Kohya_ss when a proven sd-scripts recipe, specialized network type, or exact argument requires it. If you already have a reliable Kohya workflow, don't switch tools for novelty; improve the dataset and evaluation process first.
