Nodes/ComfyUI-xiaozhuguang/小珠光qwenVL
ComfyUI Node

小珠光qwenVL

A real vision-language model running on your own GPU, inside the graph

By xiaozhuguang·Created 2 months ago·Updated a day ago· 56
小珠光qwenVL
  • image
  • result
text
modelQwen3-VL-4B-Instruct-FP8
quantizationnone
keep_model_loadedtrue
temperature0.7
max_tokens1024
min_pixels20
max_pixels100
seed-1
attentionsdpa

Most of ComfyUI looks at an image and returns a different image. This node (小珠光 qwenVL) looks at an image - and your question about it - and returns text. It runs an actual Qwen3-VL instruct model on your GPU, through HuggingFace transformers, inside the graph. The jobs it's good at are the ones the KB's LLM-in-graph essay lays out: caption an image into a detailed description, analyze composition or style, answer "what's in this frame," then feed that text to a prompt encoder or a video-prompt node. It's a description/understanding model, not a generator.

Mechanically it's the standard transformers Qwen3-VL stack: the model loads from a local directory (the pack looks under ComfyUI/models/LLM/Qwen-VL/), and the node keeps it resident when keep_model_loaded is on so consecutive calls don't reload. You can run the FP8 variants (default) or the full-precision 4B/8B builds, with optional 4-bit/8-bit quantization on top via bitsandbytes for tight VRAM. Image pixels get fed through a min_pixels/max_pixels budget that controls how many vision tokens the image consumes - lower for speed and memory, higher for detail.

Inputs that matter:

  • text - your instruction. For captioning: "describe this image in detail." For analysis: ask a question. This is a chat model; prompt it like one.
  • model - the checkpoint (Qwen3-VL 4B/8B, Instruct or Thinking, FP8 or full). Thinking variants reason before answering and cost more tokens.
  • quantization - none / 4bit / 8bit. This is the VRAM lever. Note the FP8 models are already 8-bit; adding 4bit on top of FP8 is unusual - mostly you pick the FP8 checkpoint as-is, or the full-precision model with a quant.
  • keep_model_loaded - leave on unless VRAM is tight.
  • temperature - sampling randomness, default 0.7.
  • max_tokens - answer length cap, default 1024.
  • min_pixels / max_pixels - image token budget (default 20 / 100). Bigger max = sharper vision, fatter VRAM.
  • seed - -1 means no fixed seed.
  • attention - sdpa (default), flash_attention_2, or eager. SDPA is the safe default; flash-attn is faster on Ampere+ if you've installed it.
  • image - the optional IMAGE input. Leave it disconnected and it's a plain text LLM.

One output: result (STRING) - the model's answer.

Two honest caveats. First, the dependency weight: this needs transformers>=4.57.1, qwen-vl-utils, and bitsandbytes for quant - all in the pack's declared deps, and all heavy. It also loads models locally only; there's no HF auto-download path, so the checkpoint must actually sit in models/LLM/Qwen-VL/ or you'll get a load error. Second, the quality reality check from the KB: an 8B Qwen3-VL is a solid local captioner, but it can fumble multi-subject attribution - "who's wearing what" gets mixed up - and the Instruct builds carry the usual assistant-style refusals. Fine for SFW scene description and prompt seeds; don't bet a training dataset's accuracy on it.

Install the pack (ComfyUI Manager → ComfyUI-xiaozhuguang), restart, put a Qwen3-VL checkpoint in ComfyUI/models/LLM/Qwen-VL/, and you've got a private, offline vision model in your workflow. The pack's got a Bilibili tutorial if you want the author's worked example.

Categoryxiaozhuguang

Inputs (11)

NameTypeDefaultDescription
textSTRING
modelCOMBOQwen3-VL-4B-Instruct-FP88 options: Qwen3-VL-4B-Instruct-FP8, Qwen3-VL-4B-Thinking-FP8, Qwen3-VL-8B-Instruct-FP8, Qwen3-VL-8B-Thinking-FP8, Qwen3-VL-4B-Instruct, Qwen3-VL-4B-Thinking, +2
quantizationCOMBOnone3 options: none, 4bit, 8bit
keep_model_loadedBOOLEANtrue
temperatureFLOAT0.70–1
max_tokensINT1024128–256000
min_pixelsINT2010–50
max_pixelsINT10050–200
seedINT-1
attentionCOMBOsdpa3 options: sdpa, flash_attention_2, eager
imageoptIMAGE

Outputs (1)

NameTypeDescription
resultSTRING