Nodes/MiniMax H3 INT8 Fast (ROCm)/Load Dual CLIP INT8 (W8A8)
ComfyUI Node

Load Dual CLIP INT8 (W8A8)

Load Dual CLIP INT8 — the Flux text stack, without the VRAM bill

By DrBearJew·Created about a month ago·Updated about a month ago· 1
Load Dual CLIP INT8 (W8A8)
    • CLIP
    clip_name1
    clip_name2
    type
    weight_dtype
    on_the_fly_quantizationfalse
    enable_convrottrue

    If you've ever built a Flux workflow, you've met the problem this node exists to solve: two text encoders. Flux conditions on a small CLIP-L and a huge T5-XXL - and for Flux 2 Dev that big one is a 24B Mistral encoder, around 18GB on its own - which is quietly why the stock DualCLIPLoader is so heavy. DualCLIPLoaderINT8 is the same two-slot loader, but every linear layer in both encoders runs as W8A8 - 8-bit weights, 8-bit activations - through the pack's fast INT8 ops.

    It's the two-encoder sibling of CLIPLoaderINT8 (literally: it subclasses it), so the mechanism is identical. Each slot is loaded through ComfyUI's native text-encoder path with Int8TensorwiseOps swapped in as the custom operations, using torch._int_mm plus a Triton kernel. The neat part is that every layer is detected independently by whether it carries its own weight_scale, which means the two slots don't have to be the same format.

    The inputs that matter

    • clip_name1 / clip_name2 - the two encoder files, both pulled from text_encoders or clip. The classic Flux combo is clip_l.safetensors in one slot and t5xxl_fp16.safetensors (or an INT8 conversion) in the other.
    • type - the stock dropdown; defaults to flux. Pick the family and the node works out the right CLIPType for both.
    • on_the_fly_quantization - leave OFF for already-quantized files. Flip ON only when you're handing it plain bf16/fp16 encoders and want them quantized at load.
    • enable_convrot - ConvRot rotation for the on-the-fly path (default ON). Pre-quantized files carry their own flag per layer and ignore it.
    • weight_dtype - compute dtype, default follows the encoders' dtype.

    One CLIP output, wired into CLIPTextEncode exactly like the stock loader's. The real win: you can run a plain CLIP-L alongside an INT8 T5-XXL and the loader doesn't care - it checks each file on its own. Since T5-XXL is the memory hog in Flux, that's usually the one worth quantizing.

    Install

    Shared pack install. ComfyUI Manager → search ComfyUI-INT8-Fast-ROCM-ConvRot → install → restart, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/DrBearJew/ComfyUI-INT8-Fast-ROCM-ConvRot
    

    No pip dependencies declared - it rides on your ComfyUI install, so keep it current and make sure Triton is present. This is the ROCm-validated INT8-Fast fork of patientx's pack; the CLIP nodes aren't AMD-exclusive, but that's the environment it's tested in.

    Where people get burned

    • Scaled-FP8 in either slot throws. The node refuses to mix scaled-FP8 with the INT8 ops, same as the single version. Use INT8 or plain bf16 files.
    • The dropdowns are empty - wrong folder. text_encoders or clip, not diffusion_models.
    • Watch typography when quantizing on the fly. Encoder precision dies first in the text that renders in the image. ConvRot recovers a lot of it - it's the whole reason the pack recommends on-the-fly ConvRot quant over the older tensorwise files - but if your prompt's punchline is a sign, check it before you trust the render.
    • Don't over-engineer. If both encoders already fit in bf16, this node buys you nothing except a slightly different failure mode. It's for the setups where T5-XXL alone decides whether the model runs at all.
    Categoryloaders

    Inputs (6)

    NameTypeDefaultDescription
    clip_name1COMBO0 options:
    clip_name2COMBO0 options:
    typeCOMBO28 options: stable_diffusion, stable_cascade, sd3, stable_audio, mochi, ltxv, +22
    weight_dtypeCOMBO4 options: default, fp16, bf16, fp32
    on_the_fly_quantizationBOOLEANfalse
    enable_convrotBOOLEANtrue

    Outputs (1)

    NameTypeDescription
    CLIPCLIP