Nodes/comfyui-zimage-sdnq/ZImage SDNQ Control LoRA Apply
ComfyUI Node

ZImage SDNQ Control LoRA Apply

Works, with a quality tax

By GeneralShan·Created 8 months ago·Updated 5 months ago· 1
ZImage SDNQ Control LoRA Apply
  • pipeline
  • pipeline
lora_name<manual>
strength1.00
enabledtrue
replace_existingtrue
lora_source_custom

ZImageSDNQControlLoRAApply is the control-pipeline twin of ZImageSDNQLoRAApply, and it exists for one reason: the control loader (ZImageSDNQControlPipelineLoader) produces a ZIMAGE_CONTROL_PIPELINE, which the plain LoRA node doesn't accept. This node does - same live-attachment mechanism, same inputs, different input type.

So if you're running a Canny, depth, inpaint, or tile-upscale workflow and want a character or style LoRA on top, this is the node. Wire it between the control loader and the sampler:

ZImageSDNQControlPipelineLoader → ZImageSDNQControlLoRAApply → ZImageSDNQSamplerControl

Inputs (no surprises)

  • lora_name - dropdown of LoRAs in models/loras/, defaulting to <manual>. lora_source_custom overrides with a path.
  • strength - default 1.0, −5 to 5. Negative values subtract. Base-trained LoRAs on Turbo again want the higher end, ~2.0.
  • enabled (default true) - pass-through with the LoRA zeroed when off.
  • replace_existing (default true) - whether this LoRA replaces the previously attached one for this node slot or stacks. Attachment state persists per node across the session, so leaving this on is the safe default - it's how you stop a LoRA from a previous run ghosting into your output.

Output is a ZIMAGE_CONTROL_PIPELINE, ready for the control samplers.

The quality tax you should know about

Here's the honest part, and it's grounded in how Z-Image's control ecosystem actually behaves. The Fun ControlNet was trained by a different Alibaba sub-team (PAI) than the model itself (Tongyi-MAI), on the distilled Turbo - which means applying it at full strength across all steps already costs you some quality. Stack a LoRA on top and you're asking the distilled model to do two things at once: hold the control condition and express the LoRA's style. Community reports of combining ControlNet with LoRAs on Z-Image Turbo consistently describe quality degradation - weaker adherence on one side or the other, sometimes both.

None of that means "don't use this node." It means: control + LoRA is a fight for attention, and you should expect to tune. The levers are the same as ever - keep control_context_scale in the sampler moderate (0.7–0.8), keep the LoRA strength where the LoRA's own page suggests, and if things look overcooked, drop one of them. You can't do the step-cutoff trick (early control, released late) inside this pack, so control_context_scale is doing all that work by itself.

Install

Same pack install as everything here: ComfyUI Manager (search "Z-Image SDNQ") or:

cd ComfyUI/custom_nodes
git clone https://github.com/GeneralShan/comfyui-zimage-sdnq

restart, pip install sdnq diffusers timm opencv-python-headless for the control path, LoRAs in models/loras/. If the dropdown is empty after you add files, restart so the catalog rescans - it's read once at load time.

CategoryZImage SDNQ/LoRA

Inputs (6)

NameTypeDefaultDescription
pipelineZIMAGE_CONTROL_PIPELINE
lora_nameCOMBO<manual>LoRA file from models/loras. Use <manual> to provide a custom path.
strengthFLOAT1.00-5–5
enabledBOOLEANtrue
replace_existingBOOLEANtrue
lora_source_customoptSTRINGOverrides lora_name when set.

Outputs (1)

NameTypeDescription
pipelineZIMAGE_CONTROL_PIPELINE