OneTrainer is a one-stop solution for all your stable diffusion training needs.
- Supported models: Stable Diffusion 1.5, 2.0, 2.1, SDXL and inpainting models
- Model formats: diffusers and ckpt models
- Training methods: Full fine-tuning, LoRA, embeddings
- Masked Training: Let the training focus on just certain parts of the samples.
- Automatic backups: Fully back up your training progress regularly during training. This includes all information to seamlessly continue training.
- Image augmentation: Apply random transforms such as rotation, brightness, contrast or saturation to each image sample to quickly create a more diverse dataset.
- Tensorboard: A simple tensorboard integration to track the training progress.
- Multiple prompts per image: Train the model on multiple different prompts per image sample.
- Noise Scheduler Rescaling: From the paper Common Diffusion Noise Schedules and Sample Steps are Flawed
- EMA: Train you own EMA model. Optionally keep EMA weights in CPU memory to reduce VRAM usage.
- Aspect Ratio Bucketing: Automatically train on multiple aspect ratios at a time. Just select the target resolutions, buckets are created automatically.
- Dataset Tooling: Automatically caption your dataset using BLIP, BLIP2 and WD-1.4, or create masks for masked training using ClipSeg or Rembg.
- Model Tooling: Convert between different model formats from a simple UI.
- Sampling UI: Sample the model during training without switching to a different application.
A more detailed list can be found here.
Installing OneTrainer requires Python 3.10. You can download Python here https://www.python.org/downloads/windows/. Then follow these steps:
Automatic installation (Windows)
- Clone the repository
git clone https://github.com/Nerogar/OneTrainer.git
- Run
install.bat
Manual installation (Windows and other systems)
- Clone the repository
git clone https://github.com/Nerogar/OneTrainer.git
- Navigate into the cloned directory
cd OneTrainer
- Set up a virtual environment
python -m venv venv
- Activate the new venv
venv\scripts\activate
- Install the requirements
pip install -r requirements.txt
Automatic update
- Run
update.bat
Manual update
- Pull changes
git pull
- Activate the venv
venv\scripts\activate
- Re-Install all requirements
pip install -r requirements.txt --force-reinstall
To start the UI, run start-ui.bat
. You can find a quick start guide here., and a more
detailed overview of different topics here.
If you need more control, OneTrainer supports two modes of operation. Command line only, and a UI. All commands need to be run inside the active venv created during installation.
All functionality is split into different scrips located in the scripts
directory. This currently includes:
train.py
The central training scripttrain_ui.py
A UI for trainingcaption_ui.py
A UI for manual or automatic captioning and mask creation for masked trainingconvert_model_ui.py
A UI for model conversionsconvert_model.py
A utility to convert between different model formatssample.py
A utility to sample any modelcreate_train_files.py
A utility to create files needed when training only from the CLIgenerate_captions.py
A utility to automatically create captions for your datasetgenerate_masks.py
A utility to automatically create masks for your dataset
To learn more about the different parameters, execute <scipt-name> -h
. For example python scripts\train.py -h
Contributions are always welcome in any form. You can open issues, participate in discussions, or even open pull requests for new or improved functionality. You can find more information here
Before you start looking at the code, I recommend reading about the project structure here. For in depth discussions, you should consider joining the Discord server.
- MGDS: A custom dataset implementation for Pytorch that is built around the idea of a node based graph.
- StableTuner: Another training application for Stable Diffusion. OneTrainer takes a lot of inspiration from StableTuner and wouldn't exist without it.
- Visions of Chaos: A collection of machine learning tools that also includes OneTrainer.