ComfyUI Node

Qwen VL Run

Get a local model to describe your image for you

By billwuhao·Created 2 years ago·Updated about a year ago· 24
Qwen VL Run
  • image
  • next_image
  • video
  • STRING
text
modelQwen2.5-VL-3B-Instruct
keep_model_loadedfalse
temperature0.7
max_new_tokens512
seed0

This is QwenLLMRun's sibling, except instead of just reading text, it can look at an image and tell you about it. Feed it a picture and an instruction, and it writes a description back as a string - a local, no-API-key vision-language model doing reverse prompt engineering for you: instead of writing a prompt and getting an image, you hand it an image and get a prompt-shaped description out.

How it works

Under the hood it's running Qwen2.5-VL-3B-Instruct, a vision-language model, entirely on your own GPU. You give it text (your instruction - something like "describe this image for a Stable Diffusion prompt"), and optionally an image for it to actually look at. It generates a response with the same kind of sampling controls a text LLM uses, and returns a single string.

The inputs and outputs that matter

  • text - your instruction to the model. Required, but defaults to empty, so fill it in.
  • image (optional) - the picture you want described. This is the input that actually gives it something to react to; if you skip it, you're just running the model as a plain text LLM.
  • next_image (optional) - a second image slot. Worth knowing about specifically for workflows where you want the model to compare two shots - describing motion, a transition, or a before/after - rather than just captioning one still.
  • video (optional, typed as IMAGE) - for describing a sequence rather than a single frame. Under the hood ComfyUI represents video as a batch of image frames, which is why this input shares the IMAGE type instead of having its own.
  • temperature and max_new_tokens - the sampling controls this node exposes. Note it's a shorter list than QwenLLMRun's: there's no top_k or top_p here, just temperature.
  • keep_model_loaded and seed - same behavior as on the text node: whether it stays in VRAM between runs, and reproducibility.

Output is a single STRING. A natural chain is: QwenVLRun describes a reference image → that description feeds into QwenLLMRun (or straight into a text encoder) as the working prompt.

How to install it

ComfyUI Manager: search "ComfyUI_OneButtonPrompt", install, restart. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/billwuhao/ComfyUI_OneButtonPrompt_Flux

Restart ComfyUI. No explicit dependency list ships in the README - if import fails, check the console for a missing package (vision-language inference typically needs transformers and image-processing libraries) and install into ComfyUI's own environment.

Common issues

First run is slow. Same story as the text node - it's pulling the Qwen2.5-VL-3B weights from Hugging Face the first time, which takes a while depending on your connection. After that it's local and fast.

Output doesn't reference the image at all. Double-check you actually wired something into image - it's optional in the schema, so ComfyUI won't complain if you forget it, but the model has nothing to look at and will just answer your text as a plain instruction.

VRAM pressure with your diffusion model loaded too. Same tradeoff as QwenLLMRun: keep_model_loaded=false is the default because a 3B vision model competes for the same GPU memory your image generator needs. Only turn it on if you've got room to spare.

CategoryMW-OneButtonPrompt

Inputs (9)

NameTypeDefaultDescription
textSTRING
modelCOMBOQwen2.5-VL-3B-Instruct1 options: Qwen2.5-VL-3B-Instruct
keep_model_loadedBOOLEANfalse
temperatureFLOAT0.70–1
max_new_tokensINT512128–2048
seedINT00–18446744073709550000
imageoptIMAGE
next_imageoptIMAGE
videooptIMAGE

Outputs (1)

NameTypeDescription
STRINGSTRING