Nodes/RUM FLUX.2-Klein Native/RUM FLUX.2 Combine Conditioning
ComfyUI Node

RUM FLUX.2 Combine Conditioning

Where the Qwen stream meets the SDXL teacher

By Rinne414·Created 5 months ago·Updated 2 months ago· 8
RUM FLUX.2 Combine Conditioning
  • flux2_conditioning
  • sdxl_conditioning
  • conditioning
guidance5.0
use_guidance_embeddingfalse
base_text_tokens512
extra_text_tokens77
sdxl_clip_width2048
use_sdxl_extratrue

RUM's whole trick is that it doesn't just fine-tune FLUX.2-Klein and call it a day. It runs two text conditioning streams - the FLUX.2 model's own Qwen3 4B encoder and the SDXL teacher CLIP (the waiNSFWIllustrious pair) - and stitches them into one embedding the transformer can attend to. RUMFlux2CombineConditioning is the node that does the stitching.

If the diffusers-match text encoder is the "everything in one box" node, this is the "show me the plumbing" node: it takes an already-encoded FLUX.2 conditioning and an already-encoded SDXL conditioning and merges them on the token axis. It's how RUM gets SDXL-class anime quality out of a 4B model - the teacher's CLIP tokens ride along inside the conditioning like extra context the student was trained to use.

The inputs that matter

  • flux2_conditioning - the Qwen-side embedding (from RUMFlux2NativeMatchTextEncode or a normal Qwen CLIP encode).
  • sdxl_conditioning - the teacher CLIP embedding. Use RUMSDXLDiffusersTextEncode for this, not a random SDXL encode on a random CLIP - the teacher weights are specific.
  • base_text_tokens - how many Qwen tokens stay as the base (512 native / 200 diffusers-match). The tooltip warns a mismatch yields a damaged image, not an error.
  • extra_text_tokens - how many SDXL tokens get appended, default 77 (the classic SDXL CLIP chunk).
  • sdxl_clip_width - the SDXL conditioning's feature width, default 2048 (CLIP-L + CLIP-G combined). Don't touch it unless you know why.
  • use_sdxl_extra - append real SDXL tokens, or pad zeros instead. Leave on.
  • guidance / use_guidance_embedding - optionally embed the guidance value into the conditioning meta rather than applying CFG purely at sampling time. With the toggle off, guidance is ignored.

Output is a single conditioning that feeds your sampler or guider.

Install

Pack-level: clone into custom_nodes, pip install -r requirements.txt, restart, and have the RUM checkpoints plus teacher CLIPs downloaded:

cd ComfyUI/custom_nodes
git clone https://github.com/Rinne414/ComfyUI-RUM
cd ComfyUI-RUM
pip install -r requirements.txt
python scripts/download_models.py --comfy-root /path/to/ComfyUI --include-teacher-clip

How to actually use it

The plain-native route builds the two halves yourself - Qwen CLIP encode, teacher CLIP encode, then this node. The diffusers-match route folds all of it into RUMFlux2NativeMatchTextEncode, which calls this same combine logic internally. So your honest choice is: want control and visibility, build it manually; want the reference-behaved result, use the match node and skip this one.

The one real gotcha is consistency: base_text_tokens here has to equal the value on your model loader and any match-patch node, or you get the structural corruption the tooltip warns about. RUM is also a real-CFG model (unlike the guidance-distilled Klein weights where you leave CFG at 1 and negatives do nothing), so pairing this with working negative prompts is legitimate - the whole SDXL conditioning stream is what makes that possible.

CategoryRUM/native

Inputs (8)

NameTypeDefaultDescription
flux2_conditioningCONDITIONING
sdxl_conditioningCONDITIONING
guidanceFLOAT5.00–100
use_guidance_embeddingBOOLEANfalse
base_text_tokensINT5121–4096必须与模型加载/patch 节点的 base_text_tokens 一致,否则会得到损坏的画面。
extra_text_tokensINT771–512
sdxl_clip_widthINT20481–8192
use_sdxl_extraBOOLEANtrue

Outputs (1)

NameTypeDescription
conditioningCONDITIONING