Nodes/ComfyUI-easygoing-nodes/VAE Scale Qwen Block
ComfyUI Node

VAE Scale Qwen Block

Dialing the decoder behind the 'too smooth' complaint

By easygoing0114·Created 12 months ago·Updated 5 days ago· 5
VAE Scale Qwen Block
  • vae
  • VAE
conv11.00
conv21.00
encoder.conv11.00
encoder.downsamples.0.1.00
encoder.downsamples.1.1.00
encoder.downsamples.2.1.00
encoder.downsamples.3.1.00
encoder.downsamples.4.1.00
encoder.downsamples.5.1.00
encoder.downsamples.6.1.00
encoder.downsamples.7.1.00
encoder.downsamples.8.1.00
encoder.downsamples.9.1.00
encoder.downsamples.10.1.00
encoder.middle.0.1.00
encoder.middle.1.1.00
encoder.middle.2.1.00
encoder.head.1.00
decoder.conv11.00
decoder.middle.0.1.00
decoder.middle.1.1.00
decoder.middle.2.1.00
decoder.upsamples.0.1.00
decoder.upsamples.1.1.00
decoder.upsamples.2.1.00
decoder.upsamples.3.1.00
decoder.upsamples.4.1.00
decoder.upsamples.5.1.00
decoder.upsamples.6.1.00
decoder.upsamples.7.1.00
decoder.upsamples.8.1.00
decoder.upsamples.9.1.00
decoder.upsamples.10.1.00
decoder.upsamples.11.1.00
decoder.upsamples.12.1.00
decoder.upsamples.13.1.00
decoder.upsamples.14.1.00
decoder.head.1.00

Of all the VAE-scale nodes in this pack, this is the one with a real community story behind it. The Qwen-Image VAE is famous for two things: it renders small text legibly, and - per the loudest complaint in the community - it over-smooths, washing out fine texture and contrast. That's not a bug, it's a design decision: Qwen took the Wan 2.1 autoencoder, froze its encoder, and retuned the decoder on text-rich images so that small text stays crisp. Crisp text and fine photographic texture turned out to be in tension, and the decoder is where the texture went.

VAE Scale Qwen Block lets you scale that VAE stage by stage - and since the culprit is specifically the decoder's behavior, this is the tool for poking at it directly rather than doing a whole-VAE swap.

What the widgets map to

The key names follow Qwen's layout, which is Wan-style rather than SDXL-style. At the top you get conv1 and conv2 (the latent I/O convs), then encoder.conv1, encoder.downsamples.00.10, encoder.middle.0.2, encoder.head. - and the decoder mirror: decoder.conv1, decoder.middle.*, a long run of decoder.upsamples.0.14, and decoder.head.. That's 38 scale widgets, all defaulting to 1.0 over a 0.0–2.0 range. The decoder's 15 upsampling stages are where the texture-versus-text trade-off lives, so that's the natural place to start experimenting.

How it works

Same engine as the pack's other VAE scales: read the VAE's state dict, match each tensor to the longest key-prefix scale, multiply, rebuild a fresh VAE in memory. Output is one VAE - wire it into VAEDecode, or save it if you want the scaled version on disk. Longest-prefix matching means decoder.upsamples.5. scales only that stage, not the whole decoder.

Where it fits (and doesn't)

If your actual goal is "less Qwen smoothing, more Wan texture," the community's tested move is still the Wan 2.1 decoder swap - it works because Qwen froze Wan's encoder, so the latent spaces are identical and the Wan decoder is a genuine drop-in. That's a replacement, and this node can't do it. What this can do is attenuation: tone down specific decoder stages toward 0 to see how much of the Qwen look they own, or amplify one to lean further into it. It's a research instrument, and the honest thing to say is that most people will get more out of a Wan decoder swap or a whole-VAE blend than out of per-stage scaling.

Two rules keep you out of trouble. Only scale a Qwen-Image VAE here - don't feed it an SDXL VAE (4-channel vs 16-channel) or you'll get noise. And keep scales modest: zeroing stages or pushing toward 2.0 can shove activations out of range, which reads as black or NaN output.

Installing it

From the easygoing0114/ComfyUI-easygoing-nodes pack. In ComfyUI Manager, search Easygoing and install; or:

cd ComfyUI/custom_nodes
git clone https://github.com/easygoing0114/ComfyUI-easygoing-nodes.git

Restart. No model downloads, no extra dependencies - but the pack requires a current ComfyUI build with V3 node API support, so update ComfyUI if the nodes don't show up.

It's niche even by VAE-surgery standards. But if the Qwen smoothing debate ever made you want to see the decoder's internals for yourself, this is the cleanest way in.

Categoryadvanced/model_merging/model_specific

Inputs (39)

NameTypeDefaultDescription
vaeVAE
conv1FLOAT1.000–2
conv2FLOAT1.000–2
encoder.conv1FLOAT1.000–2
encoder.downsamples.0.FLOAT1.000–2
encoder.downsamples.1.FLOAT1.000–2
encoder.downsamples.2.FLOAT1.000–2
encoder.downsamples.3.FLOAT1.000–2
encoder.downsamples.4.FLOAT1.000–2
encoder.downsamples.5.FLOAT1.000–2
encoder.downsamples.6.FLOAT1.000–2
encoder.downsamples.7.FLOAT1.000–2
encoder.downsamples.8.FLOAT1.000–2
encoder.downsamples.9.FLOAT1.000–2
encoder.downsamples.10.FLOAT1.000–2
encoder.middle.0.FLOAT1.000–2
encoder.middle.1.FLOAT1.000–2
encoder.middle.2.FLOAT1.000–2
encoder.head.FLOAT1.000–2
decoder.conv1FLOAT1.000–2
decoder.middle.0.FLOAT1.000–2
decoder.middle.1.FLOAT1.000–2
decoder.middle.2.FLOAT1.000–2
decoder.upsamples.0.FLOAT1.000–2
decoder.upsamples.1.FLOAT1.000–2
decoder.upsamples.2.FLOAT1.000–2
decoder.upsamples.3.FLOAT1.000–2
decoder.upsamples.4.FLOAT1.000–2
decoder.upsamples.5.FLOAT1.000–2
decoder.upsamples.6.FLOAT1.000–2
decoder.upsamples.7.FLOAT1.000–2
decoder.upsamples.8.FLOAT1.000–2
decoder.upsamples.9.FLOAT1.000–2
decoder.upsamples.10.FLOAT1.000–2
decoder.upsamples.11.FLOAT1.000–2
decoder.upsamples.12.FLOAT1.000–2
decoder.upsamples.13.FLOAT1.000–2
decoder.upsamples.14.FLOAT1.000–2
decoder.head.FLOAT1.000–2

Outputs (1)

NameTypeDescription
VAEVAE