mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-05-30 10:57:23 +08:00
Free QwenFunControlNet base_model reference in cleanup
QwenFunControlNet.pre_run stashes the model's diffusion_model into self.extra_args['base_model'], but ControlBase.cleanup never clears extra_args. The diffusion_model reference therefore lingered between sampling runs, blocking ComfyUI's model offload/eviction logic from freeing the UNet and -- for multigpu -- holding one such reference per per-device control clone (defeating the max_gpus pruning added in this PR). Override cleanup to drop the entry; super().cleanup() already recurses into multigpu_clones so each per-device clone pops its own. Amp-Thread-ID: https://ampcode.com/threads/T-019e4a00-fe3d-76bd-a2f2-a8c8c4040082 Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
parent
adde1239b1
commit
963621603c
@ -357,6 +357,10 @@ class QwenFunControlNet(ControlNet):
|
|||||||
super().pre_run(model, percent_to_timestep_function)
|
super().pre_run(model, percent_to_timestep_function)
|
||||||
self.set_extra_arg("base_model", model.diffusion_model)
|
self.set_extra_arg("base_model", model.diffusion_model)
|
||||||
|
|
||||||
|
def cleanup(self):
|
||||||
|
self.extra_args.pop("base_model", None)
|
||||||
|
super().cleanup()
|
||||||
|
|
||||||
def copy(self):
|
def copy(self):
|
||||||
c = QwenFunControlNet(None, global_average_pooling=self.global_average_pooling, load_device=self.load_device, manual_cast_dtype=self.manual_cast_dtype)
|
c = QwenFunControlNet(None, global_average_pooling=self.global_average_pooling, load_device=self.load_device, manual_cast_dtype=self.manual_cast_dtype)
|
||||||
c.control_model = self.control_model
|
c.control_model = self.control_model
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user