SenseNova U1.5 Model Loader
The node that decides whether SenseNova U1.5 fits on your GPU
- SenseNova U1.5 model
SenseNova U1.5 is the 8B "MoT" model from OpenSenseNova, and it's the reason r/comfyui keeps posting infographics that don't blur their text. It's a pixel-space flow-matching model - no VAE, no latent space, diffusion done directly on pixels - and the community integration for it is this pack. The SenseNova U1.5 Model Loader is the door you walk through first. It doesn't draw anything. It decides which checkpoint loads, verifies the file is actually valid, and hands a ready-to-run model to the generation nodes.
You can't reach for ComfyUI's normal checkpoint loader here, and that's not an oversight. SenseNova's sampling runs an autoregressive text/image prefix, builds a per-layer KV cache, and then does native pixel-space flow matching - a kind of state the standard MODEL + CONDITIONING + LATENT KSampler contract can't carry. The whole thing is wrapped in this pack's own custom model type (SENSENOVA_U15_MODEL), and only the pack's LoRA loader and Text to Image / Image Edit nodes know what to do with it. Coming from SDXL, think of this as replacing the load-checkpoint-plus-VAE-plus-CLIP trio with one node. There is no VAE to load because there isn't one.
What it takes in
Two inputs, and you'll actually touch one of them:
- checkpoint - a dropdown of everything in
ComfyUI/models/diffusion_models/. You want one of the three pruned single-file.safetensorscheckpoints from joyfox/SenseNova-U1.5-8B-MoT-FP8:pruned-bf16,pruned-fp8_scaled, orpruned-int8_convrot. - attention -
auto(default),sdpa, orflash. This picks the attention kernel for the Qwen3 layers at runtime.autois the right choice for everyone: it uses FlashAttention if you've installedflash_attn, otherwise falls back tosdpa. Pickflashexplicitly and the node refuses loudly if that wheel isn't installed.
Which checkpoint is the real question this node asks you. FP8 scaled is the sensible default - most of BF16's quality at a fraction of the memory. INT8 ConvRot is the "my GPU is screaming" option. BF16 is only for people whose entire model plus KV cache fits comfortably, because pixel-space generation at the default 2048×2048 is memory-hungry; the README is blunt that BF16 needs substantially more of both RAM and VRAM. If you're on a 24GB card or below, you almost certainly want FP8.
The mechanism you don't see
The load-time validation is this node's best feature, and it's a genuinely nice bit of engineering. It opens the .safetensors file and sniffs which variant you grabbed - INT8 files carry .comfy_quant keys, FP8 files scaled_fp8 plus scale weights, and BF16 is checked against a signature of expected tensors and dtypes. Then it loads and verifies the quantization format matches, no tensors are missing or unexpected, and nothing was left uninitialized. You get a readable error and fix it, instead of silent corruption downstream.
It also bundles the final config and tokenizer metadata inside the pack itself. With the earlier SenseNova integrations people had to keep the whole upstream repo on disk for the custom nodes to find anything - a complaint that showed up repeatedly when U1 launched. This pack removes that whole failure mode. Download a model, pick it, go.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/starsFriday/ComfyUI-SenseNova.git
cd ComfyUI-SenseNova
pip install -r requirements.txt
Restart ComfyUI, drop the checkpoint into models/diffusion_models/, done. ComfyUI Manager finds it if you search "ComfyUI-SenseNova". One gotcha: requirements.txt pins transformers>=4.57.1,<4.58.0. If your ComfyUI env already has a newer transformers, this install will try to pull it back down to the pinned range - and can fail if it can't. When install breaks and you don't know why, check that first.
Troubleshooting
- "Checkpoint is not a supported SenseNova U1.5 BF16, INT8 ConvRot, or scaled FP8 file." - wrong file or wrong folder. It must be one of the three pruned files, in
models/diffusion_models, and a.safetensors. - "requires an NVIDIA CUDA GPU." - the loader hard-stops without CUDA. No AMD or CPU inference path here.
- Errors naming missing or uninitialized tensors - a checkpoint/config mismatch; the message lists the offending keys, usually enough to spot a wrong download.
- OOM further down the chain - that's the generation node's
low_vramtoggle (on by default; keep it on below 24GB). But if you loaded BF16 on a mid-range card, the fix is to load FP8, not to fight the settings.
What it wires into
The single output, "SenseNova U1.5 model", feeds the pack's SenseNova U1.5 LoRA Loader and then Text to Image. Got the popular 8-step distilled LoRA? The chain is loader → LoRA loader → Text to Image with steps=8, cfg=1.0, timestep_shift=3.0, strength=1.0 - the standard step-distillation recipe. The loader itself just needs to be the right format, and the error messages will tell you when it isn't.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| checkpoint | COMBO | Put the supported BF16, scaled-FP8, or INT8 ConvRot .safetensors file in models/diffusion_models. | |
| attention | COMBO | auto | 3 options: auto, sdpa, flash |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SenseNova U1.5 model | SENSENOVA_U15_MODEL | — |