UniWorld Encoder (Qwen2.5VL)
Your prompt encoder is now a vision-language model
- image
- t5_conditioning
- siglip_vision_output
- CONDITIONING
This is the node that makes the whole pack worth installing. Instead of a plain T5 or CLIP text encoder, UniWorldEncoderNode runs a fine-tuned Qwen2.5-VL vision-language model that takes your edit instruction and your reference image and produces the conditioning tokens FLUX samples from. It's the heart of ComfyUI-UniWorld-jd17, an unofficial ComfyUI port of the image-editing part of PKU-YuanGroup's UniWorld-V1. If you've ever wished a prompt could just look at the picture it's talking about, this is that idea.
What's actually happening
UniWorld-V1's trick is replacing the text encoder with a VLM. A Qwen2.5-VL model is fine-tuned to output "denoising embeddings" - tokens in FLUX's 4096-dim text-embedding space - from a conversation that includes both the instruction text and the image. So "remove the glass in the foreground, keep the reflection" isn't a string; it's an image-plus-text input that the model conditions on. That's why this node looks like a text encoder but has an IMAGE socket.
Mechanically, it builds a Qwen chat message from your prompt and image, applies the model's chat template, smart-resizes the image to the 28px grid with pixel budgets (the qwen-vl-utils resize logic, reimplemented inline - the pack comments out the real qwen-vl-utils dependency), runs a forward pass with output_type="denoise_embeds", then optionally concatenates T5 prompt embeddings and/or injects SigLIP vision embeddings from the pack's companion nodes.
Inputs a beginner actually sets
- uniworld_model_dir - a path to a local, extracted Hugging Face-style directory of the Qwen2.5VL weights. There's no ComfyUI model dropdown; you type the path. If the folder doesn't exist you get a
FileNotFoundError. - model_precision -
bf16ornf4. Must match the weights you extracted. NF4 exists because the bf16 Qwen2.5VL is heavy; it needsbitsandbytesinstalled. - prompt - the edit instruction. Empty is legal: for image-only passes the node returns conditioning anyway.
- no_joint_with_t5 - skip concatenating the T5 conditioning. The author's own workflow note says the graph runs fine without the T5/CLIP encoder wired in, which is equivalent to setting this true; expect slight output differences.
- unload_model_after_use - offloads the VLM from VRAM after each run. Turn it on if you're juggling models.
The three optional inputs - image (your reference), t5_conditioning (from the pack's UniWorld T5/CLIP Encoder), and siglip_vision_output (from the pack's UniWorld Siglip Encoder) - are exactly what the shipped workflow feeds it. The single CONDITIONING output goes into FluxGuidance → BasicGuider → SamplerCustomAdvanced, like a normal FLUX conditioning but produced by a VLM.
Install - the real cost of this pack
Installing the node is trivial (Manager, search "ComfyUI-UniWorld-jd17", or git clone into custom_nodes and restart). The cost is the weights. You need the UniWorld Flux UNet (fp8 or bf16, via UNETLoader) and the Qwen2.5VL encoder model extracted to a folder. The README links pre-processed weights on ModelScope, or you can extract them yourself from the official UniWorld-V1 model with the included scripts. The catch: the extracted folder's config.json must match your precision - the pack ships separate configs under assets/bf16 and assets/nf4 that you drop in. transformers==4.50.0 is pinned for a reason; the author reports 4.52.3 breaks it.
Common issues
The top failure mode is a precision/config mismatch: nf4 weights with a bf16 config, or a config.json you forgot to swap. Next is the transformers pin breaking other nodes. And honestly, this is niche software - the author is upfront that the nodes were written with Gemini's help and "probably" implement the feature correctly, so treat outputs as experimental. Community signal on this exact V1 port is thin; the project has since moved to UniWorld V2 (the Qwen-Image-Edit-2509 route), which is a different architecture with its own guides. If you're choosing fresh, that's worth knowing before you sink a download into this one.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| uniworld_model_dir | STRING | path/to/your/uniworld_hf_model_directory | — |
| model_precision | COMBO | bf16 | 2 options: bf16, nf4 |
| prompt | STRING | — | |
| no_joint_with_t5 | BOOLEAN | false | — |
| unload_model_after_use | BOOLEAN | false | — |
| imageopt | IMAGE | — | |
| t5_conditioningopt | CONDITIONING | — | |
| siglip_vision_outputopt | CLIP_VISION_OUTPUT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |