VAE Scale FLUX2 Block
Per-stage dials on Black Forest Labs' retrained autoencoder
- vae
- VAE
The FLUX.2 VAE is not the FLUX.1 VAE with a patch. When Black Forest Labs shipped FLUX.2 in late 2025, it retrained the latent space from scratch - a new autoencoder with its own trade-off between learnability, quality and compression - and released that VAE standalone under Apache 2.0. VAE Scale FLUX2 Block is this pack's per-stage scaling node for that newer codec, and it's the one to pick when you're working with FLUX2-family models.
What the widgets map to
The layout is close to the SDXL scale node: quant_conv and post_quant_conv at the latent I/O ends, then encoder.down.0–down.3, encoder.mid.*, the mirrored decoder.* stages. Everything defaults to 1.0, runs 0.0–2.0, and 0.0 zeroes a stage outright. It's a slightly coarser table than the FLUX1 scale node (no per-block breakdown inside each down/up stage), which makes sense - FLUX2's VAE structure is more like the classic SDXL layout than FLUX1's.
One implementation detail worth knowing: this node explicitly skips integer and boolean tensors when scaling. VAEs carry a few non-float buffers (counters, masks, that kind of thing), and multiplying those by a scale would just corrupt them - so they pass through untouched. If you ever diff the scaled VAE against the original and wonder why "everything" didn't scale, that's the answer.
How it works
Standard pack engine: read the VAE state dict, match each tensor to the longest-prefix key, multiply, and build a brand-new VAE in memory. Nothing is saved to disk by the node itself - wire the VAE output into VAEDecode, or save it with a VAE-save node if you want to keep the result. Because the output is a fully materialized VAE rather than a lightweight patch, be aware each run does a real state-dict rebuild; that's fine on modern hardware, but it's not free.
Honest positioning
Do you need this? Almost certainly not. It's a dissection and experiment tool: if you want to learn which stage of the FLUX2 VAE controls color versus fine detail, or you're researching why FLUX2 output looks the way it does, this is how you probe it. If you just want to use FLUX2, leave the VAE alone - the retrained latent space is a feature, not something to fix. And the cross-architecture rule from the rest of the family applies: only scale a FLUX2 VAE with the FLUX2 node. Feeding it an SDXL or Qwen VAE keys off names that don't exist and quietly does nothing useful.
Installing it
Comes with the easygoing0114/ComfyUI-easygoing-nodes pack. ComfyUI Manager → search Easygoing, or:
cd ComfyUI/custom_nodes
git clone https://github.com/easygoing0114/ComfyUI-easygoing-nodes.git
Restart. No models to download, no pip extras; but the pack is V3-schema-only, so keep ComfyUI current or none of these nodes will register. If you're updating the pack from an old version and a node looks broken, delete and re-add it - the migration occasionally misses.
A niche surgical tool for the newest mainstream autoencoder. Keep the knobs near 1.0 and it'll never hurt you; take them elsewhere and at least you'll learn something.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| vae | VAE | — | |
| quant_conv | FLOAT | 1.000–2 | — |
| post_quant_conv | FLOAT | 1.000–2 | — |
| encoder.conv_in | FLOAT | 1.000–2 | — |
| encoder.conv_out | FLOAT | 1.000–2 | — |
| encoder.norm_out | FLOAT | 1.000–2 | — |
| encoder.down.0. | FLOAT | 1.000–2 | — |
| encoder.down.1. | FLOAT | 1.000–2 | — |
| encoder.down.2. | FLOAT | 1.000–2 | — |
| encoder.down.3. | FLOAT | 1.000–2 | — |
| encoder.mid.attn_1. | FLOAT | 1.000–2 | — |
| encoder.mid.block_1. | FLOAT | 1.000–2 | — |
| encoder.mid.block_2. | FLOAT | 1.000–2 | — |
| decoder.conv_in | FLOAT | 1.000–2 | — |
| decoder.conv_out | FLOAT | 1.000–2 | — |
| decoder.norm_out | FLOAT | 1.000–2 | — |
| decoder.mid.attn_1. | FLOAT | 1.000–2 | — |
| decoder.mid.block_1. | FLOAT | 1.000–2 | — |
| decoder.mid.block_2. | FLOAT | 1.000–2 | — |
| decoder.up.0. | FLOAT | 1.000–2 | — |
| decoder.up.1. | FLOAT | 1.000–2 | — |
| decoder.up.2. | FLOAT | 1.000–2 | — |
| decoder.up.3. | FLOAT | 1.000–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| VAE | VAE | — |