CLI tool
bghira/SimpleTuner avatar
bghira/SimpleTuner

SimpleTuner: a multi-model fine-tuning kit for diffusion training pipelines

A general fine-tuning kit geared toward image/video/audio diffusion models.

2,923 stars294 forksPythonAGPL-3.0

At a glance

What is it?
SimpleTuner is an AGPL-3.0 Python training kit for image, video and audio diffusion models, with a web UI, CLI and a multi-user server mode. It is broad rather than minimal, and its licence and server features are the two things to check before committing.
Who is it for?
Adopt SimpleTuner if you need one training pipeline across several diffusion model families, or if you want its multi-user server with worker orchestration and quota enforcement. Do not adopt it if you only ever train one architecture and want the smallest possible dependency surface, or if AGPL-3.0 obligations are incompatible with how you ship your product.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 9 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap SimpleTuner fills: one training loop for many diffusion architectures

Fine-tuning diffusion models usually starts as a per-model effort. Each new architecture arrives with its own training script, its own caption handling, its own caching scheme, and its own assumptions about how images are batched. SimpleTuner positions itself against that fragmentation. The README describes it as a general fine-tuning kit geared toward image, video and audio diffusion models, and the model table lists families from ACE-Step and Auraflow through Flux and Stable Diffusion derivatives. The stated design philosophy is simplicity, with good defaults for most use cases so less tinkering is required, and a rule that only features with proven efficacy are added. That last point is a claim about curation, not a guarantee, and it is the kind of statement that only holds until the next release adds something experimental. The target user is an engineer or researcher who already knows what LoRA, LyCORIS and full fine-tuning mean, and who wants the dataset plumbing handled once rather than rewritten per model. A secondary audience is teams running shared GPU capacity, which the README addresses with a separate multi-user server section.

What the training pipeline actually does: caching, bucketing and offload

The mechanism visible in the documentation is a cache-first training loop. Image, video, audio and caption embeddings are written to disk before training, so the expensive encoder passes do not repeat every epoch. Aspect bucketing groups samples by resolution and aspect ratio instead of forcing every image through a single resize, which is what makes mixed-size datasets usable without cropping everything square. On top of that sit the memory controls: DeepSpeed and FSDP2 integration for optimiser, gradient and parameter sharding, context parallel attention, gradient checkpointing, and optimizer state offload. The README states that most models are trainable on a 24G GPU and many on 16G with optimisations. That is a capability statement, not a benchmark, and the actual ceiling depends on which model family and which sharding path you pick. The v4.9.0 release notes mention torch compile speedup, a MegaCache import/export feature, NextLat, Explorative Modeling and block swap optimisations, so the caching and memory layers are still moving between releases. Training can also read from cloud storage, with Cloudflare R2 and Wasabi S3 named, which matters if your dataset is too large to stage locally.

Model families and the licence boundaries inside them

SimpleTuner does not ship weights, so the licence of the base model is a separate question from the licence of the tool. The README's model table makes this explicit by adding a commercial use column. ACE-Step at 3.5B is Apache-2.0 and marked commercial-use yes. Auraflow at 6B is Apache-2.0 and yes. Anima is listed under the CircleStone Labs Non-Commercial License v1.2 with commercial use marked no for the model, though outputs are allowed. That distinction between model licence and output licence is the kind of detail most training tools leave to the user, and having it in a table is useful. The table is also incomplete in the material supplied here: it is truncated mid-row after Boogu-Image, so the full set of supported families and their terms cannot be confirmed from what is available. Treat the table as a starting point and check the current version in the repository before you plan a commercial deployment around a specific architecture.

Getting it running: the documented entry points

There are three documented paths, and they are not equivalent. The README points to a new web UI tutorial at documentation/webui/TUTORIAL.md and a class command-line tutorial at documentation/TUTORIAL.md, and it explicitly asks that you read the README first because it contains information you need before either. For a manually configured run without the web interface, documentation/QUICKSTART.md is the entry point. Memory-constrained setups are directed to documentation/DEEPSPEED.md, which explains using Hugging Face Accelerate to configure Microsoft DeepSpeed for optimiser state offload. DTensor sharding and context parallelism are covered in documentation/FSDP2.md, describing the FullyShardedDataParallel v2 workflow. Multi-node training is handled in documentation/DISTRIBUTED.md, which the README says adapts the install and quickstart configurations for multi-node runs and for datasets numbering in the billions of samples. Two concrete configuration keys appear in the README: report_to and push_to_hub, both described as opt-in flags that are the only paths by which data leaves your machine, alongside manually configured webhooks. Custom experiment tracking uses a drop-in accelerate.GeneralTracker placed in simpletuner/custom-trackers, activated with --report_to=custom-tracker --custom_tracker=<name>. The README does not reproduce the full install command in the material available here, so the exact package installation step should be read from the install guide in the repository rather than assumed.

The multi-user server mode and what it assumes about your infrastructure

