Nodes/ComfyUI-ialhabbal/ialhabbal VLLM Advanced
ComfyUI Node

ialhabbal VLLM Advanced

Same Qwen3-VL, but now you get to fiddle with temperature and beams

By ialhabbalΒ·Created 4 months agoΒ·Updated 2 months agoΒ· 7
ialhabbal VLLM Advanced
  • image
  • video
  • RESPONSE
β—„model_nameQwen3-VL-2B-Instructβ–Ί
β—„quantizationNone (FP16)β–Ί
β—„attention_modeautoβ–Ί
β—„use_torch_compilefalseβ–Ί
β—„deviceautoβ–Ί
β—„preset_promptπŸ–ΌοΈ Detailed Descriptionβ–Ί
β—„custom_promptβ–Ί
β—„max_tokens512β–Ί
β—„temperature0.60β–Ί
β—„top_p0.90β–Ί
β—„num_beams1β–Ί
β—„repetition_penalty1.20β–Ί
β—„frame_count16β–Ί
β—„keep_model_loadedtrueβ–Ί
β—„seed1β–Ί

The basic ialhabbal_VLLM node does one thing well: describe the image. This is the same node with the training wheels off - every knob the transformers backend actually has, exposed on the canvas. If you only ever want "describe this picture," skip it. If you want the same answer twice, want it faster, want it on your Mac's GPU, or want to steer how creative the model gets, this is the version you reach for.

It loads the same Qwen3-VL HuggingFace checkpoints into models/LLM/Qwen-VL, runs through the same processor and AutoModelForVision2Seq machinery, and even defaults to the same 2B instruct model. Everything the plain node does, this does - it just lets you change the sampling behavior that was previously hardcoded.

The inputs that matter

Beyond model_name, quantization, preset_prompt/custom_prompt, max_tokens (now up to 4096) and keep_model_loaded, you get:

  • temperature (0.1–1.0, default 0.6) - sampling randomness. The tooltip's framing is right: 0.2–0.4 for focused, predictable output, 0.7+ for creative. For captioning a LoRA set, keep it low; for prompt writing, nudge it up.
  • top_p (0–1, default 0.9) - nucleus sampling. Leave it near default unless output feels incoherent.
  • num_beams (1–8, default 1) - beam search. This one's a trap in a good way: set it above 1 and it disables temperature/top_p and switches to greedy, more stable decoding at the cost of speed. Beam search and sampling are mutually exclusive in the code, so don't crank both expecting them to combine.
  • repetition_penalty (default 1.2) - >1 punishes repeated phrases. If your caption loops, raise it; if it sounds stilted, bring it down toward 1.0.
  • frame_count (1–64, default 16) - how many frames get sampled from a video input. More frames = more context, more time, more VRAM.
  • device - auto, cpu, mps, or explicit cuda:0/cuda:1 for multi-GPU rigs. This is the Mac escape hatch: mps runs on Apple Silicon instead of silently using the CPU.
  • use_torch_compile - off by default; on compatible CUDA/Torch 2.1+ builds it pays a one-time compile cost for faster subsequent runs. Only worth it for batch jobs.

Everything else - the preset prompts, seed, keep_model_loaded, attention_mode - behaves exactly like the base node. Output is a single RESPONSE string.

Why you'd actually pick this one

Two scenarios, honestly. First, reproducibility: with num_beams on and a fixed seed, you get deterministic output, which matters if you're captioning a training set and don't want the model to describe the same image differently on the tenth run. Second, resource control: the device selector plus frame_count are how you squeeze this onto a machine where the plain node's defaults would OOM.

Installing and running

Same suite, same install - ComfyUI Manager search "ComfyUI-ialhabbal", or:

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

Restart, then find ialhabbal VLLM Advanced in the node browser. The heavy dependencies (transformers, bitsandbytes, accelerate) come with the pack.

Common issues

  • Nothing changes when I move temperature - check num_beams. If it's above 1, sampling is off by design.
  • torch.compile stalls on first run - that's the compile pass, not a hang. It can take minutes; subsequent runs are faster.
  • MPS still slow - 4-bit quantization is your friend on Mac; 4-bit plus mps is the way people actually run this on Apple Silicon.
  • VRAM contention - you're now running an LLM and a diffusion model. keep_model_loaded off between runs, or use a 4-bit quant.
CategoryπŸ§ͺialhabbal_VLLM

Inputs (17)

NameTypeDefaultDescription
model_nameCOMBOQwen3-VL-2B-InstructPick the Qwen-VL checkpoint. First run downloads weights into models/LLM/Qwen-VL, so leave disk space.
quantizationCOMBONone (FP16)Precision vs VRAM. FP16 gives the best quality if memory allows; 8-bit suits 8–16 GB GPUs; 4-bit fits 6 GB or lower but is slower.
attention_modeCOMBOautoauto tries flash-attn v2 when installed and falls back to SDPA. Only override when debugging attention backends.
use_torch_compileBOOLEANfalseEnable torch.compile('reduce-overhead') on supported CUDA/Torch 2.1+ builds for extra throughput after the first compile.
deviceCOMBOautoChoose where to run the model: auto, cpu, mps, or cuda:x for multi-GPU systems.
preset_promptCOMBOπŸ–ΌοΈ Detailed DescriptionBuilt-in instruction describing how Qwen-VL should analyze the media input.
custom_promptSTRINGOptional overrideβ€”when filled it completely replaces the preset template.
max_tokensINT51264–4096Maximum number of new tokens to decode. Larger values yield longer answers but consume more time and memory.
temperatureFLOAT0.600.1–1Sampling randomness when num_beams == 1. 0.2–0.4 is focused, 0.7+ is creative.
top_pFLOAT0.900–1Nucleus sampling cutoff when num_beams == 1. Lower values keep only top tokens; 0.9–0.95 allows more variety.
num_beamsINT11–8Beam-search width. Values >1 disable temperature/top_p and trade speed for more stable answers.
repetition_penaltyFLOAT1.200.5–2Values >1 (e.g., 1.1–1.3) penalize repeated phrases; 1.0 leaves logits untouched.
frame_countINT161–64Number of frames extracted from video inputs before prompting Qwen-VL. More frames provide context but cost time.
keep_model_loadedBOOLEANtrueKeeps the model resident in VRAM/RAM after the run so the next prompt skips loading.
seedINT11–4294967295Seed controlling sampling and frame picking; reuse it to reproduce results.
imageoptIMAGEβ€”
videooptIMAGEβ€”

Outputs (1)

NameTypeDescription
RESPONSESTRINGβ€”