Nodes/ComfyUI-N-Nodes/GPT Loader Simple [πŸ…-πŸ…’πŸ…€πŸ…˜πŸ…£πŸ…”]
ComfyUI Node Runs on cloud

GPT Loader Simple [πŸ…-πŸ…’πŸ…€πŸ…˜πŸ…£πŸ…”]

Now with joytag, moondream, and Llava baked in

By Nuked88Β·Created 3 years agoΒ·Updated 2 years agoΒ· 237
GPT Loader Simple [πŸ…-πŸ…’πŸ…€πŸ…˜πŸ…£πŸ…”]
  • llava_clip
  • model
β—„ckpt_nameβ–Ύβ–Ί
β—„gpu_layers27β–Ί
β—„n_threads8β–Ί
β—„max_ctx2048β–Ί

The current-generation version of this pack's GGUF model loader, and the one meaningful upgrade over the plain GPT-Loader-Simple is right there in the ckpt_name dropdown: alongside whatever .gguf files you've dropped in, you'll see joytag and moondream as selectable entries that download themselves automatically the first time you pick them. Both are vision models, not chat LLMs - joytag is a booru-style image auto-tagger, moondream is a small, efficient vision-language model built for captioning and visual Q&A. This node is what makes this pack do image understanding, not just text generation.

How it works

Same core mechanism as the plain version: it wraps llama-cpp-python's Llama() constructor around whatever checkpoint you pick, with gpu_layers (default 27), n_threads (default 8), and max_ctx (default 2048) controlling how that instance runs. The difference is what it's willing to load - ckpt_name here includes joytag and moondream as first-class, auto-fetched options, no manual download step required for either.

The optional llava_clip input is the piece that unlocks actual Llava-family models. Llava checkpoints need two files to work: the main GGUF weights, and a separate multimodal projector file (usually named with an mm prefix in its source repo) that bridges the vision and language sides. This loader takes the projector as llava_clip, sourced from the pack's own Llava Clip Loader [n-suite] node - load your projector there, feed its output into this loader alongside your Llava GGUF checkpoint, and you get a working vision-language model.

The output

Just one this time: model - no model_path alongside it, unlike the older bare loader. That matters for pairing: this loader's output is meant for GPT Text Sampler [n-suite], which only asks for model, not the older GPTSampler, which additionally wants model_path.

Installing the pack and setting up models

  • ComfyUI Manager - search "ComfyUI-N-Nodes," install, restart.
  • Manual - cd ComfyUI/custom_nodes && git clone https://github.com/Nuked88/ComfyUI-N-Nodes.git, then restart ComfyUI.

For plain GGUF chat models, drop .gguf files in GPTcheckpoints under ComfyUI/models. For Llava, the README calls out two dedicated subfolders under GPTcheckpoints/Llava: clips for the projector files, models for the main Llava GGUF weights. joytag and moondream need nothing from you - they fetch on first selection.

Common issues & troubleshooting

First run on joytag or moondream is slow, or looks stuck. That's the automatic download happening - give it time on a first run rather than assuming it's hung, especially on a slower connection.

Llava output is garbage or the node errors. The most likely cause is a mismatched pairing - the projector loaded through llava_clip needs to be the one that actually goes with the specific Llava checkpoint you picked in ckpt_name. Mixing projectors and models across different Llava variants (1.5 7B vs 1.6 Mistral 7B, for instance) is a reliable way to get nonsense output.

Wondering if this is still the best way to run vision LLMs in ComfyUI. Fair question - this corner of the ecosystem moves fast, and newer, more actively developed LLM node packs exist if all you need is general chat. What keeps this one relevant is the joytag/moondream/Llava bundle in one loader, which isn't something every alternative replicates.

CategoryN-Suite/loaders

Inputs (5)

NameTypeDefaultDescription
ckpt_nameCOMBO2 options: joytag, moondream
gpu_layersINT270–100β€”
n_threadsINT81–100β€”
max_ctxINT2048300–100000β€”
llava_clipoptLLAVA_CLIPβ€”

Outputs (1)

NameTypeDescription
modelCUSTOMβ€”