-
Notifications
You must be signed in to change notification settings - Fork 13.4k
MultiGPU Work Units For Accelerated Sampling (CORE-184) #7063
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
173 commits
Select commit
Hold shift + click to select a range
72bbf49
Add 'sigmas' to transformer_options so that downstream code can know …
Kosinkadink bf21be0
Merge branch 'master' into hooks_part2
Kosinkadink d44295e
Merge branch 'master' into hooks_part2
Kosinkadink 5a2ad03
Cleaned up hooks.py, refactored Hook.should_register and add_hook_pat…
Kosinkadink 776aa73
Refactor WrapperHook into TransformerOptionsHook, as there is no need…
Kosinkadink 111fd0c
Refactored HookGroup to also store a dictionary of hooks separated by…
Kosinkadink 6620d86
In inner_sample, change "sigmas" to "sampler_sigmas" in transformer_o…
Kosinkadink db2d7ad
Merge branch 'add_sample_sigmas' into hooks_part2
Kosinkadink 8270ff3
Refactored 'registered' to be HookGroup instead of a list of Hooks, m…
Kosinkadink 4446c86
Made hook clone code sane, made clear ObjectPatchHook and SetInjectio…
Kosinkadink 03a97b6
Fix performance of hooks when hooks are appended via Cond Pair Set Pr…
Kosinkadink 0a7e2ae
Filter only registered hooks on self.conds in CFGGuider.sample
Kosinkadink 6463c39
Merge branch 'master' into hooks_part2
Kosinkadink f48f90e
Make hook_scope functional for TransformerOptionsHook
Kosinkadink 2724ac4
Merge branch 'master' into hooks_part2
Kosinkadink 1b38f5b
removed 4 whitespace lines to satisfy Ruff,
Kosinkadink 58bf881
Add a get_injections function to ModelPatcher
Kosinkadink 216fea1
Made TransformerOptionsHook contribute to registered hooks properly, …
Kosinkadink 11c6d56
Merge branch 'master' into hooks_part2
Kosinkadink 3cd4c5c
Rename AddModelsHooks to AdditionalModelsHook, rename SetInjectionsHo…
Kosinkadink 7333281
Clean up a typehint
Kosinkadink 66838eb
Merge branch 'comfyanonymous:master' into multigpu_support
Kosinkadink 871258a
Add get_all_torch_devices to get detected devices intended for curren…
Kosinkadink 7448f02
Initial proof of concept of giving splitting cond sampling between mu…
Kosinkadink d3cf2b7
Merge branch 'comfyanonymous:master' into multigpu_support
Kosinkadink e88c6c0
Fix cond_cat to not try to cast anything that doesn't have a 'to' fun…
Kosinkadink 8d4b501
Merge branch 'master' into multigpu_support
Kosinkadink d508807
Make test node for multigpu instead of storing it in just a local __i…
Kosinkadink ec16ee2
Merge branch 'master' into multigpu_support
Kosinkadink 198953c
Add nodes_multigpu.py to loaded nodes
Kosinkadink 25818dc
Added a 'max_gpus' input
Kosinkadink 2145a20
Merge branch 'master' into multigpu_support
Kosinkadink 31f5458
Merge branch 'master' into multigpu_support
Kosinkadink bfce723
Initial work on multigpu_clone function, which will account for addit…
Kosinkadink 6c9e94b
Merge branch 'master' into multigpu_support
Kosinkadink bdbcb85
Merge branch 'multigpu_support' of https://github.com/Kosinkadink/Com…
Kosinkadink 328d4f1
Make WeightHooks compatible with MultiGPU, clean up some code
Kosinkadink ef137ac
Merge branch 'multigpu_support' of https://github.com/kosinkadink/Com…
Kosinkadink 02a4d0a
Added unload_model_and_clones to model_management.py to allow unloadi…
Kosinkadink 5db4277
Make sure additional_models are unloaded as well when perform
Kosinkadink 46969c3
Initial MultiGPU support for controlnets
Kosinkadink 51af7fa
Fix multigpu ControlBase get_models and cleanup calls to avoid multip…
Kosinkadink c7feef9
Cast transformer_options for multigpu
Kosinkadink e3298b8
Create proper MultiGPU Initialize node, create gpu_options to create …
Kosinkadink eda866b
Extracted multigpu core code into multigpu.py, added load_balance_dev…
Kosinkadink 0b3233b
Merge remote-tracking branch 'origin/master' into multigpu_support
Kosinkadink 02747cd
Carry over change from _calc_cond_batch into _calc_cond_batch_multigpu
Kosinkadink 99a5c10
Merge branch 'master' into multigpu_support
Kosinkadink 441cfd1
Merge branch 'master' into multigpu_support
Kosinkadink 476aa79
Let --cuda-device take in a string to allow multiple devices (or devi…
Kosinkadink b03763b
Merge branch 'multigpu_support' into worksplit-multigpu
Kosinkadink d2504fb
Merge branch 'master' into worksplit-multigpu
Kosinkadink 048f4f0
Merge branch 'master' into worksplit-multigpu
Kosinkadink 605893d
Merge branch 'master' into worksplit-multigpu
Kosinkadink 093914a
Made MultiGPU Work Units node more robust by forcing ModelPatcher clo…
Kosinkadink 5080105
Merge branch 'master' into worksplit-multigpu
Kosinkadink 6dca17b
Satisfy ruff linting
Kosinkadink 6e144b9
Merge branch 'master' into worksplit-multigpu
Kosinkadink cc928a7
Merge branch 'master' into worksplit-multigpu
Kosinkadink c4ba399
Merge branch 'master' into worksplit-multigpu
Kosinkadink 219d3cd
Merge branch 'master' into worksplit-multigpu
Kosinkadink 5ccec33
Merge branch 'worksplit-multigpu' of https://github.com/comfyanonymou…
Kosinkadink 4879b47
Merge branch 'master' into worksplit-multigpu
Kosinkadink a786ce5
Merge branch 'master' into worksplit-multigpu
Kosinkadink 63567c0
Merge branch 'master' into worksplit-multigpu
Kosinkadink 9ce9ff8
Allow chained MultiGPU Work Unit nodes to affect max_gpus present on …
Kosinkadink 407a5a6
Rollback core of last commit due to weird behavior
Kosinkadink 2fa9aff
Merge branch 'master' into worksplit-multigpu
Kosinkadink ccd5c01
Merge branch 'master' into worksplit-multigpu
Kosinkadink adc66c0
Merge branch 'master' into worksplit-multigpu
Kosinkadink ed6f92c
Merge branch 'master' into worksplit-multigpu
Kosinkadink 2a54a90
Merge branch 'master' into worksplit-multigpu
Kosinkadink b5cccf1
Merge branch 'master' into worksplit-multigpu
Kosinkadink 8be7117
Make unload_all_models account for all devices
Kosinkadink 6211d2b
Merge branch 'master' into worksplit-multigpu
Kosinkadink 272e8d4
Merge branch 'master' into worksplit-multigpu
Kosinkadink 9726eac
Merge branch 'master' into worksplit-multigpu
Kosinkadink 8ae2523
Merge branch 'master' into worksplit-multigpu
Kosinkadink 0336b0a
Merge branch 'master' into worksplit-multigpu
Kosinkadink 1ae9893
Merge branch 'master' into worksplit-multigpu
Kosinkadink 44e053c
Improve error handling for multigpu threads
Kosinkadink 431dec8
Merge branch 'worksplit-multigpu' of https://github.com/comfyanonymou…
Kosinkadink 443a795
Merge branch 'master' into worksplit-multigpu
Kosinkadink d53479a
Merge branch 'master' into worksplit-multigpu
Kosinkadink 9855baa
Merge branch 'master' into worksplit-multigpu
Kosinkadink 3c41046
Merge branch 'master' into worksplit-multigpu-wip
Kosinkadink 3b90a30
Merge branch 'master' into worksplit-multigpu-wip
Kosinkadink 5d50242
Merge branch 'master' into worksplit-multigpu
Kosinkadink 9cca36f
Merge branch 'master' into worksplit-multigpu
Kosinkadink 382f84a
Merge branch 'master' into worksplit-multigpu
Kosinkadink 67e906a
Merge branch 'master' into worksplit-multigpu
Kosinkadink df122a7
Merge branch 'master' into worksplit-multigpu
Kosinkadink b4f559b
Merge branch 'master' into worksplit-multigpu
Kosinkadink 6ea6936
Merge branch 'master' into worksplit-multigpu
Kosinkadink 962c3c8
Merge branch 'master' into worksplit-multigpu
Kosinkadink cfb63bf
Merge branch 'worksplit-multigpu' of https://github.com/comfyanonymou…
Kosinkadink 3677943
Merge branch 'master' into worksplit-multigpu
Kosinkadink 1489399
Merge branch 'master' into worksplit-multigpu
Kosinkadink b0741c7
Merge branch 'master' into worksplit-multigpu
Kosinkadink 383f9b3
Merge branch 'master' into worksplit-multigpu
Kosinkadink 2c8f485
Merge branch 'master' into worksplit-multigpu
Kosinkadink ac14ee6
Merge branch 'master' into worksplit-multigpu
Kosinkadink 9e9c129
Merge remote-tracking branch 'origin/master' into worksplit-multigpu
Kosinkadink efcd828
Merge branch 'master' into worksplit-multigpu
Kosinkadink bb44c2e
Merge branch 'master' into worksplit-multigpu
Kosinkadink c2115a4
Merge branch 'master' into worksplit-multigpu
Kosinkadink 8cbbf0b
Merge branch 'master' into worksplit-multigpu
Kosinkadink d89dd5f
Satisfy ruff
Kosinkadink b326a54
Merge branch 'master' into worksplit-multigpu
Kosinkadink 4661d1d
Bring patches changes from _calc_cond_batch into _calc_cond_batch_mul…
Kosinkadink df2fd4c
Merge branch 'master' into worksplit-multigpu
Kosinkadink f4b99bc
Made multigpu deepclone load model from disk to avoid needing to deep…
Kosinkadink f410d28
Merge origin/master into worksplit-multigpu
Kosinkadink be35378
Merge branch 'master' into worksplit-multigpu
Kosinkadink 84f465e
Set CUDA device at start of multigpu threads to avoid multithreading …
Kosinkadink d52dcbc
Rewrite multigpu nodes to V3 format
Kosinkadink 5f4fcd1
Simplify multigpu nodes: default max_gpus=2, remove gpu_options input…
Kosinkadink 1d8e379
Rename MultiGPU Work Units to MultiGPU CFG Split
Kosinkadink afdddce
Re-enable comfy-kitchen cuda backend for multigpu testing
Kosinkadink 3fab720
Add debug logging for device mismatch in ModelPatcherDynamic.load
Kosinkadink 2080374
Add detailed multigpu debug logging to load_models_gpu
Kosinkadink b418fb1
Fix device mismatch: update LoadedModel.device when _switch_parent sw…
Kosinkadink da38644
Merge remote-tracking branch 'origin/master' into worksplit-multigpu
Kosinkadink 4b93c43
Implement persistent thread pool for multi-GPU CFG splitting (#13329)
Kosinkadink 48deb15
Simplify multigpu dispatch: run all devices on pool threads (#13340)
Kosinkadink f0d550b
Minor updates for worksplit_gpu with comfy-aimdo (#13419)
rattus128 37deccb
Fix Hunyuan 3D 2.1 multi-GPU worksplit: use cond_or_uncond instead of…
Kosinkadink b502bcf
Merge remote-tracking branch 'origin/master' into worksplit-multigpu
Kosinkadink 7b8b367
comfy-aimdo: 0.0.214 (#13532)
rattus128 aa464b3
Multi-GPU device selection for loader nodes + CUDA context fixes (#13…
Kosinkadink 1b96430
Merge master into worksplit-multigpu (#13546)
Kosinkadink a61e2bb
Add device selection on Image Only Load Checkpoint (CORE-158) (#13748)
alexisrolland 9e3ede1
Fix MultiGPU scheduler capacity accounting (#14000)
Kosinkadink 819c7c0
Refactor MultiGPU scheduler for readability and termination safety (#…
Kosinkadink ff766e5
Merge remote-tracking branch 'origin/master' into merge-master-into-w…
Kosinkadink 50d1dd6
Fix MultiGPU Options node discarding cloned GPUOptionsGroup
Kosinkadink 9a681cc
Guard cached_patcher_init when output_model is False
Kosinkadink ba41775
Fix get_all_torch_devices for XPU/NPU and guard remove()
Kosinkadink dd85851
Prune inherited multigpu clones when max_gpus is lowered
Kosinkadink ac0a90c
Use cond_shapes in multigpu memory-fit check (parity with single-GPU …
Kosinkadink 4d9106d
Document --cuda-device comma format and MultiGPU Options relative_spe…
Kosinkadink adde123
Restore prepare_state backward-compatible signature
9636216
Free QwenFunControlNet base_model reference in cleanup
a18dd21
Pass per-device model to multigpu control clones in pre_run_control
1417b71
Fix CodeRabbit findings in worksplit-multigpu (#14017)
Kosinkadink 822a3ec
Note _calc_cond_batch and _calc_cond_batch_multigpu must stay in sync
019261e
Simplify Hunyuan 3D 2.1 swap_cfg_halves gate to a shape check
fd79f22
Backport Hunyuan 3D 2.1 attention batch-size fixes from #13699
d0b9dbb
Merge remote-tracking branch 'origin/master' into worksplit-multigpu
2ed396c
Mark non-NVIDIA multigpu gaps with TODOs in _handle_batch
Kosinkadink b649502
Report all torch devices from /system_stats
Kosinkadink df17b56
memory_management: replace thread refusal with mutex
rattus128 7a18f9a
comfy-aimdo 0.4.4
rattus128 74b0a82
Add UPSCALE_MODEL lane to MultiGPU CFG Split
pollockjj 4d3d68e
Add tiled VAE lane to MultiGPU Work Units
pollockjj cb83c41
Merge pull request #14052 from rattus128/prs/worksplit-t-load-fix
Kosinkadink 5dc4e38
Defer @pollockjj's tiled-VAE and UPSCALE_MODEL MultiGPU lanes (#14066)
Kosinkadink 5ffea26
Fix single-GPU non-CUDA regressions on worksplit-multigpu
Kosinkadink e6c65fa
Merge pull request #14068 from Comfy-Org/fix/single-gpu-non-cuda
Kosinkadink 2e5211e
Merge branch 'master' into worksplit-multigpu
Kosinkadink 403ff49
Restore nodes_kling.py removal of max_poll_attempts=280 lost in merge
Kosinkadink 2369eb0
Route aimdo init through get_all_torch_devices() instead of raw torch…
Kosinkadink 711bb1b
Simplify aimdo init call - drop redundant type/index filter
Kosinkadink 9a12a93
Revert per-loader device inputs from #13483 / #13748
Kosinkadink d770609
Add Select Model/CLIP/VAE Device passthrough nodes
Kosinkadink 4e65005
SelectXDevice nodes: register new load_device with ModelPatcherDynamic
Kosinkadink 9ee1540
SelectXDevice: use lowercase validate_inputs for V3 combo bypass
Kosinkadink b319c80
SelectXDevice: address code-review follow-ups
Kosinkadink 5c2e34c
Merge branch 'master' into worksplit-multigpu
Kosinkadink bece6b2
multigpu: refactor deepclone_multigpu + register cached_patcher_init …
Kosinkadink ac5b7e8
multigpu: drop unused copy import; sync requirements.txt with master
Kosinkadink de487c1
Merge branch 'master' into worksplit-multigpu
Kosinkadink 7d958e1
multigpu: fix CPU SelectModelDevice slowness + MGCS reuse stripping i…
Kosinkadink File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Preserve the
previous_controlnetchain in multigpu clones.These new clone paths build
cfromcopy(), butcopy_to()does not carryprevious_controlnet. Onceget_instance_for_device()returns the per-device clone, stacked ControlNets/T2IAdapters on earlier links are silently dropped on secondary GPUs.As per coding guidelines,
comfy/**changes should focus on backward compatibility.Also applies to: 952-958
🤖 Prompt for AI Agents