Axis To VAE
The node for VAE A/B tests you'd never do by hand
- axis
- VAE
The model-family converters - MODEL, VAE, CLIP - are what turn qq-nodes from "plot the settings list" into "plot anything." Axis To VAE takes the current AXIS_VALUE and hands it back typed as a VAE, so you can sweep actual VAE objects across a grid instead of just numbers and strings.
Be honest about the use case first: you won't grid VAEs every day. When it comes up, it's usually a baked-vs-separate comparison - the grey, washed-out images problem where a checkpoint's baked VAE is mediocre and dropping in vae-ft-mse-840000-ema-pruned fixes it (the classic SD 1.5 move). Or you're testing a fine-tuned VAE against the stock one and want to eyeball the difference column by column. That's a genuinely useful A/B, and it's miserable to do by hand: normally you'd swap the VAE in the loader and regenerate each time. With an axis you wire Axis To VAE's output into VAE Decode (or VAE Encode for the img2img side) and the grid renders the whole comparison in one pass.
The other place it shows up is axis packing. The README's "Axis Packing Grid" example packs a unet, clip and vae into a single axis via Axis Pack → Any List → the helper's row list, then splits them back out with Axis Unpack on the output side. Axis To VAE is the last hop in that chain - unpacked values come out as raw AXIS_VALUEs, and each needs its own converter (Axis To VAE, Axis To MODEL, Axis To CLIP) before it'll plug into a loader. That's the entire reason the config ships MODEL/VAE/CLIP converters at all.
The node itself is one in, one out: axis (AXIS_VALUE) required, VAE output, no optional inputs. It does no loading and no validation - the AXIS_VALUE it receives must already hold a VAE object (pulled from a VAE Loader through the pack/list path), not a filename string. If you want to sweep VAE filenames instead, sweep strings and convert after loading.
Install is part of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/kenjiqq/qq-nodes-comfyui
then restart; Manager (search "qq-nodes-comfyui") works too. No model downloads, no extra Python deps. The grid output needs LEv145/images-grid-comfy-plugin, which the pack injects via node expansion for the final image.
Troubleshooting: type mismatch is the classic - an AXIS_VALUE holding a string won't become a VAE by wishing, so keep object types straight through the pack/unpack path. And the pack-wide habits: Reset the helper before each run, queue one prompt per cell, and update the pack if a ComfyUI upgrade breaks the frontend - an old structuredClone bug around the reset button is fixed in the shipped JS.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| axis | AXIS_VALUE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| VAE | VAE | — |