Skip to content
Closed
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
a25e3a1
Add Z Image LoRA fine tuning support
ParamThakkar123 Dec 23, 2025
5c15019
Added existing parameter loading
ParamThakkar123 Dec 23, 2025
2b7c286
Updates
ParamThakkar123 Dec 24, 2025
038552a
Merge branch 'main' of https://github.com/transformerlab/transformerl…
ParamThakkar123 Dec 24, 2025
d571ab8
Merge branch 'main' into add/z-image-ft
josh-janes Dec 24, 2025
e334552
Merge branch 'main' into add/z-image-ft
dadmobile Jan 9, 2026
222a669
Merge branch 'main' into add/z-image-ft
dadmobile Jan 20, 2026
ddd7319
Merge branch 'main' into add/z-image-ft
deep1401 Feb 2, 2026
efada1f
Updated ZImage fine tuning code
ParamThakkar123 Feb 4, 2026
2f2f9ee
Merge branch 'add/z-image-ft' of https://github.com/transformerlab/tr…
ParamThakkar123 Feb 4, 2026
5100330
Updated ZImage fine tuning code
ParamThakkar123 Feb 4, 2026
ef967b0
Updated ZImage fine tuning code
ParamThakkar123 Feb 4, 2026
e3262d2
Merge branch 'main' of https://github.com/transformerlab/transformerl…
ParamThakkar123 Feb 4, 2026
19f23a6
Reformat and rebase
ParamThakkar123 Feb 4, 2026
cc2a21d
Updates
ParamThakkar123 Feb 5, 2026
5c81506
Updates
ParamThakkar123 Feb 5, 2026
3c6c374
Updates
ParamThakkar123 Feb 5, 2026
d6f2822
Merge branch 'main' of https://github.com/transformerlab/transformerl…
ParamThakkar123 Feb 5, 2026
99e483e
Updates
ParamThakkar123 Feb 5, 2026
a2f85e9
Fixed saving lora weights
ParamThakkar123 Feb 6, 2026
d73e250
Formatting
ParamThakkar123 Feb 6, 2026
c1044c7
Merge branch 'main' of https://github.com/transformerlab/transformerl…
ParamThakkar123 Feb 8, 2026
63160e3
ruff
dadmobile Feb 8, 2026
4c9ec6c
Merge branch 'main' into add/z-image-ft
dadmobile Feb 8, 2026
f798019
Merge branch 'main' into add/z-image-ft
ParamThakkar123 Feb 11, 2026
42418c4
Merge branch 'main' into add/z-image-ft
ParamThakkar123 Feb 11, 2026
2d3a814
Merge branch 'main' into add/z-image-ft
ParamThakkar123 Feb 12, 2026
79286da
updates
ParamThakkar123 Feb 12, 2026
6df347d
Merge branch 'main' into add/z-image-ft
ParamThakkar123 Feb 13, 2026
7072c16
Merge branch 'main' into add/z-image-ft
ParamThakkar123 Feb 17, 2026
281f25d
ruff
dadmobile Feb 17, 2026
06b95c7
Merge remote-tracking branch 'origin/main' into add/z-image-ft
dadmobile Feb 17, 2026
008f8ba
Merge branch 'main' of https://github.com/transformerlab/transformerl…
ParamThakkar123 Feb 18, 2026
fae56f9
Merge branch 'add/z-image-ft' of https://github.com/transformerlab/tr…
ParamThakkar123 Feb 18, 2026
1026537
Fixes
ParamThakkar123 Feb 18, 2026
0eacdb5
Fixes
ParamThakkar123 Feb 18, 2026
78f7d24
Updated Peft version
ParamThakkar123 Feb 18, 2026
69687cf
Fixes
ParamThakkar123 Feb 18, 2026
4425840
Fixes
ParamThakkar123 Feb 18, 2026
ddbc9e0
Fixes
ParamThakkar123 Feb 18, 2026
2914c12
Unpin versions
ParamThakkar123 Feb 18, 2026
f1061d5
Bump diffusion plugin version
dadmobile Feb 18, 2026
9950ffd
Merge branch 'main' into add/z-image-ft
ParamThakkar123 Feb 18, 2026
973795c
Updates
ParamThakkar123 Feb 18, 2026
53a2895
Updates
ParamThakkar123 Feb 18, 2026
5a3f72c
Merge branch 'add/z-image-ft' of https://github.com/transformerlab/tr…
ParamThakkar123 Feb 18, 2026
87f465d
Merge branch 'main' of https://github.com/transformerlab/transformerl…
deep1401 Feb 18, 2026
edcb473
ruff
dadmobile Feb 18, 2026
6cc7388
Merge branch 'main' into add/z-image-ft
ParamThakkar123 Feb 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions api/transformerlab/plugins/diffusion_trainer/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
"description": "A plugin for fine-tuning Stable Diffusion using LoRA adapters.",
"plugin-format": "python",
"type": "trainer",
"version": "0.1.10",
"version": "0.1.11",
"git": "",
"url": "",
"model_architectures": [
"StableDiffusionPipeline",
"StableDiffusionXLPipeline",
"StableDiffusion3Pipeline",
"FluxPipeline"
"FluxPipeline",
"ZImagePipeline"
],
"files": ["main.py", "setup.sh"],
"supported_hardware_architectures": ["cuda", "amd"],
Expand Down Expand Up @@ -288,6 +289,12 @@
"title": "Log to Weights and Biases",
"type": "boolean",
"default": true
},
"training_adapter": {
"title": "Z-Image-Turbo Training Adapter Path",
"type": "string",
"default": "",
"ui:help": "Optional local path to a custom de-distillation training adapter (.safetensors or .bin). Leave empty to automatically download and use the recommended ostris v2 adapter when training on Z-Image-Turbo."
}
},
"parameters_ui": {
Expand All @@ -297,6 +304,9 @@
"trigger_word": {
"ui:help": "Optional trigger word to prepend to all captions during training. Example: 'sks person' or 'ohwx style'"
},
"training_adapter": {
"ui:help": "Leave blank for auto-download of the recommended adapter. Provide a local path if you want to use a custom or offline adapter (e.g., v1 or your own)."
},
"num_train_epochs": {
"ui:help": "Total number of training epochs to run."
},
Expand Down
28 changes: 27 additions & 1 deletion api/transformerlab/plugins/diffusion_trainer/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,11 @@ def train_diffusion_lora():
eval_prompt = None
args["eval_prompt"] = None
args["eval_steps"] = 0
if args.get("model_architecture", "").strip() == "ZImagePipeline":
print("Disabling evaluation for ZImagePipeline as it is not supported.")
eval_prompt = None
args["eval_prompt"] = None
args["eval_steps"] = 0
elif eval_prompt and eval_steps <= 0:
print("Warning: eval_steps is set to 0, evaluation will not be performed.")
eval_prompt = None
Expand Down Expand Up @@ -446,7 +451,9 @@ def train_diffusion_lora():

is_flux = "FluxPipeline" in model_architecture

print(f"Architecture detection - SDXL: {is_sdxl}, SD3: {is_sd3}, Flux: {is_flux}")
is_zimage = "ZImagePipeline" in model_architecture

print(f"Architecture detection - SDXL: {is_sdxl}, SD3: {is_sd3}, Flux: {is_flux}, ZImage: {is_zimage}")

# Define target modules based on detected architecture
if is_sdxl:
Expand All @@ -461,6 +468,10 @@ def train_diffusion_lora():
# Flux uses transformer-based architecture
target_modules = ["to_q", "to_k", "to_v", "to_out.0"]
architecture_name = "Flux"
elif is_zimage:
# ZImage uses a modified UNet architecture
target_modules = ["to_q", "to_k", "to_v", "to_out.0"]
architecture_name = "ZImage"
else:
# Default SD 1.x targets
target_modules = ["to_k", "to_q", "to_v", "to_out.0"]
Expand Down Expand Up @@ -1148,6 +1159,21 @@ def __init__(self, text_encoder, text_encoder_2, tokenizer, tokenizer_2):
except Exception as e:
print(f"Error with FluxPipeline.save_lora_weights: {e}")

if not saved_successfully and is_zimage:
try:
# ZImage pipelines may have their own save method
from diffusers import ZImagePipeline

ZImagePipeline.save_lora_weights(
save_directory=save_directory,
unet_lora_layers=model_lora_state_dict,
safe_serialization=True,
)
print(f"LoRA weights saved to {save_directory} using ZImagePipeline.save_lora_weights (ZImage)")
saved_successfully = True
except Exception as e:
print(f"Error with ZImagePipeline.save_lora_weights: {e}")

# Method 5: Try the generic StableDiffusionPipeline method as fallback for all architectures
if not saved_successfully:
try:
Expand Down
Loading