Nodes/OmniNodes/GGUF Quant Validator ✅
ComfyUI Node

GGUF Quant Validator ✅

The two-second 'is this download actually fine?' check

By TensorVizion·Created 3 months ago·Updated about 8 hours ago· 0
GGUF Quant Validator ✅
    • is_valid
    • report
    gguf_name
    sample_size25
    path_override

    A truncated download or a botched conversion doesn't usually fail where it happens. It fails three nodes downstream, in the confusing way - black output, garbage latents, a model that loads but clearly isn't right. This node is the fast pre-flight: it opens a .gguf file, dequantizes a sample of its tensors, and checks for the things that actually indicate a broken file - NaN/Inf values, all-zero tensors, zero-element tensors, or tensors that won't dequantize at all. Out comes a clean is_valid boolean and a report, before you've committed to a load.

    How it works

    The clever bit is which tensors it samples. Rather than just checking the first N in the file - which is where a truncated download would still look perfectly healthy - it spreads its sample evenly through the whole file. Corruption from an interrupted download tends to hit the tail, so a fair spread is what catches it. Each sampled tensor is dequantized with the gguf package's own code and run through finite-value and all-zero checks.

    Be clear-eyed about what it isn't, though: it doesn't verify a checksum against a known-good hash - this pack has no registry of expected hashes - so it's a structural and numerical sanity check of the file's own internal consistency, not proof the file matches whatever its source claims it is. A file can pass this and still be the wrong model. What it reliably catches is a file that's broken, and that's the expensive failure to avoid.

    Inputs and outputs

    • gguf_name - dropdown of .gguf files across the shared GGUF model folders (diffusion_models, unet, unet_gguf, clip, clip_gguf, vae, checkpoints), with path_override for files anywhere else.
    • sample_size - how many tensors to spot-check, default 25, up to 500. 25 is plenty for a health check; raise it if you're paranoid about a specific file.

    Outputs: is_valid (a real BOOLEAN) and report (a string detailing what was sampled, the quant-type mix, and any problems found). Because is_valid is a boolean, you can wire it into the pack's own workflow-gating nodes - an Any Switch or Conditional Gate - to stop a bad file from ever reaching a sampler. That's where this node earns its keep in a serious workflow.

    Installing

    It's one of the six GGUF nodes inside OmniNodes, TensorVizion's all-purpose pack, and it needs the pack's one GGUF dependency:

    cd ComfyUI/custom_nodes/
    git clone https://github.com/TensorVizion/OmniNodes
    cd OmniNodes && pip install -r requirements.txt   # adds gguf
    

    Restart ComfyUI. Via ComfyUI Manager, search "OmniNodes" - then still run pip install gguf, since it isn't bundled with ComfyUI and the node returns a clear "install gguf" error if it's missing. Find it under TensorVizion/GGUF.

    When to actually run it

    Two honest use cases: right after downloading a big model file over a flaky connection (this is the cheapest insurance you'll buy), and right after converting your own .gguf with the pack's GGUF Checkpoint Converter to confirm the output is sane. If you downloaded over a solid connection and the file's checksum already matched the page you got it from, you can skip it - but it costs one double-click, and the alternative is debugging a black image at the end of a long queue.

    CategoryTensorVizion/GGUF

    Inputs (3)

    NameTypeDefaultDescription
    gguf_nameCOMBO1 options: <none found in model folders — use path_override>
    sample_sizeINT251–500
    path_overrideoptSTRING

    Outputs (2)

    NameTypeDescription
    is_validBOOLEAN
    reportSTRING