NewMiniMax H3 open weights now run locally, as four nodes with video and audio in one pass

LoRA training

Train a FLUX.2 LoRA locally

FLUX.2 is the cheapest of the three to train, and the only one where both resolutions fit a 16GB card. About 8.6GB at 512px and 9.9GB at 1024px. It is also the one architecture where the 4-bit base is a trap: it gains nothing and costs about 10 percent a step, for a reason worth understanding before you reach for it.

trainer
The Trainer canvas in OmniChar: a Load Dataset node wired into Train LoRA, a live loss Graph, a Resources monitor, and the training settings in the side panel.

The Trainer canvas. The run pictured is a Z-Image LoRA, and the graph is the same shape for every architecture.

Which base to train on

Pick the architecture in the Trainer's Adjust panel, then a base within it. Training directly on a step-distilled checkpoint breaks the distillation down, so every architecture offers a way around that.

klein Base 4B

The only base the trainer accepts, and it refuses a distilled checkpoint outright rather than letting a run produce a bad adapter hours later. Train on Base, then generate with the distilled klein 4B checkpoint. The LoRA carries over unchanged, and there is no adapter to download.

What the trainer needs on disk: flux-2-klein-base-4b.safetensors, in models/diffusion_models/. Nothing is downloaded behind your back, and a run that is missing a file stops and names it.

FLUX.2 LoRA training VRAM, measured

Peak allocation at 12 steps, rank 16, batch 1, with gradient checkpointing on. The number is torch.cuda.max_memory_allocated, so leave headroom for the CUDA context and allocator slack.

ConfigurationL40S (46GB)L4 (24GB)RTX PRO 4500 (32GB)T4 (15GB)
512px, bf16 base8.6GBnot measurednot measurednot measured
512px, 4-bit base8.6GBnot measurednot measurednot measured
1024px, bf16 base9.9GBnot measurednot measurednot measured
1024px, 4-bit base9.9GBnot measurednot measurednot measured

Both precisions peak at the same number, because the peak is not the transformer. klein's base is 7.4GB while its Qwen3-4B text encoder is 7.5GB, so the caption and latent caching pass at the start of the run costs more than training itself does. Dropping the frozen base to 4-bit shrinks a part of the run that was never the high-water mark, and the step gets slower for nothing. Leave base precision on Auto, which is what it already picks. These peaks were measured on an L40S and leave room on a smaller card, but no 16GB run has been done.

Train on RunPodRent a 16GB or larger card by the hour and run the same trainer there.

See the full matrix in the README, or compare all three architectures.

The dataset

Add clips or images from this machine, a folder, or a Hugging Face repo. Captions are read from a dataset.json or metadata.jsonl if the set ships one, and anything without a prompt can be captioned locally before it lands.

The OmniChar dataset editor: each row is a clip with its prompt, with controls for auto-captioning above.

The dataset editor. Each row is one training item: the asset and the prompt that describes it.

How long a run takes

FLUX.2 LoRA training FAQ

Can I train a FLUX.2 LoRA on a 16GB card?

Yes, at both resolutions. It peaks around 8.6GB at 512px and 9.9GB at 1024px, which makes it the cheapest of the three architectures to train and the only one where 1024px is comfortable on a small card. Those peaks were measured on an L40S and leave room on a 16GB card, though no 16GB run has been done.

Why does the trainer refuse my FLUX.2 checkpoint?

Because it is distilled. klein Base 4B is the only base the trainer accepts for FLUX.2. Training on a step-distilled checkpoint breaks the distillation down, so the trainer stops at the start rather than letting a run produce a bad adapter hours later. Put flux-2-klein-base-4b.safetensors in models/diffusion_models/, train on it, then generate with the distilled klein 4B.

Should I use the 4-bit base for FLUX.2?

No. It saves nothing and costs about 10 percent a step. klein Base is smaller than its own text encoder, so the peak sits in the caption and latent caching pass rather than in the transformer, and quantizing the frozen base shrinks a part of the run that was never the high-water mark. Leave base precision on Auto, which stays at bf16 for this architecture.

Train your first FLUX.2 LoRA

Free and open source. Runs on macOS, Windows, and Linux.