Commit Graph
180 Commits
Author SHA1 Message Date
City 79379af338 Add tokenizer convert logic for Mistral
#367
2025-11-29 22:21:30 +01:00
City 0c9edef33b Improve invalid tenc file message 2025-11-29 22:20:13 +01:00
City d3e14efda6 Hotfix for fallback
#369
2025-11-27 06:25:54 +01:00
City 6aa9866ef3 Add IQ4_NL and IQ4_XS support
Based on the reference numpy code in gguf-py.
Mostly useful for tenc, since main model won't have imatrix for quantizing.
2025-11-27 05:17:04 +01:00
City fa48477de8 Qwen3-4B support for Z-Image
for #368
2025-11-26 23:22:52 +01:00
rattus 02dac863ee add default named_modules_to_munmap variable (#357)
* add default named_modules_to_munmap variable

Default this to handle to case of cloning a GGUFModelPatcher which then
expects it to exist on the clone.

I could never reproduce this condition, however 4 users have the error.
This error path is very sensitive to VRAM condtions and workflow and I
never got the details so its a bit of a guess.

But from a code point of view, its the right thing anyway

* nodes: carry the mmap_released state through a clone()

There are workflows where the same underlying model will be loaded
twice by two different ModelPatchers.

With the current code as-is, the first patcher will load fine and
intercept the pins while removing already done pins from the free
modules list.

It then will load again with the second MP however, this one will
not get the callbacks for the already pinned stuff and then rip
through and .to().to() them all. This destroys the pinning setup
while comfy core still keeps the modules registered as unpinned.
This causes a crash on einval when core goes to unpin the not pinned
tensors.

Comfy core now has a guard against unpinning the not-pinned, however
what I think is happening, is the RAM of the pin in freed in the
.to().to() and then malloc re-allocates it to new tensors with cuda
keeping its records of previous pinning. einval can happen when
you try and unpin a tensor in the middle of the block which is
definately possible on this use after free pattern.
2025-11-07 23:31:20 +01:00
City d4fbdb0139 Add type string for older mmproj files 2025-11-04 07:04:11 +01:00
rattus 100c06cda8 nodes: mmap detach weights before they are pinned (#355)
Comfy core recently introduced a feature where weights may be pinned
when loading, particularly for the case of offloading.

Intercept this, and immediately detached each weight before the pinning.
This avoids a crash that at least some users are experiencing.

Use a little dict on the modules to keep track of whats already done,
and when the catch-all detacher loop comes through, use this dict
(which has already done modules removed) as the iterator basis.
2025-11-03 15:57:29 +01:00
blepping be2a08330d Fix dequant_dtype handling (#334)
* Fix dequant_dtype handling

* Simplify dequant dtype selection expression
2025-09-14 23:10:50 +02:00
blepping 6b778afdc9 Fix attempt to create a tensor with dtype "target" (#330)
* Fix attempt to create a tensor with dtype "target"

* Check if dequant_dtype is None before string comparison with target
2025-09-09 07:07:45 +02:00
City d247022e3f Better mmproj detection logic
#317
2025-08-20 00:51:28 +02:00
City 0ca2aeb797 Qwen2-VL vision support
#317
2025-08-19 17:50:55 +02:00
City cf0573351a Qwen2-VL text model support 2025-08-05 15:34:19 +02:00
City 79ba1d4b17 Qwen image arch string 2025-08-05 12:44:57 +02:00
sfinktah f1377afd9b Updated quantizing tool guide to compile with Visual Studio 2022 (#288) 2025-08-05 12:44:09 +02:00
spawner b1350f6f5a Merge pull request #304 from spawner1145/main
support lumina-image-2.0
2025-08-05 12:42:40 +02:00
City b3ec875a68 Cosmos convert logic 2025-06-15 00:09:45 +02:00
City a2b75978fd Create pyproject.toml 2025-05-09 01:08:35 +02:00
City 6570efec69 Better warning for incompatible models
#256
2025-05-07 05:13:08 +02:00
City 03842fab0a Remove old workaround 2025-05-07 04:42:20 +02:00
City 3d673c5c09 Wan FLF2V convert logic
Forgot to commit this, also fixes print -> logging
2025-04-26 21:16:43 +02:00
City 54a4854e0c Allow embedding shape mismatch
#269
2025-04-22 15:50:05 +02:00
City 66c50234a4 Merge pull request #266 from city96/llama_oom_hotfix
- Apply umt5 hotfix of the token embed runtime cost being too large to llama as well
- Force model size to be re-calculated after the initial patcher is loaded to avoid issue with empty linear layers not being counted
2025-04-21 23:30:02 +02:00
City 220f78ec70 Force recalculation of model size on clone 2025-04-21 15:22:11 +02:00
City 9d282bcdfd LLaMA OOM hotfix 2025-04-21 04:25:30 +02:00
City a355f8b5ea Skip unlink logic if load/offload dev match
i.e. when forcing it to run on CPU or highvram enabled
2025-04-18 23:53:12 +02:00
City 3564e95b26 Dynamic CLIP input types (#263) 2025-04-18 23:48:53 +02:00
City e29f526c68 Disable mixing scaled FP8 + GGUF 2025-04-16 16:07:51 +02:00
City 47bec61475 HiDream text encoder support
LLaMA GGUF logic already works due to being used for HunYuan
2025-04-16 06:10:28 +02:00
City 3605bfbead Keep ffn down for HiDream 2025-04-16 02:22:31 +02:00
City 2ef5a66a9f HiDream support
#248
2025-04-16 01:43:15 +02:00
City 794fc28536 Clean up logging
Also fixes numpy warning
2025-04-13 23:01:15 +02:00
City 6de4bdba30 Merge pull request #216 from city96/convert_refactor_new
convert.py/patch refactor
2025-04-10 08:11:58 +02:00
City ca97e050b3 Update README.md 2025-04-10 08:04:17 +02:00
City de33c984c1 Merge branch 'main' into convert_refactor_new 2025-04-10 07:12:14 +02:00
City 624687939f Refactor 5D patch and save loop 2025-04-10 07:12:10 +02:00
Xiangxi Guo (Ryan) 0c3bdf336e Enable more torch.compile optimization by reducing graph breaks (#243)
As title, there were 2 fundamental sources of graph breaks:
1. using a pre-existing set in a `torch.compile` region, this is a
   [known issue](https://github.com/pytorch/pytorch/issues/145761) in
   PyTorch and the fix is WIP, but it's a lot easier to change the set
   into a tuple here to fix the graph break.
2. using tensor subclass `GGMLTensor`. The full support of tensor
   subclass has been gated for `torch.compile`, but with [a recent WIP
   stack](https://github.com/pytorch/pytorch/pull/149792),
   we'll be able to remove the gating and have `torch.compile` fully
   support the `GGMLTensor` in this repo. The only required change here
   is avoid changing the `__class__` attribute, and instead using
   `torch.Tensor` to convert the subclass object back to Tensor.
2025-04-10 02:46:33 +02:00
City 862e4147c4 Make 5D tensor fix less fragile 2025-04-03 00:38:46 +02:00
City c36b7236e6 Update README.md 2025-03-30 18:46:09 +02:00
City f3b968e137 Merge branch 'main' into convert_refactor_new 2025-03-30 18:43:44 +02:00
City bbd89ae547 Update .gitignore 2025-03-30 18:42:17 +02:00
City 65a2bc20bb wan bf16 fix 2025-03-28 04:21:26 +01:00
City 1c873edeb6 Expose strip prefix as function
For external convert/detection logic
2025-03-22 20:40:24 +01:00
City bc5223b0e3 Fix qtype logging on newer gguf-py 2025-03-16 20:14:33 +01:00
City 4aebf1bf2c Add compat mode pig
closes #230
2025-03-16 19:38:40 +01:00
City 5aa6e98ad7 Merge pull request #224 from city96/tokenizer_convert
Sentencepiece tokenizer from gguf metadata for UMT5
2025-03-14 17:53:02 +01:00
City ad69decc8d Update requirements.txt 2025-03-14 17:43:05 +01:00
City 31dffa061b Add error message for missing packages 2025-03-14 17:37:14 +01:00
City 296b0c1419 Clean up field logic 2025-03-14 17:11:47 +01:00
City d99b2d931f force dequant on umT5 to prevent OOM
not the best solution but that tensor alone needs ~3GB of runtime memory to dequant
2025-03-14 16:56:48 +01:00