Superside Z-Image LoRA Trainer
The Superside trainer
- images
- lora_file_url
LoRA training normally means a 3060, a weekend, and a fight with ai-toolkit's dependency tree. This node is the opposite of that: it trains a LoRA on Z-Image Turbo entirely on fal's servers, using fal-ai/z-image-turbo-trainer-v2, from a batch of images sitting in your ComfyUI graph. No local training stack, no hours of your GPU. The output is a URL, and the intended destination is the other half of this pair - Z-Image Turbo Inpaint+LoRA - where you paste that URL into lora_url and instantly have a model that understands your subject.
What it's for
The pack's own use case is a realistic-skin LoRA from close-up skin and imperfection references - the "re-skin" pipeline that lives behind several of these nodes. But it's a general trainer: a character, a style, a product texture, whatever you have images for. The LoRA trains against Z-Image Turbo specifically, which is the important part: because the inpaint node uses the same base model, compatibility is guaranteed. That's the lesson the README hammers - a LoRA trained on one family has nowhere to plug in on another (a Krea 2 trainer LoRA can't inpaint anywhere, a Flux LoRA crosses checkpoints). Keep both halves on Z-Image Turbo and you never think about it.
The inputs that matter
images- an IMAGE batch, not a single image. Load a folder or stack severalLoadImagenodes through an Image Batch node. 10+ images recommended; the node warns (but doesn't refuse) below that.default_caption- required when training from the IMAGE batch, and here's the honest catch: every image gets the same caption. There's no per-image caption UI. Include your trigger word, describe what's common to all of them ("sks skin texture, close-up photo, realistic pores and imperfections"). If you need per-image captions, build a zip of images + matching.txtfiles yourself and pass its URL viaimages_zip_url, which overrides the batch.steps(default 2000) andlearning_rate(default 0.0005) - the two knobs. 2000 steps at that LR is a sensible starting point for a small dataset; the old SDXL instinct to crank the LR doesn't transfer to these architectures.api_key- your fal key, same as every node here.
The single output is lora_file_url (STRING) - a diffusers_lora_file URL, ready to paste into the Inpaint+LoRA node's lora_url.
Installing
Same pack install, same restart:
cd ComfyUI/custom_nodes
git clone https://github.com/Superside/comfyui-superside-nodes.git
pip install -r requirements.txt
then find it under Superside (ComfyUI Manager also works, search "Superside"). The requirements are just fal-client, pillow, numpy, torch, requests. The only real dependency is money and a key: training runs are metered, your dataset leaves your machine and lives on fal's upload storage, and a single run is not instant - it's a real training job.
Common issues
- Undertrained or mushy LoRA → fewer than 10 images, or a caption that doesn't isolate what you want. Dataset curation beats every training knob; this node can't fix a bad dataset.
- Training works but the LoRA does nothing at inference → check the
lora_url/scale wiring in the Inpaint node, and remember the/resolve/not/blob/rule from that node's docs. - Planning to move to Z-Image Base later → know this now: Turbo LoRAs don't run on Base. They're different training targets, and the community hit that wall the day Base shipped. If your endgame is Base, train on Base - this trainer targets Turbo, so it's a Turbo LoRA, full stop.
The honest comparison: local training (ai-toolkit on a 3060) is cheaper per run and keeps your data at home, but it's hours and setup. This trades money for your GPU and your patience. For a quick character or skin LoRA on a deadline, that's a good trade.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Batch of training images (ignored when images_zip_url is set). At least 10 recommended. | |
| default_caption | STRING | Applied to every image (no per-image caption files here). Include your trigger word. | |
| api_key | STRING | — | |
| stepsopt | INT | 2000100–10000 | Number of training steps. |
| learning_rateopt | FLOAT | 0.00050.00001–0.01 | Training learning rate. |
| images_zip_urlopt | STRING | URL of a pre-built zip (images + matching .txt captions). Overrides the IMAGE batch input. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| lora_file_url | STRING | — |