Commit Graph
10 Commits
Author SHA1 Message Date
digital-garbage a490b8a6ed revert(gguf): back to the load path from 6f04642
Reverts 6bf533e, 78c9625, 4bacc9c, 993e5e4, ae337b5 and c4d8018 —
gguf_support.py, loaders.py and their tests are byte-identical to
6f04642. Nothing else is touched.

The quantized path loaded fast and gave the sampler a model it could not
run: shape [21504, 5376] against an input of 22848x5376, one 1344-token
unit apart. Expanding at load is slow and works.
2026-08-23 08:12:43 +03:00
digital-garbage c4d8018c09 fix(gguf): unwrap a (state dict, architecture) return; drop the disk cache
ComfyUI-GGUF hands back either the state dict or a (state_dict, arch)
pair depending on version. Passed on whole, ComfyUI iterates the tuple,
gets the dict as its first element and raises "'dict' object has no
attribute 'startswith'" — an error naming nothing that led back here.
Unwrapped, and the shape check now runs on every load rather than only
when FunPack had overridden the architecture list, which is why a pack
that already knew the architecture went through unvalidated.

The expansion cache is gone. It wrote the model's full dequantized size
beside it, and rented disk is billed. A leftover from it is named with
its size on the next load; deleting it is left to the user.
2026-08-23 05:53:26 +03:00
digital-garbage ae337b5196 fix(gguf): expand one tensor at a time instead of all of them
Dequantizing produces float32 — four times the width the weight ends up
at. Every tensor was collected before any was cast, so the peak was the
whole checkpoint in float32 plus a copy of each: tens of GB of transient
host allocation on a video model, enough to take the machine down rather
than just the load. ThreadPoolExecutor.map made it worse by submitting
everything at once and buffering results in order.

Now cast-and-release per tensor, with a fixed in-flight window. Peak is
the finished model plus a handful of tensors. Pool capped at 4.

Also prints the path and tensor count before the wait, so a load killed
part way leaves evidence of which backend it chose.
2026-08-23 05:34:28 +03:00
digital-garbageandClaude Opus 5 993e5e4d04 feat(gguf): read an unlisted architecture by default
No env var. Stepping around the pack's guard means doing its job here:
the returned state dict is validated, and anything unexpected raises
into the existing fallback rather than reaching ComfyUI.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 05:26:32 +03:00
digital-garbageandClaude Opus 5 4bacc9c7d3 fix(loaders): name the stage a load failed at; gate the arch override
A bare "'dict' object has no attribute 'startswith'" names neither the
step nor the file. Each stage now labels itself in the re-raise. The
ComfyUI-GGUF architecture override is opt-in, not default.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 05:24:50 +03:00
digital-garbageandClaude Opus 5 78c9625a1a perf(gguf): load quantized where possible, expand only once
Add an unlisted architecture to ComfyUI-GGUF's image list so the
quantized path works, and cache the dequantized weights beside the
file when it does not, so the expansion is paid once.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 05:04:07 +03:00
digital-garbage c55d22752a feat(loaders): make gguf a FunPack requirement
A fresh install now reads .gguf with nothing extra. The no-backend message
points at re-running requirements rather than naming a lone package.
2026-08-22 23:27:48 +03:00
digital-garbage 9af45cf695 fix: Simple mode Advanced settings, and GGUF arch fallback
The panel is the Editor's Properties column: collapsed there it stayed
display:none, and its folds are hidden in Simple mode, so the button opened
nothing. ComfyUI-GGUF refusing an arch now falls back to dequantizing.
2026-08-22 23:26:31 +03:00
digital-garbage ba9388f216 fix(loaders): GGUF by container magic, and mount the pack as a package
A .gguf renamed .safetensors reached the safetensors parser (UTF-8 decode
error); content now decides. ComfyUI-GGUF's loader uses relative imports, so
its directory is mounted as a package instead of loaded file-by-file.
2026-08-22 23:22:01 +03:00
digital-garbage b57db12eaf feat(loaders): load .gguf diffusion models and text encoders
Core lists no .gguf, so the files were invisible. Backend is whichever is
installed: ComfyUI-GGUF keeps weights quantized, the gguf package
dequantizes at load. Family detection reads GGUF containers too.
2026-08-22 23:13:46 +03:00