From e41d9f52cdf0fceeecdb456cd38256dc8e57b3e7 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Wed, 4 Dec 2024 08:47:22 -0500 Subject: [PATCH] add offload warning Signed-off-by: Vladimir Mandic --- modules/sd_models.py | 17 +++++++++++------ wiki | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/modules/sd_models.py b/modules/sd_models.py index 37567962c..101ff837b 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -34,6 +34,7 @@ debug_load = os.environ.get('SD_LOAD_DEBUG', None) debug_process = shared.log.trace if os.environ.get('SD_PROCESS_DEBUG', None) is not None else lambda *args, **kwargs: None diffusers_version = int(diffusers.__version__.split('.')[1]) checkpoint_tiles = checkpoint_titles # legacy compatibility +should_offload = ['sc', 'sd3', 'f1', 'hunyuandit', 'auraflow', 'omnigen'] class NoWatermark: @@ -320,11 +321,15 @@ def set_diffuser_offload(sd_model, op: str = 'model'): return if not (hasattr(sd_model, "has_accelerate") and sd_model.has_accelerate): sd_model.has_accelerate = False - if hasattr(sd_model, 'maybe_free_model_hooks') and shared.opts.diffusers_offload_mode == "none": - shared.log.debug(f'Setting {op}: offload={shared.opts.diffusers_offload_mode} limit={shared.opts.cuda_mem_fraction}') - sd_model.maybe_free_model_hooks() - sd_model.has_accelerate = False - if hasattr(sd_model, "enable_model_cpu_offload") and shared.opts.diffusers_offload_mode == "model": + if shared.opts.diffusers_offload_mode == "none": + if shared.sd_model_type in should_offload: + shared.log.warning(f'Setting {op}: offload={shared.opts.diffusers_offload_mode} type={shared.sd_model.__class__.__name__} large model') + else: + shared.log.debug(f'Setting {op}: offload={shared.opts.diffusers_offload_mode} limit={shared.opts.cuda_mem_fraction}') + if hasattr(sd_model, 'maybe_free_model_hooks'): + sd_model.maybe_free_model_hooks() + sd_model.has_accelerate = False + if shared.opts.diffusers_offload_mode == "model" and hasattr(sd_model, "enable_model_cpu_offload"): try: shared.log.debug(f'Setting {op}: offload={shared.opts.diffusers_offload_mode} limit={shared.opts.cuda_mem_fraction}') if shared.opts.diffusers_move_base or shared.opts.diffusers_move_unet or shared.opts.diffusers_move_refiner: @@ -339,7 +344,7 @@ def set_diffuser_offload(sd_model, op: str = 'model'): set_accelerate(sd_model) except Exception as e: shared.log.error(f'Setting {op}: offload={shared.opts.diffusers_offload_mode} {e}') - if hasattr(sd_model, "enable_sequential_cpu_offload") and shared.opts.diffusers_offload_mode == "sequential": + if shared.opts.diffusers_offload_mode == "sequential" and hasattr(sd_model, "enable_sequential_cpu_offload"): try: shared.log.debug(f'Setting {op}: offload={shared.opts.diffusers_offload_mode} limit={shared.opts.cuda_mem_fraction}') if shared.opts.diffusers_move_base or shared.opts.diffusers_move_unet or shared.opts.diffusers_move_refiner: diff --git a/wiki b/wiki index f57cdb49d..2a83f725b 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit f57cdb49d8ca928024b43525897d1c1379eab4c4 +Subproject commit 2a83f725bda6a81399f579ba7102741f71b0be39