Nodes/Comfy Latent Tools/Downsampled Latent Guidance
ComfyUI Node

Downsampled Latent Guidance

Steer a high-res pass with a low-res latent (experimental, but fun)

By JTriggerFish·Created 2 years ago·Updated about a year ago· 4
Downsampled Latent Guidance
  • model
  • reference_latent
  • MODEL
downscaling_factor2.00
guidance_weight1.5
apply_rescaling_to_alternate_guidancefalse
rescaling_method None
rescaling_fraction0.70
unet_blockmiddle
unet_block_id0
noise_fraction_start1.00
noise_fraction_end0.00
unet_block_list

This is the niche one in Comfy Latent Tools, and the pack says so - the node's own help string opens with "!EXPERIMENTAL!". The idea is genuinely interesting though: when you generate at high resolution, use a downscaled latent as a stable reference so the big pass stays anchored to the composition instead of drifting into whatever the high-res sampler feels like at step forty.

It's a model patch in the model_patches/unet category. You feed it a MODEL plus a reference_latent, and the patched MODEL output goes into your KSampler. Same shape as the pack's other guidance node - this is the "kitchen-sink attention guidance" family's more specialised sibling.

How it works

At each sampling step the node takes your reference_latent - typically a quick low-res pass of the same scene - re-noises it up to the current noise level, runs the UNet on that small re-noised reference, and transfers the attention maps from the reference pass over to the full-res pass. The full-res prediction is then steered by guidance_weight times the difference between the guided and unguided predictions (the source literally adds guidance_weight * (cond_modified - cond_pred) to the CFG output). Net effect: the high-res pass inherits the low-res pass's understanding of composition and layout, while detail still grows at full resolution.

It's the same "alternate prediction, added as an extra guidance term" pattern as PAG-style guidance, just with a low-res latent instead of a perturbed attention map as the source of the alternate signal.

Inputs that matter

  • model - the checkpoint.
  • reference_latent - the one beginners forget. Without a sensible low-res latent there is nothing to steer by; wire a latent from an earlier small/fast pass here.
  • downscaling_factor (default 2, range 0–8) - how much smaller the reference is than the main pass.
  • guidance_weight (default 1.5) - strength of the steering.
  • noise_fraction_start (1.0) / noise_fraction_end (0.0) - the window over the sampling schedule where guidance applies. Defaults run it the whole way; tighten them if you only want steering in the composition-forming steps.
  • rescaling_method (default None), rescaling_fraction (0.7), unet_block/unet_block_id/unet_block_list - the same rescaling and block-targeting controls as the pack's other guidance node, for when the raw guidance term needs taming.

Output is a single MODEL. Swap it into your KSampler in place of the unpatched one.

The honest take

Reach for this one if you're the kind of person who enjoys poking at CFG math, not as a daily driver. It's the least documented node in a pack whose README literally says "MANY MISSING NODES HERE - WILL BE UPDATED", and it costs extra UNet forward passes per step, so it's slow. Expect real tuning: start with a 2x downscaling_factor, low guidance_weight (try 0.5–1.0 before jumping to the 1.5 default), and keep the guidance window narrow until you see it working. If your problem is "the high-res pass keeps inventing details that contradict the low-res composition," this is exactly the experiment to run.

Install is the same as the rest of the pack - ComfyUI Manager, search Comfy Latent Tools, install, restart; or git clone https://github.com/JTriggerFish/ComfyLatentTools into custom_nodes. No model downloads, dependencies are just torch, torchvision, pillow and numpy. This node barely shows up in search right now (it's the least-visited of the three), which is how you know you're early. The experiment is real, the community feedback loop just hasn't caught up yet.

Categorymodel_patches/unet

Inputs (12)

NameTypeDefaultDescription
modelMODEL
reference_latentLATENT
downscaling_factorFLOAT2.000–8
guidance_weightFLOAT1.50–100
apply_rescaling_to_alternate_guidanceBOOLEANfalse
rescaling_method COMBONone7 options: None, PredSpaceRescale, VSpaceRescale, SNF, Softmax, Normalize, +1
rescaling_fractionFLOAT0.700–1
unet_blockCOMBOmiddle3 options: input, middle, output
unet_block_idINT0
noise_fraction_startFLOAT1.000–1
noise_fraction_endFLOAT0.000–1
unet_block_listoptSTRING

Outputs (1)

NameTypeDescription
MODELMODEL