Model Switch
The lazy model switch that only loads the pair you picked
- set_a_high
- set_a_low
- set_b_high
- set_b_low
- MODEL_HIGH
- MODEL_LOW
The name sounds like something out of an electronics textbook, but the problem it solves is the one you hit the moment you run two video models out of one workflow: two model configurations, one graph, and no desire to load the model you aren't using. "DPDT" is a double-pole, double-throw relay - two inputs in, one of two sources selected - and that's exactly what this node is. It toggles between two pairs of MODEL inputs and passes the chosen pair through as MODEL_HIGH and MODEL_LOW.
Why pairs? GGUF quantizations of video models commonly ship a "high" and a "low" weight set - say a higher-bit text-to-video GGUF and a lower-bit one, or a T2V and an I2V config of the same model. The README's framing is a T2V GGUF set versus an I2V GGUF set, both wired in permanently, with a single dropdown deciding which one actually runs. Video workflows (LTX, Hunyuan, WAN) are where this earns its keep, because their checkpoints are big and slow to load; a low-VRAM GGUF setup is often the whole reason you can run them at all.
The mechanism is what makes it worthwhile: all four MODEL inputs are marked lazy. Only the pair matching the current switch selection is actually evaluated upstream, so the other pair's loaders never execute - that checkpoint never loads into memory or onto the GPU. Flip switch to Set_B and the Set_A loaders just don't run. It's the same lazy-evaluation trick that powers the whole family of switch nodes in ComfyUI.
Inputs, the short list:
switch-Set_A (T2V GGUF)orSet_B (I2V GGUF). This is the only widget you touch.set_a_high,set_a_low,set_b_high,set_b_low- allMODEL, all required, all lazy.
Outputs are MODEL_HIGH and MODEL_LOW, which wire straight into your sampler's model input (or a model patch chain before it).
One thing the README is careful to say: this is a lazy switch, not an optional one. Both pairs still have to be wired into the graph for the workflow to be valid. But being wired is cheap - the cost is only paid when you actually select that pair. If the selected pair is missing one of its two models, the node raises a clear ValueError naming exactly what's missing instead of silently feeding None into the sampler, which would just crash later in a much more confusing place.
Install is the same as every node in this pack:
cd ComfyUI/custom_nodes
git clone https://github.com/jjmaden/comfyui-jjmaden-random-nodes
Then restart ComfyUI. ComfyUI Manager users can search "JJMaden Random Nodes" instead. The pack is MIT, has zero Python dependencies beyond ComfyUI itself, and needs no model downloads - it's a personal collection from one author (jjmaden), so don't expect a support channel.
Where people get tripped up: the two outputs are HIGH/LOW, so if you wire MODEL_HIGH into a model that only wants one model input (most samplers), make sure you're feeding the right one for the job you picked. And remember the selection is a widget, not an input - you can't drive it from a prompt or an API field mid-run. For A/B-ing model pairs in one graph, this is genuinely the one to reach for; it's small, does exactly what the README says, and doesn't load what you don't need.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| switch | COMBO | Set_A (T2V GGUF) | 2 options: Set_A (T2V GGUF), Set_B (I2V GGUF) |
| set_a_high | MODEL | — | |
| set_a_low | MODEL | — | |
| set_b_high | MODEL | — | |
| set_b_low | MODEL | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MODEL_HIGH | MODEL | — |
| MODEL_LOW | MODEL | — |