Nodes/ComfyUI-Switti/Build Switti Pipeline
ComfyUI Node

Build Switti Pipeline

The one node you must not forget

By RyukoMatoiFan·Created 8 months ago·Updated 8 months ago· 0
Build Switti Pipeline
  • switti_core
  • switti_vae
  • switti_text
  • SWITTI_MODEL

The three loaders in this pack give you three fragments: a SWITTI_CORE transformer, a SWITTI_VAE, and a SWITTI_TEXT encoder pair. This node is the glue that snaps them into a single working SWITTI_MODEL - and it's the one people forget, because nothing about it looks like it's doing anything. There's no model file attached, no dropdown, no slider. Just three inputs, one output, and a very useful error message hiding inside.

Here's what actually happens when you hit "Queue." The node constructs a SwittiPipeline from the three pieces, moves the text encoders onto the target device and dtype (bf16 on CUDA if supported, fp16 otherwise, fp32 on CPU), and wires the core, VAE, and encoders together so the sampler can call the whole thing as one object. Think of it as the constructor call that turns parts into a runnable model.

But the part that earns it a section of its own is the resolution check. Switti comes in 512 and 1024 variants, and the core and VAE must agree. The node compares their patch maps (patch_nums) and refuses to build if they don't:

Switti core/VAE resolution mismatch. Load matching 512 or 1024 checkpoints.

That's a genuinely good error - it catches the single most common way to screw up this pack (loading a 512 core with a 1024 VAE or vice versa) at build time, before you've queued a generation and waited to find out the hard way. Because of the check, you can treat "the pipeline builds" as a strong signal that your loaders are internally consistent.

The inputs are all required - switti_core, switti_vae, switti_text - each wired straight from the corresponding loader:

  • switti_coreLoad Switti Checkpoint
  • switti_vaeLoad Switti VAE Checkpoint
  • switti_textLoad Switti Dual CLIP

And the single output, SWITTI_MODEL, goes into the switti_pipe input on Switti Sampler. That's the whole graph skeleton of this pack: three loaders → this builder → sampler → SaveImage. The reference workflow (workflows/switti_basic.json) is exactly this, five nodes and a prompt text box.

Installation is the same story as the rest of the pack - ComfyUI Manager → search "ComfyUI-Switti", or:

cd ComfyUI/custom_nodes
git clone https://github.com/RyukoMatoiFan/ComfyUI-Switti

then restart. The dependencies live in the vendored switti/requirements.txt (transformers==4.45.2, diffusers==0.31.0, huggingface_hub==0.26.2, torchvision==0.19.1) rather than the pack root, so if ComfyUI doesn't auto-install them, pip install -r switti/requirements.txt is your move.

Where people get burned with this node specifically: they load all three pieces, forget this step, and then stare at Switti Sampler wondering why its switti_pipe input has no compatible sockets. The pipeline object is the model - there's no shortcut around the builder. And when it does fail, nine times out of ten it's the resolution mismatch error above, which means one of your loaders picked the wrong resolution. Fix the loader, not this node. It's doing its job.

Categoryloaders

Inputs (3)

NameTypeDefaultDescription
switti_coreSWITTI_CORE
switti_vaeSWITTI_VAE
switti_textSWITTI_TEXT

Outputs (1)

NameTypeDescription
SWITTI_MODELSWITTI_MODEL