ZeroClip-B Conditioning (SDXL)
Two MLPs, one seed, pooled output
- 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_SEEDfrom 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_seqand leavingmodel_pooledempty - 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_seqat 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model_seq | ZEROCLIP_B_MODEL | MLP for sequence embeddings (D=2048) | |
| model_pooled | ZEROCLIP_B_MODEL | MLP for pooled embeddings (D=1280) | |
| seed | ZEROCLIP_SEED | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |