Nodes/ComfyUI-ZeroCLIP-nodes/ZeroClip-B Conditioning (SDXL)
ComfyUI Node

ZeroClip-B Conditioning (SDXL)

Two MLPs, one seed, pooled output

By MushroomFleet·Created 5 months ago·Updated 5 months ago· 0
ZeroClip-B Conditioning (SDXL)
  • model_seq
  • model_pooled
  • seed
  • conditioning

The SDXL version of the MLP conditioner follows the same pattern as every other SDXL node in this pack: SDXL needs both a sequence embedding and a pooled embedding, so ZeroClip-B Conditioning (SDXL) takes two trained MLPs - one that outputs the 2048-dim sequence vector, one that outputs the 1280-dim pooled vector - and produces a single SDXL-format CONDITIONING with pooled_output intact.

If you've already used the non-SDXL B Conditioning node, there's nothing conceptually new here. The mechanism is identical: seed hashed, coordinates derived, each MLP forward-passes to its embedding, L2-normalized, packaged. The only real difference is the plumbing - two model inputs instead of one, and the output carries both the sequence tensor and the pooled dict entry that an SDXL checkpoint demands.

The inputs

  • model_seq - MLP for sequence embeddings (D=2048), from a ZeroClip-B Load MLP node pointed at the SDXL sequence checkpoint. The tooltip says it explicitly so you don't mix them up.
  • model_pooled - MLP for pooled embeddings (D=1280), from a second Load MLP node pointed at the SDXL pooled checkpoint.
  • seed - the standard ZEROCLIP_SEED from Seed Pack or Seed From Random.

Output: conditioning in SDXL format (sequence + pooled). That plugs into an SDXL KSampler's positive input; pair with an SDXL-format Empty Conditioning (sdxl toggled on) for the negative.

How it works

One seed drives both networks, so the sequence concept and pooled concept stay coherent - the same concept_id/style_id/etc. gets packed and run through each MLP independently. Both outputs are normalized and combined into the two-part SDXL conditioning format. Microsecond cost, same as the SD1.x B node.

Install

Part of ComfyUI-ZeroCLIP-nodes. ComfyUI Manager (search "ZeroCLIP"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/MushroomFleet/ComfyUI-ZeroCLIP-nodes

Restart ComfyUI; it's under ZeroClip/B - Latent MLP. No pip install. You need the SDXL B checkpoints (seq + pooled, both distinct files) from huggingface.co/mushroomfleet/zeroclip in models/zeroclip/, or train them via the SDXL build path (--variant B --sdxl).

Where people get burned

  • One MLP is not enough. This node has two model sockets and both are required. The classic mistake is wiring the same single Load MLP into model_seq and leaving model_pooled empty - you'll get an unconnected-input error, not a gentle warning.
  • Cross-loading SD1.5 and SDXL checkpoints. The 2048/1280 dims are baked into the SDXL-trained MLPs. Point model_seq at an SD1.5 checkpoint and the shape will fail at generation. Keep the pair together and labeled.
  • Forgetting SDXL formatting on the negative. The negative input for an SDXL pipeline also needs pooled output. If you're using the plain (non-SDXL) Empty Conditioning node there, the shapes won't match. Use the SDXL toggled version.
CategoryZeroClip/B - Latent MLP

Inputs (3)

NameTypeDefaultDescription
model_seqZEROCLIP_B_MODELMLP for sequence embeddings (D=2048)
model_pooledZEROCLIP_B_MODELMLP for pooled embeddings (D=1280)
seedZEROCLIP_SEED

Outputs (1)

NameTypeDescription
conditioningCONDITIONING