Skip to content

Commit 1ac7818

Browse files
authored
make control-net load order deterministic (#13701)
Make this deterministic so speeds dont change base of load order. Load them in reverse order so whatever the caller lists first is the top priority.
1 parent c47633f commit 1ac7818

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

comfy/model_management.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -721,13 +721,15 @@ def load_models_gpu(models, memory_required=0, force_patch_weights=False, minimu
721721
else:
722722
minimum_memory_required = max(inference_memory, minimum_memory_required + extra_reserved_memory())
723723

724-
models_temp = set()
724+
# Order-preserving dedup. A plain set() would randomize iteration order across runs
725+
models_temp = {}
725726
for m in models:
726-
models_temp.add(m)
727+
models_temp[m] = None
727728
for mm in m.model_patches_models():
728-
models_temp.add(mm)
729+
models_temp[mm] = None
729730

730-
models = models_temp
731+
models = list(models_temp)
732+
models.reverse()
731733

732734
models_to_load = []
733735

comfy/sampler_helpers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ def get_additional_models(conds, dtype):
8989
gligen += get_models_from_cond(conds[k], "gligen")
9090
add_models += get_models_from_cond(conds[k], "additional_models")
9191

92-
control_nets = set(cnets)
92+
# Order-preserving dedup. A plain set() would randomize iteration order across runs
93+
control_nets = list(dict.fromkeys(cnets))
9394

9495
inference_memory = 0
9596
control_models = []

0 commit comments

Comments
 (0)