ialhabbal VLLM
An image-describing LLM node with no API key
- image
- video
- RESPONSE
Drop an image in, get a written description out - that's the whole trick. ialhabbal_VLLM runs a Qwen3-VL vision-language model inside ComfyUI, fully local, no API calls, no key. Feed it a generated frame and it hands back a caption you can pipe straight into a CLIPTextEncode, a LoRA trainer, or another LLM. It's the "describe the image so I can re-prompt it" job that used to mean copy-pasting into a browser tab, now sitting in your graph like any other node.
It's part of the ialhabbal_VLLM family in the ComfyUI-ialhabbal suite, which also covers GGUF-quantized models and prompt enhancement. If your only goal is "look at this picture and tell me what it is," this is the node you want.
How it works
The node loads a HuggingFace checkpoint with transformers - specifically AutoModelForVision2Seq plus the Qwen processor. First run calls snapshot_download and pulls the weights into ComfyUI/models/LLM/Qwen-VL, so budget for a multi-gigabyte download and some disk space before you hit run. The model stays loaded between runs if you leave keep_model_loaded on, which is the default and the right choice unless you need the VRAM back.
Images go in as a tensor; the processor turns them into tokens the model can see. Video inputs are handled by sampling frames - the base node pulls 16 evenly-spaced frames, so a 10-second clip doesn't blow up your context.
The three inputs a beginner actually touches:
- model_name - 18 Qwen3-VL checkpoints, from 2B up to 32B, including
Thinkingvariants andFP8quantized releases. The defaultQwen3-VL-2B-Instructis a fine place to start. - quantization -
None (FP16)for best quality,8-bitfor 8β16 GB cards,4-bitfor 6 GB or less. The tooltip is blunt about the trade: 4-bit fits small VRAM but runs slower. - preset_prompt - the instruction that tells Qwen what to do. Options range from
TagsandSimple DescriptionthroughCinematic Description,Video Summary, and evenShort Story. Fillcustom_promptand it completely replaces the preset.
max_tokens caps answer length (default 512), seed controls both sampling and which video frames get picked. Leave attention_mode on auto - it tries flash-attn v2 when installed and falls back to the built-in SDPA otherwise.
The single output is RESPONSE, a plain STRING. Wire it into a CLIPTextEncode text input, a Show Text node, or anywhere else a string goes.
Installation
Install the whole suite once - the VLLM nodes ride along:
cd ComfyUI/custom_nodes
git clone https://github.com/ialhabbal/ComfyUI-ialhabbal.git
Then restart ComfyUI. Or search ComfyUI-ialhabbal in ComfyUI Manager and hit Install. The VLLM nodes need the heavy transitive dependencies from the pack's pyproject (transformers, huggingface-hub, bitsandbytes, accelerate, hf_xet, and llama-cpp-python[server] for the GGUF siblings), so the first launch after install may take a while as pip sorts that out.
Common issues
- First run looks frozen - it's downloading weights. Check the console;
snapshot_downloadcan sit there for a while on a big checkpoint. - OOM on load - step down a quantization level or pick a smaller model. A 32B at FP16 is a 28 GB affair; that's not the default for a reason.
- Flash-attn errors - unnecessary.
autohandles the fallback; only overrideattention_modewhen you're debugging a specific backend. - VRAM never comes back -
keep_model_loadedis on. Flip it off when you need the card for the diffusion side, and accept the reload cost per run.
It's a captioner, not a fortune teller. Like every VLM, Qwen3-VL will occasionally mix up which person is wearing what in a busy frame - read its output before you treat it as ground truth.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | Qwen3-VL-2B-Instruct | Pick the Qwen-VL checkpoint. First run downloads weights into models/LLM/Qwen-VL, so leave disk space. |
| quantization | COMBO | None (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_mode | COMBO | auto | auto tries flash-attn v2 when installed and falls back to SDPA. Only override when debugging attention backends. |
| preset_prompt | COMBO | πΌοΈ Detailed Description | Built-in instruction describing how Qwen-VL should analyze the media input. |
| custom_prompt | STRING | Optional overrideβwhen filled it completely replaces the preset template. | |
| max_tokens | INT | 51264β2048 | Maximum number of new tokens to decode. Larger values yield longer answers but consume more time and memory. |
| keep_model_loaded | BOOLEAN | true | Keeps the model resident in VRAM/RAM after the run so the next prompt skips loading. |
| seed | INT | 11β4294967295 | Seed controlling sampling and frame picking; reuse it to reproduce results. |
| imageopt | IMAGE | β | |
| videoopt | IMAGE | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| RESPONSE | STRING | β |