Nodes/ComfyUI-QwenVL/QwenVL Advanced (GGUF)
ComfyUI Node

QwenVL Advanced (GGUF)

The GGUF QwenVL node with llama.cpp's whole control panel

By aistudynow·Created 11 months ago·Updated 5 months ago· 15
QwenVL Advanced (GGUF)
  • image
  • video
  • RESPONSE
â—„model_nameQwen3VL-4B-Instruct-F16.ggufâ–ş
â—„deviceautoâ–ş
◄preset_prompt🖼️ Detailed Description►
â—„custom_promptâ–ş
â—„max_tokens512â–ş
â—„temperature0.60â–ş
â—„top_p0.90â–ş
â—„repetition_penalty1.20â–ş
â—„frame_count16â–ş
â—„ctx8192â–ş
â—„n_batch512â–ş
â—„gpu_layers-1â–ş
â—„image_max_tokens4096â–ş
â—„top_k0â–ş
â—„pool_size4194304â–ş
â—„keep_model_loadedtrueâ–ş
â—„seed1â–ş

"QwenVL Advanced (GGUF)" is the llama.cpp equivalent of the transformers Advanced node: same GGUF vision pipeline as its plain sibling - Qwen3-VL .gguf weights plus an mmproj projector, auto-downloaded into models/llm/GGUF, driven through llama-cpp-python - but with llama.cpp's full tuning surface exposed. Same pack, same install, same two-file model format. The reason to use this over the plain GGUF node is when the defaults don't fit your hardware: llama.cpp has its own VRAM, context, and batch dials, and sometimes you need them.

What the extra knobs actually do

Start with the ones that matter most. gpu_layers (default -1 = all) controls how many layers get offloaded to the GPU; set it lower to leave VRAM for your diffusion model. ctx is the context window in tokens - 8192 by default, and this matters more than it does for a text LLM because each sampled video frame eats context tokens. n_batch is how many tokens llama.cpp processes per batch; the default 512 is fine, raising it speeds up long prompts at the cost of a bit more memory. image_max_tokens (default 4096) is the token budget the vision projector gets per image - the single most important dial for caption quality, since a cramped budget means the model literally can't "see" all of a busy image.

Then the sampling row, which mirrors the transformer Advanced node: temperature (0.6), top_p (0.9), top_k (0 = off), and repetition_penalty (1.2). Same logic as before - lower temperature for disciplined training captions, higher for creative descriptions - with top_k as an extra llama.cpp-native trim. frame_count (default 16) samples video inputs down before prompting, pool_size is the llama.cpp KV-cache pool size in bytes (you almost never touch it), and device lets you force cpu or mps instead of auto. max_tokens goes to 4096 here, up from 2048 on the plain version.

The inputs that matter

  • gpu_layers - your VRAM trade dial; drop it if the captioner and the sampler are fighting.
  • image_max_tokens - raise it if captions miss details in busy images; each token is vision budget, not text.
  • ctx - raise it for long video-plus-prompt inputs; watch that it eats VRAM on a llama.cpp model.
  • temperature / top_p - the quality-vs-creativity pair from every other node in this pack.

Inputs are image and video (this version drops the extra image_2/image_3 sockets of the plain node), output is a single RESPONSE string, and like the plain GGUF node it is not an output node - wire RESPONSE into a ShowText, aistudynow_SaveText, or your conditioning path to see or use the text.

Getting it

The full pack install applies unchanged - ComfyUI Manager, search "ComfyUI-QwenVL", or:

cd ComfyUI/custom_nodes
git clone https://github.com/aistudynow/ComfyUI-QwenVL

The one thing to budget for is llama-cpp-python, the pack's heaviest dependency: it compiles from source and wants a C/C++ toolchain, so the install can take several minutes or need a prebuilt wheel for your Python version. Every model in the pick list (4B/8B, Instruct/Thinking, F16/Q8_0/Q4_K_M) downloads on first use along with its mmproj projector into models/llm/GGUF.

Where people get burned

The classic mistake is cranking ctx to "big" and then wondering why the card fills up - every context token is held in the KV cache, so a 131k context on a 4B is a memory decision, not a freebie. Second, if captions come back oddly short or vague on detailed images, that's image_max_tokens starving the vision side, not the model being dumb. Third, an entry that downloaded without its mmproj file runs and silently ignores images - the console warns, but you may never look at the console. And if gpu_layers is set low enough to spill the model to CPU, generation gets dramatically slower; llama.cpp will do it, but that's the "why is this taking a minute per caption" answer. The plain GGUF node is the right starting point; this one exists for when the defaults are on the wrong side of your GPU budget.

Categoryđź§ aistudynow/QwenVL

Inputs (19)

NameTypeDefaultDescription
model_nameCOMBOQwen3VL-4B-Instruct-F16.gguf12 options: Qwen3VL-4B-Instruct-F16.gguf, Qwen3VL-4B-Instruct-Q4_K_M.gguf, Qwen3VL-4B-Instruct-Q8_0.gguf, Qwen3VL-4B-Thinking-F16.gguf, Qwen3VL-4B-Thinking-Q4_K_M.gguf, Qwen3VL-4B-Thinking-Q8_0.gguf, +6
deviceCOMBOauto3 options: auto, cpu, mps
preset_promptCOMBO🖼️ Detailed Description9 options: 🖼️ Tags, 🖼️ Simple Description, 🖼️ Detailed Description, 🖼️ Ultra Detailed Description, 🎬 Cinematic Description, 🖼️ Detailed Analysis, +3
custom_promptSTRING—
max_tokensINT51264–4096—
temperatureFLOAT0.600–2—
top_pFLOAT0.900–1—
repetition_penaltyFLOAT1.200.5–2—
frame_countINT161–64—
ctxINT81921024–262144—
n_batchINT51264–32768—
gpu_layersINT-1-1–200—
image_max_tokensINT4096256–1024000—
top_kINT00–32768—
pool_sizeINT41943041048576–10485760—
keep_model_loadedBOOLEANtrue—
seedINT11–4294967295—
imageoptIMAGE—
videooptIMAGE—

Outputs (1)

NameTypeDescription
RESPONSESTRING—