Fine-tuning is supported for flux2-klein-base-4b and flux2-klein-base-9b models using the mflux-train command.
Edit Fine-tuning (Image-conditioned)
To perform edit-style training (image in + prompt $\rightarrow$ image out), prepare your data using paired *_out.* and *_in.* files along with *_in.txt prompt files. This mode is supported for Flux2 Klein base models.
Configuration
Training is controlled via a JSON configuration file. You must specify the model, data directory, steps, and lora_layers targets.
{
"model": "flux2-klein-base-9b",
"data": "images/",
"seed": 42,
"steps": 40,
"guidance": 1.0,
"quantize": null,
"low_ram": false,
"max_resolution": 1024,
"training_loop": { "num_epochs": 100, "batch_size": 1, "timestep_low": 25, "timestep_high": 40 },
"optimizer": { "name": "AdamW", "learning_rate": 1e-4 },
"checkpoint": { "output_path": "train", "save_frequency": 25 },
"monitoring": {
"plot_frequency": 1,
"generate_image_frequency": 20
},
"lora_layers": {
"targets": [
{ "module_path": "transformer_blocks.{block}.attn.to_q", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.attn.to_k", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.attn.to_v", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.attn.to_out", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.attn.add_q_proj", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.attn.add_k_proj", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.attn.add_v_proj", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.attn.to_add_out", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.ff.linear_in", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.ff.linear_out", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.ff_context.linear_in", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "transformer_blocks.{block}.ff_context.linear_out", "blocks": { "start": 0, "end": 5 }, "rank": 16 },
{ "module_path": "single_transformer_blocks.{block}.attn.to_qkv_mlp_proj", "blocks": { "start": 0, "end": 20 }, "rank": 16 },
{ "module_path": "single_transformer_blocks.{block}.attn.to_out", "blocks": { "start": 0, "end": 20 }, "rank": 16 }
]
}
}
mflux-train --config /path/to/train.json