Lance Model Loader
The node that loads ByteDance Lance, the one-model-does-everything 3B
- model
Every node in this pack is a dead end until you've dragged in Lance Model Loader first. It's the gateway - the thing that reads the actual weights, builds the whole Lance pipeline, and hands a LANCE_MODEL to the six task nodes. Nothing else in the pack runs without it.
The model behind it is worth knowing about before you commit disk space. Lance is ByteDance's unified multimodal model, released Apache 2.0 in May 2026: one weight set that does text-to-image, text-to-video, image editing, video editing, and visual question answering on both images and video. The name "3B" undersells it - it's 3B active parameters in a roughly 9B-total MoE, built from a Qwen2MoT LLM, a Qwen2.5-VL vision encoder, and a Wan2.2 VAE. The launch thread's top take was "Wow, all Edit models are welcomed," and someone inevitably noted this is ByteDance's standard move: the parts ship open, the flagship stays on the API.
What it does
The loader has exactly three knobs:
- model_variant -
lance_3bfor image tasks (T2I, image edit),lance_3b_videofor video tasks (T2V, video edit). Understanding nodes work with either. - attention_backend -
flash_attnby default,sdpaas the fallback. - gpu_id - pick the CUDA device (0–7) you want it parked on.
Output is a single model of type LANCE_MODEL. Wire it into any Lance generation or understanding node; one loader can feed several at once.
Mechanically it's not doing anything clever - it's the same validate_on_fixed_batch path the official inference_lance.py uses. The pack bundles the upstream modeling code in lance_source/, so you don't clone a second repo. It loads the LLM config, the ViT safetensors, the Wan2.2 VAE, applies the MoE init, and caches the whole pipeline per (variant, gpu, attention backend). That's the README's "load once, cached per GPU" claim, and it's real in the source: a dict cache keyed on those three values. Re-running a workflow doesn't reload a thing.
Install - this is the expensive part
Install via ComfyUI Manager (search ComfyUI-Lance) or:
cd ComfyUI/custom_nodes/
git clone https://github.com/benjiyaya/ComfyUI-Lance.git
cd ComfyUI-Lance
pip install -r requirements.txt
Then download the weights from bytedance-research/Lance into ComfyUI/models/lance/:
ComfyUI/models/lance/
├── Lance_3B/ # image model (HF name - lance_3b/ also accepted)
├── Lance_3B_Video/ # video model (or lance_3b_video/)
├── Qwen2.5-VL-ViT/ # vision encoder
└── Wan2.2_VAE.pth # VAE
This is the real cost. The image model is ~24GB and the video model ~28GB on the hub, both stored FP32, so you're downloading over 50GB if you want every task. The loader's folder-name matching is forgiving - it accepts Lance_3B, lance_3b, lance-3b and more - so don't stress the exact casing.
Gotchas
The hardware floor is not marketing: the official docs say 40GB VRAM, and it's an MoE, so quantization alone won't rescue it (people are already asking "GGUF when"). This port does not do ComfyUI dynamic VRAM offloading - if you're on 12–24GB, look at the competing low-VRAM port, comfyui-lance-aio, instead of fighting this one. On the software side, the pack ships an SDPA fallback that monkey-patches flash_attn if the real package is missing, so even a broken flash-attn build usually won't hard-stop you - but if you're seeing attention errors, switching attention_backend to sdpa is the clean fix. First load is slow (it's tens of gigabytes and MoE init), so don't mistake a long load for a hang.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model_variant | COMBO | lance_3b_video | 2 options: lance_3b_video, lance_3b |
| attention_backend | COMBO | flash_attn | 2 options: flash_attn, sdpa |
| gpu_id | INT | 00–7 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | LANCE_MODEL | — |