Commit Graph

2349 Commits

Author SHA1 Message Date
Alan Li 48454d17b6 Avoid duplicate quant metadata markers 2026-08-08 01:25:21 -04:00
Alan Li 50af1a3563 Fix quant metadata marker collision handling 2026-08-08 01:25:21 -04:00
Alan Li 20467f61ee Fix convert_old_quants ignoring model_prefix in _quantization_metadata branch (#11864)
The new-format branch of convert_old_quants() writes "{layer_key}.comfy_quant"
markers straight from the checkpoint's _quantization_metadata JSON, ignoring
model_prefix entirely. Checkpoint metadata stores layer keys either with the
full diffusion-model prefix or already stripped of it, and convert_old_quants()
is invoked before and/or after that prefix is stripped from state_dict
(comfy/sd.py calls it up to twice around the strip). A fixed assumption about
which convention is in play silently mismatches the other, so affected layers
never get wrapped in a QuantizedTensor and fall back to plain-dtype storage
(observed as VRAM blowup / manual-cast warnings on NVFP4 checkpoints such as
LTX-Video 2.3).

PR #13328 tried to fix this by reordering comfy/sd.py's calls around the
prefix strip, but that only swaps which convention works and was closed by
the maintainer for risking regressions on checkpoints using the other
convention. This instead makes convert_old_quants() match each layer key
against the state_dict's real key first (zero behavior change when metadata
is already aligned with state_dict), then try adding/stripping model_prefix,
and only fall back to today's blind write when neither matches. No call
sites in comfy/sd.py are touched or reordered. The write is now also
idempotent, guarding against the double-call case rewriting a resolved key.

