← ImageLoRA
How to train a MOSS Image LoRA
Which trainers support MOSS Image (OpenMOSS, ~5B, Apache 2.0), how much VRAM you need, and settings that work. Every row links to its source.
MOSS Image character recipe that works
| Source | AI Toolkit Discord, Oct 20 2026 |
|---|
| Trainer | ai-toolkit |
|---|
| Base model | MOSS Image Base |
|---|
| Quantization | transformer and text encoder in 8-bit ConvRot |
|---|
| Network | LoKr, factor 8 |
|---|
| Optimizer / LR | AdamW 8-bit, 1e-4 |
|---|
| Weight decay | 5e-5 |
|---|
| Schedule | shift timesteps |
|---|
| EMA | on, 0.99 |
|---|
| Batch | 2, gradient accumulation 2 |
|---|
| Differential guidance | On, scale 3 |
|---|
| Resolution | 512 |
|---|
| Dataset | 100 images reached the same likeness as 25 images, with much more flexibility |
|---|
Trainer support
| Trainer | Status |
|---|
| ai-toolkit | supported (SFT + Base, Oct 16; edit training Oct 17) |
| OneTrainer | unknown |
| musubi-tuner | unknown |
| kohya sd-scripts | supported (v0.12.2, Oct 20; LoRA incl. ConvRot INT8, faster H2D-only block swap) |
| SimpleTuner | supported (v4.10.0, Oct 17; Base/SFT incl. edit LoRAs) |
VRAM
kohya sd-scripts guide (1024px, batch 1, LoRA dim 16, AdamW, gradient checkpointing, text encoder outputs cached): ~13 GB training with bf16 DiT, ~9 GB with ConvRot INT8 DiT + text encoder, ~5-7 GB adding block swap (needs ~15 GB system RAM). v0.12.2's H2D-only block swap on an RTX 3090 (bf16, 1024px, batch 1, --blocks_to_swap 36): ~7 GB at 9.4 s/step vs 11.7 s/step with classic block swap. Caching text encoder outputs needs ~8.3 GB even in INT8, so 8 GB GPUs are not supported yet. Training the text encoder LoRA too: ~17 GB INT8, ~32 GB bf16. SimpleTuner ships 24, 32, 48, 80 and 144 GB recipes at 512px. ai-toolkit: ~15 GB at batch 2, 1024px, AdamW
Known-good settings
- Learns fast
- Tokenizer loading bug fixed same day (Oct 16) in ai-toolkit; update before training
- SFT variant: stripe artifacts, no fix yet
- sd-scripts: fp8_base is not supported for MOSS Image; use --convrot_int8 (and --convrot_int8_text_encoder) instead
- sd-scripts: --timestep_sampling sigma --weighting_scheme logit_normal --logit_mean -1.09 --logit_std 0.95 --discrete_flow_shift 1.0 reproduces pre-training; simpler alternative: --timestep_sampling shift --discrete_flow_shift 3.0
- sd-scripts example: LR 1e-4 constant at network_alpha 1 (lower LR if you raise alpha)
- SimpleTuner recipes: rank-32 LoRA, LR 1e-4, REPA, 4,000 steps, 512px-area training; validate at 50 steps, CFG 3, 1024px
- Edit/reference LoRAs: SimpleTuner model_flavour sft-edit or base-edit with matching target and reference folders; ai-toolkit also trains Base and SFT as edit models
- Base LoRA with ai-toolkit defaults (adamw8bit, shift timesteps, rank 32) gives a good style by ~1,500 steps; Base-trained LoRAs also work on SFT
- Try a higher LoRA rank than usual (smaller hidden size than Krea 2); character LoRAs are hard to get right so far
- Full fine-tunes on small datasets collapse after a few epochs; use LoRA unless you have a very large dataset
- ComfyUI "lora key not loaded": ai-toolkit now saves unfused q/k/v LoRA keys (Oct 17); use the Comfy-Org MOSS files to fix it
- ai-toolkit low_vram + cache_text_embeddings could OOM at startup because the text encoder stayed on the GPU; fixed in ai-toolkit on Oct 17, so update first
- Inference: an SFT LoRA at ~0.6 strength with the Base model at 30 steps, CFG 3 works well; 8-step DMD LoRAs exist for SFT and Base but can weaken LoRA effect
- Base DMD2 speed LoRA is final (update 3000, Oct 20): stock Euler, 4-8 steps, CFG 1
- Testing your LoRA's likeness: skip Kromoss and turbo/DMD speed LoRAs, use 50 steps, CFG 2 and LoRA strength ~1.5, and generate at 1.5 MP or more (2-3 MP is best)
- OpenMOSS user guide: keep the text encoder frozen when training on MOSS Image Base
- OpenMOSS user guide, captioning: an LLM prompt that returns JSON with long, medium and short captions; recommended captioners are Gemma 4, Qwen 3.5 27B or Qwen 3.5 35B-A3B with thinking mode on
- OpenMOSS user guide, Base inference: 50+ steps, CFG 3 (3-6 for short prompts), shift 5, Euler sampler
- Using the whole JSON caption output as the caption works well; ai-toolkit accepts .json caption files
- Standard LoRA recipe that trains well on Base: LoRA on attention + MLP, rank 32, alpha 32, AdamW LR 1e-4 (betas 0.9/0.95, weight decay 0.01), grad clip 1.0, cosine schedule with 100 warmup steps and min multiplier 0.1, bf16, text encoder and VAE frozen, ~1 MP (1024²) with aspect ratio kept, no min-SNR
- Low-VRAM ai-toolkit LoKr on Base: rank 4 LoKr, 8-bit quantization, low VRAM on, text encoder fully offloaded, transformer 50% offloaded
- A Krea 2 config pasted straight into MOSS Image gives poor results; start from MOSS-specific settings
- sd-scripts v0.12.2: cache several caption variants per image (for example the long, medium and short captions) and pick one at random each step; before, only the first was kept
- sd-scripts v0.12.2 H2D-only block swap: add --block_swap_h2d_only to --blocks_to_swap (needs --gradient_checkpointing; optional --block_swap_ring_size, default 2, and --use_pinned_memory_for_block_swap). MOSS Image LoRA on an RTX 3090 at 1024px, batch 1, 36 blocks swapped: 9.4 s/step instead of 11.7 (~20% faster) at ~7 GB VRAM. LoRA only, not full fine-tuning
- sd-scripts: if you train the text encoder LoRA, don't cache text encoder outputs; older LoRA command examples in the docs did both (fixed in v0.12.2)
- Kromoss: Apache 2.0 full fine-tune of Base that fixes Base's blurriness; drop-in for SFT files and workflows (50 steps, CFG 3), with an 8-step turbo LoRA (8 steps, CFG 1, euler/simple) and, since Oct 20, an 8-steps DMD2 LoRA (8 steps, 4 also works, CFG 1, strength 1). Still being updated (update 11000 on Oct 20)
- Kromoss int8 ConvRot single file (~5.4 GB) runs in ComfyUI on smaller GPUs; its convert_to_comfy.py turns your own MOSS Image diffusers fine-tune into a ComfyUI single file
- ai-toolkit "no module named fla" (flash-linear-attention) in Docker: fixed Oct 19, so pull the latest version and update dependencies; prompt encoding at batch size above 1 also got faster the same day
- ComfyUI v0.42.1 fixes crashes in the MOSS Image template workflow; ComfyUI master adds MOSS RoPE scaling (ScaleRope node) for higher resolutions and a MOSS color/depth control node
- RoPE scaling for high-res MOSS works best at partial strength; an experimental hi-res reference LoRA using depth/color maps reaches ~8K without duplicated subjects
- If SFT feels stiff: extract SFT as a LoRA and apply it to Base at ~0.5 strength
- SimpleTuner: LoKr training with torch.compile needs LyCORIS 4.1.3, which SimpleTuner requires since Oct 20
General tips
- Gated Hugging Face models: click 'Agree and access' on each model page, or you'll get 403 errors
- Steps scale with dataset size (steps = epochs x images at batch 1)
- A safe start: LoKr with auto rank (~64), batch/grad accumulation 4
Where to rent a GPU
See cheapest GPU to train a LoRA (RunPod, Vast.ai).
Sources
Weekly newsletter: new models, trainer releases, cheapest GPUs.
Subscribe
Data updated 2026-10-20. RunPod and Vast.ai links are referral links. unknown = no data yet. · Raw data (JSON) · llms.txt