Fine-tuning vs LoRA
Both fine-tuning and LoRA let you teach a model new concepts or styles, but they work very differently:
As a general rule, start with LoRA when you want to add a specific character or style. Fine-tuning is the right choice when you need more fundamental style changes or want to produce a high-quality base model.
Two fine-tuning approaches
sd-scripts supports two distinct fine-tuning styles for SD 1.x/2.x:- DreamBooth-style (train_db.py)
- Native fine-tuning (fine_tune.py)
train_db.py uses the DreamBooth dataset format: a directory of images, each optionally paired with a .txt caption. It supports regularization images to help preserve the model’s prior knowledge.Key arguments unique to train_db.py:Supported architectures
Each architecture has its own training script. All share a common command structure but expose architecture-specific options.SDXL — sdxl_train.py
SDXL — sdxl_train.py
Trains both the U-Net and, optionally, the two Text Encoders (CLIP ViT-L and OpenCLIP ViT-bigG).VRAM requirement: 24 GB+ recommended. Use
--gradient_checkpointing and --cache_latents on lower-VRAM GPUs.SD3 — sd3_train.py
SD3 — sd3_train.py
Trains Stable Diffusion 3 Medium. SD3 uses three Text Encoders (CLIP-L, CLIP-G, T5-XXL) and an MMDiT backbone.VRAM requirement: 24 GB+ recommended. Use
--blocks_to_swap to offload MMDiT blocks to CPU on lower-VRAM systems.FLUX.1 — flux_train.py
FLUX.1 — flux_train.py
Trains FLUX.1 models. FLUX.1 uses two types of Transformer blocks internally: Double Blocks and Single Blocks.VRAM requirement: 24 GB+ recommended. Use
--blocks_to_swap to reduce memory pressure.Lumina — lumina_train.py
Lumina — lumina_train.py
Trains Lumina-Next DiT models. Options largely follow the same patterns as other scripts.VRAM requirement: Varies by model size. Use
--gradient_checkpointing as needed.Key configuration options
The following options apply across all fine-tuning scripts:Common arguments
Common arguments
