Nodes/ComfyUI-INT-Crush/INT8 UNet Loader (INT-Crush)
ComfyUI Node

INT8 UNet Loader (INT-Crush)

Half the memory, none of the drama

By ThunderFun·Created 3 months ago·Updated 10 days ago· 1
INT8 UNet Loader (INT-Crush)
    • MODEL
    unet_name
    rot_size256
    kernel_backendauto

    The INT8 UNet Loader (INT-Crush) is the calm sibling of the INT4 loader in the same pack. Same family, same inputs, roughly the same code path - but at 8 bits instead of 4, which is a genuinely different trade. It gets you about 2× compression over fp16 instead of 4×, and in exchange you keep most of the quality you'd get at full precision.

    The community's quantization ladder has been pretty consistent on this: 8-bit is the tier where the quality loss is close to invisible, and people's honest advice for fp8 and GGUF-Q8 is basically "just use it." Four-bit is where you start to notice. So the rule of thumb for choosing between this and the INT4 loader is simple: if INT8 fits on your card, use INT8. The INT4 loader exists for the card that can't fit INT8.

    How it works

    INT-Crush INT8 stores each weight as a signed int8 with an fp16 scale per output channel, plus an optional permutation. The INT8 loader reads the same safetensors metadata to auto-detect rot_size (format version 1), and it skips the whole unpack step that the INT4 path has to deal with - no two-weights-per-byte trick, no W4A16 fallback. The Hadamard rotation machinery is the same: weights are pre-rotated at quantization time, activations are quantized on the fly, and the loader picks a backend from auto: comfy-kitchen CUDA if your ComfyUI has it, Triton otherwise, PyTorch as the always-available slow floor. Padded layers get detected and fixed automatically.

    The inputs that matter

    • unet_name - the INT8-quantized .safetensors from models/diffusion_models/.
    • rot_size - default 256, auto-detected from metadata. Only touch it when a file has no metadata and output looks wrong.
    • kernel_backend - auto / triton / cuda / pytorch. Leave it on auto.

    Output: MODEL, wired into KSampler or the INT-Crush LoRA loader.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/ThunderFun/ComfyUI-INT-Crush
    

    Restart ComfyUI, or install via ComfyUI Manager by searching "ComfyUI-INT-Crush". Same story as the INT4 loader: no pip step, but the fast CUDA path needs comfy_kitchen from a recent ComfyUI, so keep ComfyUI updated or you'll silently run on the slow PyTorch fallback. Your model file has to be quantized to INT-Crush INT8 (--int-bits 8 in the companion converter) - this node won't load a regular checkpoint, a GGUF file, or an INT4-Crush file correctly.

    Where people get burned

    • Wrong file, silently. Feed it an INT4-Crush or OrbitQuant model and it may load without complaint and produce garbage. Check what your file actually is before wiring it up.
    • Metadata mismatch. If the file lacks int_crush metadata, the loader falls back to the rot_size you set and warns it may be wrong. If output degrades, set rot_size to match the converter.
    • Slow generation usually means you're on the PyTorch fallback - update ComfyUI or install Triton.
    • Same honesty note as the rest of this pack: the README says the code is "not thoroughly tested" and was built with AI assistance. It's early-stage; verify outputs on a new install.
    Categoryloaders/INT-Crush

    Inputs (3)

    NameTypeDefaultDescription
    unet_nameCOMBO0 options:
    rot_sizeCOMBO25610 options: 0, 16, 32, 64, 128, 256, +4
    kernel_backendoptCOMBOauto4 options: auto, triton, cuda, pytorch

    Outputs (1)

    NameTypeDescription
    MODELMODEL