[Legacy] Modern VLM Compatibility
The big-model and old-workflow tier of Modern VLM — saved by the compatibility node
- image
- video_frames
- video_selection
- STRING
The [Legacy] tag in the name isn't "dead code, run away." It's the pack author being honest about curation: the current Modern VLM picker shows twelve models that fit most GPUs and are actively maintained, and everything redundant, superseded, or just too big for most rigs got moved here so the main menu stays clean. This node exists so your old saved workflows keep working and so you can still reach the heavy hitters when you have the hardware.
What's actually in here? The big Qwen tiers - Qwen 3.5 2B/9B/27B/35B-A3B, Qwen 3.6 27B, Qwen 3 VL 30B-A3B, plus Qwen 2.5 VL 3B/7B for workflows built before Qwen 3 VL existed. Gemma 3 12B and 27B IT (the 27B is gated and basically demands 4-bit), SmolVLM2 256M Video, LFM2.5-VL 1.6B, InternVL 3.5 2B, and Granite Vision 3.3 2B. The defaults even warn you where it matters: several entries say "(4-bit recommended)" right in the dropdown, because 27B-class models in BF16 are how you run out of VRAM at 10 a.m.
Mechanically it's the exact same node as ModernVLM - same Transformers loading, same memory_mode options (ComfyUI managed BF16, NF4, 8-bit, CPU), same streaming, same image/video_frames/fps inputs, same unload_after caching behavior. It just swaps in a bigger model list. That's a deliberate design choice: the server accepts every known catalog value for backward compatibility, so a workflow saved with "Qwen 3.5 9B" still runs even though that model now lives on the legacy list. You only see the curated picker when you're building something new.
Installing it
Same as the rest of the pack - ComfyUI Manager, search "ComfyUI VLM nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI_VLM_nodes
python -m pip install -r ComfyUI/custom_nodes/ComfyUI_VLM_nodes/requirements.txt
Models pull down to ComfyUI/models/LLavacheckpoints on first run and respect HF_TOKEN. Gemma 3 tiers need license acceptance on Hugging Face before they'll load. Don't let any install step replace torch.
Where people get burned
- VRAM, again: treat any "(4-bit recommended)" label as a promise. On a 24 GB card, BF16 27B is not happening; NF4 is the only realistic route for the big Qwen/Gemma tiers.
- Thinking: Qwen 3.5/3.6 thinking is off by default. The bigger models get substantially slower if you enable it and your PyTorch build lacks their optimized linear-attention kernels - keep it off unless the task genuinely needs visual reasoning.
- Ignore it if you don't need it: if you're starting fresh with a modern card, you almost certainly want ModernVLM instead. This node is for the big guns and the saved-workflow rescue mission, not your daily driver.
If an old workflow loads but points at a model that's been renamed or moved, the fix is usually just reselecting the equivalent entry in this dropdown. The pack went out of its way to keep that path painless.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe this image precisely and in detail. | — |
| model | COMBO | Qwen 3.5 2B | 14 options: Qwen 3.5 2B, Qwen 3.5 9B, Qwen 3.5 27B (4-bit recommended), Qwen 3.5 35B-A3B (4-bit recommended), Qwen 3.6 27B (4-bit recommended), Qwen 3 VL 30B-A3B Instruct (4-bit recommended), +8 |
| custom_model_id | STRING | — | |
| memory_mode | COMBO | ComfyUI managed (BF16) | 4 options: ComfyUI managed (BF16), 4-bit NF4 (bitsandbytes), 8-bit (bitsandbytes), CPU |
| max_new_tokens | INT | 5121–16384 | — |
| temperature | FLOAT | 0.100–2 | — |
| top_p | FLOAT | 0.900.01–1 | — |
| imageopt | IMAGE | — | |
| system_promptopt | STRING | You are an expert visual analyst. | — |
| video_framesopt | IMAGE | — | |
| video_selectionopt | VLM_VIDEO_SELECTION | — | |
| fpsopt | FLOAT | 1.00.1–60 | — |
| attention_modeopt | COMBO | Auto (SDPA) | 3 options: Auto (SDPA), Flash Attention 2, Eager |
| enable_thinkingopt | BOOLEAN | false | — |
| unload_afteropt | BOOLEAN | false | — |
| stream_outputopt | BOOLEAN | true | Stream generated text through ComfyUI's native progress-text WebSocket while inference runs. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |