Load ConvRot DiT
The ConvRot loader that keeps old GPUs in the fight
- model
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-kitchenCUDA 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 totrueto force INT8 GEMM activations everywhere; mostly a thing to try if a specific checkpoint misbehaves. - patch_attention (optional) -
w8a8(default),sage, orsdpa. On Turing,w8a8andsageuse the bundled exact-sm75 kernels; elsewherew8a8uses Comfy Kitchen's INT8 attention andsageuses 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | ConvRot DiT file from ComfyUI/models/diffusion_models. Files without supported ConvRot quantization metadata are hidden. | |
| force_int8_gemm | BOOLEAN | false | False follows each layer's activation format. True forces INT8 GEMM activations. |
| patch_attentionopt | COMBO | w8a8 | Select 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)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |