Nodes/Arthemy Live Tuner - Z-image/Arthemy Z-Image Tuner (LAB)
ComfyUI Node

Arthemy Z-Image Tuner (LAB)

Per-layer weight surgery on Z-Image, when six sliders aren't enough

By aledelpho·Created 7 months ago·Updated 7 months ago· 15
Arthemy Z-Image Tuner (LAB)
  • model
  • MODEL
mode
base_strength1.00
unsafe_tune_normalizationfalse
Noise_Refiners1.00
Context_Refiners1.00
Embedders_Global1.00
Layer_001.00
Layer_011.00
Layer_021.00
Layer_031.00
Layer_041.00
Layer_051.00
Layer_061.00
Layer_071.00
Layer_081.00
Layer_091.00
Layer_101.00
Layer_111.00
Layer_121.00
Layer_131.00
Layer_141.00
Layer_151.00
Layer_161.00
Layer_171.00
Layer_181.00
Layer_191.00
Layer_201.00
Layer_211.00
Layer_221.00
Layer_231.00
Layer_241.00
Layer_251.00
Layer_261.00
Layer_271.00
Layer_281.00
Layer_291.00

The Simple version of this tuner groups Z-Image's 30 layers into six blocks because that's what a sane person uses day-to-day. Arthemy Z-Image Tuner (LAB) throws the grouping away and gives you a slider for every single layer, Layer_00 through Layer_29, plus the auxiliary components. It's the node for people who want to find out which layer actually owns "lighting" for their favorite seed - and the README's tone makes it clear the author expects exactly that kind of person. ("For those curious FREAKS that want to look under the hood" is a direct quote.)

What's different from the Simple tuner

Same mechanism, same in-place weight scaling on the diffusion model's state dict - it still needs ArthemyTunerLoader feeding it so edits never compound across queues. What changes is the input surface:

  • Layer_00Layer_29 - one float per transformer layer, each mapped to the layers.N. keys by index. This is the entire point: you can hold a single layer at 1.0 while every other layer is untouched.
  • Noise_Refiners and Context_Refiners - the Simple version folds these into one refiners_strength; the Lab splits them apart so you can scale noise-handling and context-refinement weights independently.
  • Embedders_Global - the input embedder signal, the same embedders_strength as Simple.
  • unsafe_tune_normalization - off by default, and you should leave it off. Scaling norm layers is how images get "fried."

Everything else - mode (Real vs Soft Value), base_strength (0–10, a master gain in Real mode), the norm lock - behaves exactly as in the Simple tuner. Output is a single MODEL.

How to actually use it

This is a research tool, and it works best with a fixed seed:

  1. Lock a seed and a prompt you care about.
  2. Take one layer, push it to something like 2.0 in Soft Value, generate.
  3. Look at what changed. Push, pull, or leave it, then move to the next layer.

Keep notes. Layer→effect maps are seed-specific - what layer 17 does for your comic book prompt may be invisible for a photoreal one. The author's own block names (composition, detail, resolution...) are hypotheses layered on top of this same 30-layer stack, so your findings are genuinely the best map anyone has.

There's one quirk worth knowing: the final_layer key (the model's output head) is tied to Layer_29 rather than having its own slider, on the theory that it carries the exit flow of the last main layer. Fine to ignore unless you're digging into exactly how the stack closes out.

Wiring

Identical to the Simple tuner - just swap the node:

ArthemyTunerLoader ──> Arthemy Z-Image Tuner (LAB) ──> KSampler ──> SaveImage

The honest take

The Lab node is fiddly, 33 sliders is a lot of surface, and most of those layers will do nothing you can name. That's not a bug - it's the point. The Simple tuner is what you'll reach for to actually shape an image; the Lab is what you use when you want to understand the model, or when you've found something the Simple blocks can't isolate. If you discover a per-layer recipe that works, ArthemyZImage_Saver will freeze it into a standalone model you can load like any other checkpoint. That loop - poke the layers, find what matters, bake it - is the best thing this pack does.

CategoryArthemy/Z-Image/Tuning

Inputs (37)

NameTypeDefaultDescription
modelMODEL
modeCOMBO2 options: Soft Value, Real Value
base_strengthFLOAT1.000–10
unsafe_tune_normalizationoptBOOLEANfalse
Noise_RefinersoptFLOAT1.000–10
Context_RefinersoptFLOAT1.000–10
Embedders_GlobaloptFLOAT1.000–10
Layer_00optFLOAT1.000–10
Layer_01optFLOAT1.000–10
Layer_02optFLOAT1.000–10
Layer_03optFLOAT1.000–10
Layer_04optFLOAT1.000–10
Layer_05optFLOAT1.000–10
Layer_06optFLOAT1.000–10
Layer_07optFLOAT1.000–10
Layer_08optFLOAT1.000–10
Layer_09optFLOAT1.000–10
Layer_10optFLOAT1.000–10
Layer_11optFLOAT1.000–10
Layer_12optFLOAT1.000–10
Layer_13optFLOAT1.000–10
Layer_14optFLOAT1.000–10
Layer_15optFLOAT1.000–10
Layer_16optFLOAT1.000–10
Layer_17optFLOAT1.000–10
Layer_18optFLOAT1.000–10
Layer_19optFLOAT1.000–10
Layer_20optFLOAT1.000–10
Layer_21optFLOAT1.000–10
Layer_22optFLOAT1.000–10
Layer_23optFLOAT1.000–10
Layer_24optFLOAT1.000–10
Layer_25optFLOAT1.000–10
Layer_26optFLOAT1.000–10
Layer_27optFLOAT1.000–10
Layer_28optFLOAT1.000–10
Layer_29optFLOAT1.000–10

Outputs (1)

NameTypeDescription
MODELMODEL