Load Qwen Model
The Qwen model loader every other QwenScope node plugs into
- model
- info
Load Qwen Model is the unglamorous foundation node of the whole QwenScope pack. Nothing happens until it's on the canvas, because every capture, inspect and steer node needs a QSCOPE_MODEL wire from it. It loads a Qwen base LM plus its tokenizer into memory so the rest of the pack can poke at its residual stream.
The name is not a lie but it is a clue: this loads base models, not chat models. You're not here for chat, you're here for interpretability - you want the raw autoregressive backbone whose internal activations you can read and nudge. The drop-in default is Qwen/Qwen3.5-2B, which is small enough to fit alongside an image model and fast enough that analyzing a prompt takes seconds.
How it works
Under the hood it's a straightforward HuggingFace load: AutoModelForCausalLM.from_pretrained plus AutoTokenizer, wrapped so ComfyUI sees it as a node. Two things are worth knowing before you wire it up.
First, there's a model cache of exactly one. QwenScope only keeps one loaded LLM in VRAM at a time, so if you have two Load Qwen Model nodes in a graph (say, a 2B and a 9B), loading the second evicts the first. In practice that's fine - you run one analysis model at a time - but it's why swapping a preset can feel like a cold reload.
Second, dtype and device_map both default to auto, which is what you want on a typical GPU box. If you're short on VRAM, bfloat16 and float32 are the honest alternatives; device_map=auto will shard across GPU/CPU if it must, so a 9B can run on a modest card, just slowly.
The inputs that matter
- preset - the dropdown of registered base models (Qwen3 and Qwen3.5 families, MoE variants included). This drives everything else, so pick the one whose SAE you'll pair it with.
- custom_model_id - only used when preset is
custom. This is your escape hatch: type any HF repo id and it loads whatever causal LM you point at. Useful when Qwen ships a new family before the registry catches up. - dtype / device_map - leave at
autounless you know better.
Outputs: model (QSCOPE_MODEL) feeds the Analyze nodes and Generate; info is a plain STRING telling you what loaded, the hidden size, layer count and device - read it once to confirm you got the model you thought you did.
Installing it
ComfyUI Manager is the easy path: search "ComfyUI QwenScope" and install. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-QwenScope
then restart ComfyUI. Dependencies are transformers>=4.45, huggingface_hub, safetensors, Pillow and numpy - ComfyUI already ships torch, and most installs already have transformers and huggingface_hub for other nodes. If pip complains, pip install -e . inside the pack folder pins everything. Model weights download from HuggingFace on first load; if a repo is gated, set HF_TOKEN before launching ComfyUI.
Common issues
The classic stumble is a d_model mismatch further down the graph: if your SAE layer's dictionary expects a 4096-d residual but you loaded a 2B model (2048-d), the Analyze node will throw. Load the base model that matches the SAE pack you picked - the registry is keyed to specific base models for exactly this reason. And remember the first load of any model is slow: it's downloading gigabytes, not hanging.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | Qwen/Qwen3.5-2B | 8 options: Qwen/Qwen3.5-2B, Qwen/Qwen3.5-9B, Qwen/Qwen3.5-27B, Qwen/Qwen3.5-35B-A3B, Qwen/Qwen3-1.7B-Base, Qwen/Qwen3-8B-Base, +2 |
| dtype | COMBO | auto | 4 options: auto, bfloat16, float16, float32 |
| device_map | COMBO | auto | 3 options: auto, cuda, cpu |
| custom_model_idopt | STRING | Used only when preset == 'custom'. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | QSCOPE_MODEL | — |
| info | STRING | — |