LoadModel
The node that loads an entire Lumina-DiMOO stack at once
- tokenizer
- model
- vqvae
Every Lumina-DiMOO graph starts at this one node, and it's doing more than it looks like. One LoadModel node reads three separate things - a text tokenizer, the main diffusion model, and a VQ-VAE - and hands them out on three output wires. That's your whole runtime in a single drag-and-drop.
Lumina-DiMOO is an "omni" masked-diffusion LLM from the Alpha-VLLM group at Shanghai AI Lab (the author, Li Hongliang, is on that team). This pack is a thin ComfyUI wrapper around the official project, and LoadModel is the entry point. It's not a dropdown of checkpoints the way the SDXL loader is - it takes a filesystem path, which tells you the model lives in a plain Hugging Face folder on your disk, not a safetensors file. If you're coming from Stable Diffusion land, forget everything about .safetensors checkpoints; this is a diffusers-style model directory.
How it works
Open the source and it's a straight translation of the model's own loading code into a node. It calls AutoTokenizer.from_pretrained(checkpoint) for the tokenizer, LLaDAForMultiModalGeneration.from_pretrained(checkpoint, torch_dtype=torch.bfloat16, device_map="auto") for the main model, and VQModel.from_pretrained(vae_ckpt, subfolder="vqvae") for the image codec. The model loads in bfloat16 and device_map="auto" decides where to put layers, which is why it can (slowly) run on limited VRAM by offloading to CPU.
Why two path boxes? Because the VQ-VAE lives in a vqvae/ subfolder inside the same snapshot. The two inputs share a default - "models/lumina_dimoo" - which resolves relative to your ComfyUI root, i.e. ComfyUI/models/lumina_dimoo. You can technically point them at different locations, but there's no reason to.
The outputs are what the rest of the graph consumes:
- tokenizer (LUMINA_TOKENIZER) →
PromptBuilder, which turns your prompt into text tokens. - model (LUMINA_MODEL) → both
Generator_T2IandGenerator_I2I, the samplers. - vqvae (LUMINA_VQ) →
ImageTokens_T2I/ImageTokens_I2I/ImageTokens_Inpaintingfor encoding, andVQDecodefor turning generated tokens back into pixels.
Installing and getting the weights
Install via ComfyUI Manager (search ComfyUI-Lumina-DiMOO), or clone it in:
cd ComfyUI/custom_nodes
git clone https://github.com/L-Hugh/ComfyUI-Lumina-DiMOO.git
cd ComfyUI-Lumina-DiMOO
pip install -r requirements.txt
Then restart ComfyUI. The model weights are a separate ~17 GB download (about 16 GB of model shards plus the VQ-VAE), done with the Hugging Face CLI:
hf download Alpha-VLLM/Lumina-DiMOO --local-dir "/path/to/ComfyUI/models/lumina_dimoo"
The vqvae/ subfolder must come along - skip it and LoadModel dies on the VQ-VAE load.
Where people get burned
The dependencies are the trap. requirements.txt pins hard versions - torch==2.3.1, torchvision==0.18.1, transformers==4.46.2, plus fairscale, bitsandbytes, torchao. If your ComfyUI environment runs a newer torch (very likely by now), pip will try to downgrade or just refuse. The README's advice - "install the right PyTorch first" - is doing a lot of work. A dedicated venv for this pack, or accepting that you may need to roll back, saves real pain.
And set expectations: this is an early-adopter pack. Lumina-DiMOO hit Reddit in September 2025 to a skeptical crowd ("it's Lumina, so it's going to be undertrained" was the gist of one of the top comments). It's genuinely interesting tech, but it is not a daily-driver model. You're here because the mechanism fascinates you, not because it beats a fine-tuned SDXL.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| checkpoint | STRING | models/lumina_dimoo | — |
| vae_ckpt | STRING | models/lumina_dimoo | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| tokenizer | LUMINA_TOKENIZER | — |
| model | LUMINA_MODEL | — |
| vqvae | LUMINA_VQ | — |