Nodes/comfyui-svdint4/Load ConvRot DiT
ComfyUI Node

Load ConvRot DiT

The ConvRot loader that keeps old GPUs in the fight

By wjie98·Created 2 months ago·Updated about 10 hours ago· 2
Load ConvRot DiT
    • model
    unet_name
    force_int8_gemmfalse
    patch_attentionw8a8

    If you own an RTX 20-series or 30-series card, ConvRot is the most important thing that happened to quantization since GGUF. fp8 is great if your card can do fp8 math - but 30-series cards have no fp8 acceleration at all, and Turing cards (sm75, your 2060/2070/2080 Ti) don't even handle BF16 well. INT8-ConvRot is the format built for exactly that hardware, and Load ConvRot DiT is how you get it into a ComfyUI graph from this pack.

    The name is worth unpacking. "DiT" here is the diffusion transformer - the actual video/image generation model, as opposed to the text encoder, which gets its own loader. This node reads a ConvRot-quantized checkpoint from ComfyUI/models/diffusion_models/ and wires it in as a normal MODEL. The whole pack (which still carries the legacy name "comfyui-svdint4") is built around making modern models run on old GPUs, and this is its front door.

    How it works

    ConvRot weights are stored as quantized tensors with rotation applied - the README's own words are "W8A8, W4A8, and W4A4 dispatch," meaning 8-bit weights/8-bit activations, 4-bit weights/8-bit activations, and 4-bit/4-bit. The loader reads the safetensors header for ConvRot quantization metadata and hands each layer the right path, using the pack's own kernels where they exist and comfy-kitchen's INT8 operators for the rest.

    Two practical things you should know before you even hit run:

    • Files without supported ConvRot quantization metadata are hidden from the file list. The tooltip says exactly that. If a downloaded ConvRot file doesn't show up, it's not ConvRot (or not a format this pack supports) - it's not a bug.
    • W4A8 requires comfy-kitchen. The packed W4A8 kernel is this pack's own, but the grouped-codebook paths depend on the separate comfy-kitchen CUDA backend being installed and enabled. Without it you'll get a clear runtime error, not silent garbage.

    The inputs that matter

    • unet_name - the ConvRot DiT file from models/diffusion_models.
    • force_int8_gemm - defaults to false, which follows each layer's activation format. Flip to true to force INT8 GEMM activations everywhere; mostly a thing to try if a specific checkpoint misbehaves.
    • patch_attention (optional) - w8a8 (default), sage, or sdpa. On Turing, w8a8 and sage use the bundled exact-sm75 kernels; elsewhere w8a8 uses Comfy Kitchen's INT8 attention and sage uses the installed SageAttention package. If you want sparse Sol attention, that's a separate patch node - this loader only does dense attention.

    Output: a single MODEL socket that feeds straight into your sampler. Pair it with Load ConvRot CLIP for the text side and you're done.

    How to install

    cd ComfyUI/custom_nodes
    git clone https://github.com/wjie98/comfyui-svdint4
    cd comfyui-svdint4
    python -m pip install -v --no-build-isolation -e ./kernel
    

    Manager will clone the pack if you search "comfyui-svdint4," but the kernel build is a manual step either way - that pip command compiles the CUDA kernels and needs torch-with-CUDA plus ninja. You also want comfy-kitchen installed for the W4A8 paths. Restart ComfyUI afterward.

    Where people get burned

    The classic complaint is the empty file dropdown. Check that the checkpoint is actually ConvRot - regular GGUF or fp8 files won't appear, on purpose. Second is the missing-kernel error, which is always the manual build step skipped. And third: this loader is the dense-attention path. If you're chasing long-video sparse attention on a Turing card, you add the Sol patch node after this, not instead of it.

    CategoryTuring Utils/loaders

    Inputs (3)

    NameTypeDefaultDescription
    unet_nameCOMBOConvRot DiT file from ComfyUI/models/diffusion_models. Files without supported ConvRot quantization metadata are hidden.
    force_int8_gemmBOOLEANfalseFalse follows each layer's activation format. True forces INT8 GEMM activations.
    patch_attentionoptCOMBOw8a8Select w8a8, sage, or sdpa. On Turing, w8a8 and sage use the bundled exact-sm75 kernels; elsewhere w8a8 uses Comfy Kitchen and sage uses the installed SageAttention package. Turing BF16 SDPA inputs are stored as FP16 for the attention call. Sol sparse attention is configured with the separate Sol patch node.

    Outputs (1)

    NameTypeDescription
    modelMODEL