ComfyUI Node Runs on cloud

Eff. Loader SDXL

Eff. Loader SDXL

By jags111·Created 3 years ago·Updated 6 months ago· 1,505
Eff. Loader SDXL
  • lora_stack
  • cnet_stack
  • SDXL_TUPLE
  • LATENT
  • VAE
  • DEPENDENCIES
◄base_ckpt_name▾►
◄base_clip_skip-2►
◄refiner_ckpt_name▾►
◄refiner_clip_skip-2►
◄positive_ascore6.00►
◄negative_ascore2.00►
◄vae_name▾►
◄positiveCLIP_POSITIVE►
◄negativeCLIP_NEGATIVE►
◄token_normalization▾►
◄weight_interpretation▾►
◄empty_latent_width1024►
◄empty_latent_height1024►
◄batch_size1►

This is the Efficient Loader's SDXL-specific cousin. It loads a base checkpoint and a refiner checkpoint together, encodes your prompts for both, sets up the empty latent, and bundles the whole lot into a single SDXL_TUPLE that plugs straight into the KSampler SDXL (Eff.) node. If you're running the classic SDXL base+refiner pipeline, this collapses what used to be a small forest of loader and encode nodes into one.

How it works

The magic export here is that SDXL_TUPLE output - it carries the base model, the refiner model, and both sets of conditioning as one connection. The matching sampler knows how to unpack it and hand off from base to refiner at the step you pick. You wire this loader's tuple into the sampler and you're basically done with setup.

It also carries SDXL's refiner-specific conditioning knobs that the plain loader doesn't have.

The inputs that matter

  • base_ckpt_name / refiner_ckpt_name - your two checkpoints. refiner_ckpt_name can be None if you only want the base loaded through this node.
  • positive / negative - multiline prompt boxes, encoded on the node with the same token_normalization and weight_interpretation controls as the standard loader.
  • base_clip_skip / refiner_clip_skip - both default to -2. On SDXL, clip skip is largely a non-event because both text encoders already read from the penultimate layer, so don't expect the dial to do much here - it matters far more on SD1.5/anime models than on SDXL.
  • positive_ascore / negative_ascore - SDXL's aesthetic-score conditioning, feeding the refiner. Defaults are 6 and 2; these are the "how much do you want the refiner to lean toward pretty" numbers and the defaults are sensible starting points.
  • empty_latent_width / empty_latent_height - default 1024, which is SDXL's native resolution. Stay near there.

For extra models, the optional lora_stack and cnet_stack inputs take a LoRA Stacker and a ControlNet stack.

Outputs: SDXL_TUPLE (into the sampler), LATENT, VAE, and DEPENDENCIES - that last one feeds an XY Plot node so grid comparisons know your model setup.

Installing it

ComfyUI Manager → search Efficiency Nodes for ComfyUI, or:

cd ComfyUI/custom_nodes
git clone https://github.com/jags111/efficiency-nodes-comfyui

Restart after. The "🔍 View model info…" right-click menu needs pythongosssss's ComfyUI-Custom-Scripts to be installed.

Common issues

Worth saying plainly: the separate-refiner workflow this node is built for has fallen out of fashion. Many current SDXL finetunes are trained to run without a refiner, and a lot of people get cleaner results from base-only plus a hires pass. If you're not specifically committed to a refiner model, the plain Efficient Loader plus KSampler (Efficient) is simpler.

There's also a documented pack quirk here: on SDXL, a LoRA applied through the stack has historically only affected the base and not the refiner. If a LoRA seems underpowered on a base+refiner run, that's the likely culprit - verify against a base-only setup.

Pack-wide: an IMPORT FAILED on startup (frequently a pip freeze non-zero-exit error) means the pack didn't load - update ComfyUI, the packages, and the node. After a ComfyUI update breaks things, updating the node to the latest commit is the standard fix.

CategoryEfficiency Nodes/Loaders

Inputs (16)

NameTypeDefaultDescription
base_ckpt_nameCOMBO0 options:
base_clip_skipINT-2-24–-1—
refiner_ckpt_nameCOMBO1 options: None
refiner_clip_skipINT-2-24–-1—
positive_ascoreFLOAT6.000–1000—
negative_ascoreFLOAT2.000–1000—
vae_nameCOMBO1 options: Baked VAE
positiveSTRINGCLIP_POSITIVE—
negativeSTRINGCLIP_NEGATIVE—
token_normalizationCOMBO4 options: none, mean, length, length+mean
weight_interpretationCOMBO5 options: comfy, A1111, compel, comfy++, down_weight
empty_latent_widthINT102464–16384—
empty_latent_heightINT102464–16384—
batch_sizeINT11–64—
lora_stackoptLORA_STACK—
cnet_stackoptCONTROL_NET_STACK—

Outputs (4)

NameTypeDescription
SDXL_TUPLESDXL_TUPLE—
LATENTLATENT—
VAEVAE—
DEPENDENCIESDEPENDENCIES—