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

QwenVL-F Advanced (GGUF)

The Qwen-VL GGUF node with everything on the table (and the mmproj selector)

By id-fa·Created 6 months ago·Updated 6 days ago· 2
QwenVL-F Advanced (GGUF)
  • image
  • image2
  • image3
  • video
  • RESPONSE
model_name(no models found — see console)
mmproj_nameauto
deviceauto
preset_prompt🖼️ Detailed Description
custom_prompt
max_tokens512
temperature0.60
top_p0.90
repetition_penalty1.20
frame_count16
ctx32768
n_batch8192
gpu_layers-1
image_max_tokens8192
image_min_tokens1024
top_k0
pool_size4194304
enable_thinkingfalse
mtp_draft_tokens0
stop_words
keep_model_loadedfalse
seed1

This is the node the fork is actually about. QwenVL-F Advanced (GGUF) is the screenshot on the README, the one with a knob for everything: the llama.cpp GGUF vision engine, an explicit mmproj_name selector, context and batch sizes, GPU offload, image token budgets, three image inputs, and even Gemma 4 support on top of the Qwen line. If the simple GGUF node is "run the defaults," this one is "build it your way."

The pitch: run Qwen3-VL vision-language models from single-file .gguf quants, so a Q4_K_M on a modest card behaves, and you control exactly how llama.cpp spends your memory. The cost is that every file and every knob is on you.

The dials that matter

  • mmproj_name - the fork's signature addition. Every *mmproj*.gguf on disk shows up here; auto (default) picks the projector sitting next to your model. You only touch it when you have several projectors lying around or the auto-pick grabs the wrong one.
  • ctx and n_batch - context length (default 32768, up to 262144) and batch size (default 8192). Bigger ctx means longer conversations/captions but more KV cache memory. n_batch is a speed/VRAM tradeoff.
  • gpu_layers - how many layers offload to the GPU. -1 means all of them; on a low-VRAM card, start there and step down until it fits. Set this before anything else if llama.cpp is crashing on load.
  • image_max_tokens / image_min_tokens - the token budget for the vision encoder (defaults 8192 / 1024). These control how much visual detail survives into the model; too low and fine details blur into caption mush.
  • top_k, temperature, top_p, repetition_penalty - the sampling set. top_k 0 means off.
  • frame_count for video, pool_size (llama.cpp's memory pool, default ~4 MB), stop_words, enable_thinking, keep_model_loaded, seed.

And the three IMAGE inputs (image, image2, image3) for multi-image analysis, plus video. One RESPONSE string out - wire it to a text encoder, a display, or a caption pipeline.

Install - same fork rule, heavier dependency

Model discovery is identical to the rest of the pack: the dropdowns scan models/text_encoders and models/LLM recursively, nothing downloads itself, and a missing model raises an error listing the folders checked. The dependency is the part to get right:

cd ComfyUI/custom_nodes
git clone https://github.com/id-fa/ComfyUI-QwenVL-F
pip install -r requirements.txt
python tools/install_helper.py --python "C:\AI\ComfyUI\python_embeded\python.exe" --run

The helper resolves your CUDA version (from nvidia-smi, falling back to nvcc, then torch.version.cuda) and installs the matching JamePeng llama-cpp-python vision wheel plus a CUDA PyTorch. It installs nothing unless you pass --run - run it once without to see the plan. The wheel must include the Qwen3VLChatHandler / Qwen25VLChatHandler chat handlers, or every run dies with an ImportError.

Common issues

  • Gemma 4 .gguf - auto-detected by filename and switched to Gemma4ChatHandler, but that needs the JamePeng fork at v0.3.35+. Older llama-cpp-python raises ImportError on load; that's the error message telling you to update, not a model problem.
  • OOM on load - drop gpu_layers, shrink ctx, or move image_max_tokens down before blaming the model.
  • Wrong projector - if captions are garbage or the model won't load, check which mmproj is actually being used instead of trusting auto.
  • Censored output - the Qwen3-VL Instruct quants carry the usual assistant refusals; if that matters for your use case, find an abliterated build.

Qwen3-VL-4B or 8B GGUF at Q4_K_M/Q8_0 is the sane starting point; on the GGUF ladder Q8 is essentially fp16 quality at half the size, so take it when it fits.

CategoryQwenVL-F

Inputs (26)

NameTypeDefaultDescription
model_nameCOMBO(no models found — see console)Pick a .gguf already present under models/text_encoders or models/LLM. Nothing is downloaded automatically — copy the file in yourself, then reload ComfyUI.
mmproj_nameCOMBOautoVision projector to pair with the model. auto picks the first *mmproj*.gguf sitting next to it.
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–32768
temperatureFLOAT0.600–2
top_pFLOAT0.900–1
repetition_penaltyFLOAT1.200.5–2
frame_countINT161–64
ctxINT327681024–262144
n_batchINT819264–32768
gpu_layersINT-1-1–200
image_max_tokensINT8192256–1024000
image_min_tokensINT102464–1024000
top_kINT00–32768
pool_sizeINT41943041048576–10485760
enable_thinkingBOOLEANfalse
mtp_draft_tokensINT00–8Multi-token prediction (speculative decoding) from the NextN/MTP heads inside the GGUF — Qwen3.5 / 3.6 / 3.8 MTP builds. 0 disables it, 2 is a good starting point. Needs llama-cpp-python v0.3.48+ and is ignored while a vision (mmproj) handler is loaded, because MTP is text-only.
stop_wordsSTRING
keep_model_loadedBOOLEANfalse
seedINT11–4294967295
imageoptIMAGE
image2optIMAGE
image3optIMAGE
videooptIMAGE

Outputs (1)

NameTypeDescription
RESPONSESTRING