The most consequential part of the README is the section labelled multi-user and enterprise features, which describes a full training platform rather than a training script. Worker orchestration registers distributed GPU workers that connect to a central panel and receive jobs over SSE, with both ephemeral cloud-launched and persistent always-on worker types. Authentication covers LDAP and Active Directory or OIDC providers including Okta, Azure AD, Keycloak and Google. There are four default roles (Viewer, Researcher, Lead, Admin) with what the README counts as 17 or more granular permissions, and resource rules using glob patterns to restrict configs, hardware or providers per team. Quotas enforce cost ceilings daily and monthly, job concurrency and submission rate limits at org, team or user scope, with actions of block, warn or require approval. A five-level job queue runs from Low to Critical with fair-share scheduling and starvation prevention. There are approval workflows, SMTP/IMAP email notifications, scoped API keys with expiration, and audit logging with chain verification. This is a lot of surface area, and it is presented as free and open source, forever. The honest reading is that SimpleTuner is two products in one repository: a trainer, and a self-hosted training control plane. If you only want the trainer, you are still carrying the code and the conceptual weight of the platform.

Where SimpleTuner is the wrong tool

The first limitation is scope creep in the other direction. A project that supports image, video and audio models, plus a web UI, plus a multi-tenant server, cannot also be the smallest possible dependency graph. If your requirement is to fine-tune one specific architecture with the fewest moving parts, a single-model training script will be easier to audit and easier to pin. The second limitation is the abstraction layer itself. Aspect bucketing, disk caching and sharded optimiser states all introduce indirection between your dataset and the gradient update. When a run produces bad samples, you are debugging SimpleTuner's pipeline as well as your data. The README's own emphasis on reading the full documentation before starting either tutorial is a signal about that complexity. The third is the hardware claim. The statement that most models train on 24G and many on 16G is qualified by with optimisations, and the optimisations in question (DeepSpeed, FSDP2, offload) are the ones that change throughput and add configuration failure modes. A 16G card running an offloaded optimiser is not the same experience as a 24G card running without offload, and the README does not quantify the difference. The fourth is the licence, covered below.

How it differs from single-model trainers such as kohya-ss/sd-scripts

The natural comparison is kohya-ss/sd-scripts, the widely used Stable Diffusion training repository. The difference is architectural rather than cosmetic. sd-scripts is organised around Stable Diffusion variants and a collection of Python entry scripts invoked with command-line arguments; its model coverage follows the SD lineage. SimpleTuner is organised as a general kit with a model abstraction, a web UI, a job queue and a server mode, and its model table spans families outside the SD line, including ACE-Step, Auraflow and Anima. That breadth is the point: adding a new architecture is meant to be a matter of extending the kit rather than writing a new trainer. The cost is that SimpleTuner asks you to learn its configuration model, its caching layer and, if you use them, its server concepts. sd-scripts asks you to learn a set of scripts and flags. Neither is strictly better; they optimise for different things. If you are training SDXL LoRAs and nothing else, the narrower tool has less between you and the weights. If you are moving between Flux, video models and audio models on shared hardware, the abstraction earns its keep.

Maintenance, release cadence and the AGPL-3.0 question

SimpleTuner is licensed AGPL-3.0. That is a copyleft licence with a network clause, and it is materially different from the Apache-2.0 and MIT licences common in this space. If you modify SimpleTuner and let users interact with it over a network, the AGPL's source-availability obligation is the thing your legal team will want to examine. Training a model with the tool is not the same act as modifying and serving the tool, but the boundary is factually specific to your deployment and I am not giving legal advice here; get it reviewed. On maintenance, the release history shows a steady cadence: v4.9.0 on 30 August 2026 with torch compile speedup, MegaCache import/export, NextLat, Explorative Modeling and block swap optimisations, then v4.9.1 on 1 September described as optimisations and bugfixes, then v4.9.2 on 7 September described as minor bugfixes and QoL. Three releases in roughly a week and a half. That pace means you should pin a version for reproducible training runs rather than tracking main, because a caching or compile change between v4.9.0 and v4.9.2 can alter both speed and memory behaviour on the same config. It also means documentation can lag the code; the README's feature list is long enough that some entries are likely ahead of or behind the shipped behaviour.

Editorial conclusion

Adopt SimpleTuner if you need one training pipeline across several diffusion model families, or if you want its multi-user server with worker orchestration and quota enforcement. Do not adopt it if you only ever train one architecture and want the smallest possible dependency surface, or if AGPL-3.0 obligations are incompatible with how you ship your product. Before you start, verify the feature-compatibility table in documentation/QUICKSTART.md for your exact model, check the hardware requirements section against your GPU, and confirm which of the optimiser offload paths (DeepSpeed or FSDP2) your cluster can actually run.

Official sources

  1. bghira/SimpleTuner on GitHub
  2. Issues
  3. License: AGPL-3.0
  4. README
  5. Releases
Community notes

Community notes