Adds tests-unit/comfy_quant/test_convert_old_quants_prefix.py covering both
metadata conventions, the legacy scaled_fp8 branch (unaffected), the exact
two-call dance from load_diffusion_model_state_dict, and a documented (xfail)
residual gap: when a checkpoint's real weight keys carry no prefix at all but
its metadata keys do, comfy/sd.py's model_prefix="" call-site argument still
lets model_detection.unet_prefix_from_state_dict get poisoned by the
resulting spurious marker keys. That is pre-existing (reproduces identically
without this patch) and out of scope here since fixing it needs a
comfy/sd.py or model_detection.py change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 01:25:21 -04:00
comfyanonymous cd84f47efe
Make it easier to debug nested tensors. (#15383) 2026-08-07 22:14:04 -04:00
Jukka Seppänen 344b43989e
Support asym w4a8_int (#15308)
* support asym w4a8_int

* Simplify

* Fixes
2026-08-07 08:32:57 -07:00
Jukka Seppänen 93cb5edb98
Fix audio carry to wrappers (#15390) 2026-08-07 08:30:21 -07:00
comfyanonymous 2340099d93
Fix full offload on minimax audio vae. (#15377) 2026-08-07 00:26:16 -04:00
Jukka Seppänen a464ac3358
feat: Support Wan-Animate2 (CORE-358) (#15362) 2026-08-06 21:08:16 -04:00
comfyanonymous 88fec4b605
Skip creating useless noise in res_multistep sampler. (#15339) 2026-08-06 18:17:44 -04:00
Jukka Seppänen bdcb886a47
Fix sampler issues for audio with minimax, support more samplers. (#15243) 2026-08-06 13:36:34 -07:00
endman100 563b98eefb
Fix MiniMax H3 latent noise mask sampling (#15322) 2026-08-05 23:47:13 -04:00
Jukka Seppänen 15989f87ca
Speedup LTX and Wan (#15138) 2026-08-05 21:15:48 -04:00
Jukka Seppänen bbda83647d
Support int8_convrot VAE (#15334) 2026-08-05 21:12:23 -04:00
rattus 40dbdc1bef
restore SDPA non-cudnn small attention bypass (#15296)
This is performance critical for ACE step.
2026-08-04 15:25:25 -04:00
rivadart 16e3f3034f
fix(minimax): cast raw parameters to input device in H3 VAEs (#15268) 2026-08-03 19:06:12 -04:00
comfyanonymous e377e26304
Don't pin too much memory on Linux systems with no swap partition. (#15266) 2026-08-03 16:29:47 -04:00
Jukka Seppänen 57500fc5bc
feat: Support MiniMax-H3 (CORE-375) (#15224) 2026-08-02 22:28:29 -04:00
Oliver Freyermuth b53e247c94
rename comfy/logging.py to comfy/internal_logging.py (#15231)
This avoids name collision (circular imports) for external custom nodes,
for which the comfy path is pushed into sys.path so Python's own logging module
is shadowed otherwise.

fixes: #15229
2026-08-02 16:20:27 -04:00
rattus 611f2a4e0f
fix pin registration priority (#15226)
This priority scheme was broken in the case where you have pin
registration exhaustion while loading a VBAR that gets a big evicition.
The weight would stay in the loaded set but inherit the MRU priority
against other workflow models WRT pin registration which leads to async
offload without pinning.

Fix by universally promiting active pin registration above workflow
pins without concern for the weights/weights-loaded split. This diverges
from the actual budgeting where the split still makes sense.
2026-08-02 08:16:06 -07:00
rattus 8084083d4b
comfy-aimdo 0.4.11 (#15215)
Changes:

Remove sequential scan hint
Prefer NVML pressure on windows
Add async malloc clamp option (unused by comfy so far)
Workaround AMD windows GPU virtual address space leak

The largest change is the NVML pressure, which works around a cuMemGetInfo
drift from actual VRAM in some circumstances.
2026-08-02 06:55:37 -04:00
comfyanonymous f06a187f50
Handle case where swap memory query fails on windows. (#15219) 2026-08-02 01:12:12 -04:00
comfyanonymous 532a16f3b9
Disable gradients on diffusion models. (#15218) 2026-08-01 20:15:51 -07:00
Jukka Seppänen 49a7422892
Support latent previews for nested latents (#15196) 2026-08-01 19:57:15 -04:00
comfyanonymous a1c421994c
Expand k, v when attention backend would fall back to math because gqa. (#15190) 2026-07-31 15:17:56 -07:00
rattus 7c806288d5
ops: apply the custom placeholder logic to Linux too (#15181)
Windows has proven this logic works for a long time and there are
corner cases where this materialization actual consumes real RAM
on linux.

Its not as bad as the original windows commit charge surge, but
its still a detectable transient leak. So simplify and unify.
2026-07-31 10:44:09 -07:00
rattus de5625a64a
Delay dynamic pin cleanup until model destruction (#15183) 2026-07-31 10:29:47 -07:00
blepping 831710d257
Don't assume sampler_function has a __name__ attribute in detail logging (#15179) 2026-07-31 19:12:17 +03:00
comfyanonymous f73e8cde88
Fallback to cudnn attention on linux if flash attention doesn't work. (#15146) 2026-07-29 18:10:28 -07:00
Barish Ozbay e651b7bef5
Fix LTXAV crash when sampling without an audio latent (#15132) 2026-07-28 20:24:08 -07:00
Jukka Seppänen c38171ddb9
Support Pruna LTX VAE (#15129) 2026-07-28 18:25:55 -04:00
rattus fbe6d3ca8f
Add configurable DETAIL logging side channel (#15064) 2026-07-28 17:31:45 -04:00
rattus c01175530e
Load weights to process RAM with MRU policy using pinning infrastructure (#15027) 2026-07-28 17:05:57 -04:00
Jukka Seppänen 3d41e3ea4e
Support int8 convrot embedding lookup (#15035) 2026-07-28 17:02:57 -04:00
Jukka Seppänen a3572c4832
Allow using float fps for LTXVEmptyLatentAudio (#15106) 2026-07-27 13:04:14 -07:00
Jukka Seppänen 806e092ed4
Fix MageFlow on cards that don't support bf16 (#15081) 2026-07-25 21:01:51 -04:00
comfyanonymous f966a2b38c
Optimize ideogram model using comfy kitchen rms rope. (#15080) 2026-07-25 15:09:26 -04:00
Jukka Seppänen 45ffd5430b
feat: Support MageFlow (CORE-372) (#15026) 2026-07-24 23:14:01 -04:00
rattus 36aec0d086
cli_args: bump clamp to 128BGB (#15068)
Some long running chaos testing on a 512GB RAM RTX6000 pro showed that this
is a little bit too low for common template workflows switching around. The
original number was just a guess from me, so go with the scientific result
instead.
2026-07-24 19:48:52 -04:00
rattus f8a3fd9d79
upscalers: convert latent_upsampler model to DynamicVram (#15063)
These were alll non-dynamic (some non-ModelPatcher) code path calling
FreeMemory for management requiring up-front memory freeing. Convert it
to dynamic to avoid legacy free behaviour mixing into otherwise
dynamic workflows.
2026-07-24 13:34:40 -07:00
comfyanonymous 7c59a078d6
Use comfy kitchen rope functions in ltx models. (#15056) 2026-07-24 15:17:31 -04:00
comfyanonymous 0cb84e7e6e
Make Ernie use comfy kitchen rms rope (#15055) 2026-07-23 22:06:52 -04:00
comfyanonymous 2e47082c8e
Make z image/lumina 2 models use comfy kitchen rms rope. (#15036) 2026-07-22 15:34:27 -04:00
comfyanonymous 947c2749dd
Use optimized rms_rope function in joyai image model. (#15018) 2026-07-21 20:02:45 -07:00
Barish Ozbay ac3a7a654f
Add native Uni3C Controlnet support for Wan models (CORE-365) (#14946)
* Add native Uni3C controlnet support for Wan models

* Dispatch double_block patches in all Wan model variants

* Remove unused grid_sizes assignment in CameraWanModel, WanModel_S2V, HumoWanModel, and AnimateWanModel
2026-07-21 15:44:14 +03:00
comfyanonymous 35c94d6023
Fix gfx1035 not being treated like RDNA2 (#15009) 2026-07-20 23:36:03 -04:00
Jukka Seppänen ecba6f2594
feat: Support Gemma4 12B (CORE-277) (#14304) 2026-07-20 19:33:26 -04:00
comfyanonymous 6665515349
Fix wan dancer issue with batches. (#14999) 2026-07-19 15:13:49 -07:00
comfyanonymous c9602625e4
Implement regular and timestep zero reference images to krea 2 for ostris and identity edit ref loras. (#14843) 2026-07-18 17:12:18 -07:00
comfyanonymous 0f42ba5146
Support anima lllite control models. (#14954)
Put them in the models/model_patches folder. Use the new AnimaLLLiteApply node.
2026-07-17 07:36:21 -07:00
comfyanonymous 71b73e3b2b
Speed up anima a bit. (#14953) 2026-07-16 19:44:02 -07:00