From 1c41c90517500f2043bf7514adf4ac3968727868 Mon Sep 17 00:00:00 2001 From: sayakpaul Date: Mon, 13 Jan 2025 11:43:10 +0530 Subject: [PATCH 1/3] improve failure handling for peft. --- src/diffusers/loaders/peft.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/diffusers/loaders/peft.py b/src/diffusers/loaders/peft.py index c4932796f44d..4b2e1b174ad2 100644 --- a/src/diffusers/loaders/peft.py +++ b/src/diffusers/loaders/peft.py @@ -300,15 +300,17 @@ def load_lora_adapter(self, pretrained_model_name_or_path_or_dict, prefix="trans try: inject_adapter_in_model(lora_config, self, adapter_name=adapter_name, **peft_kwargs) incompatible_keys = set_peft_model_state_dict(self, state_dict, adapter_name, **peft_kwargs) - except RuntimeError as e: - for module in self.modules(): - if isinstance(module, BaseTunerLayer): - active_adapters = module.active_adapters - for active_adapter in active_adapters: - if adapter_name in active_adapter: - module.delete_adapter(adapter_name) - - self.peft_config.pop(adapter_name) + except Exception as e: + # In case `inject_adapter_in_model()` was unsuccessful even before injecting the `peft_config`. + if getattr(self, "peft_config", None) is not None: + for module in self.modules(): + if isinstance(module, BaseTunerLayer): + active_adapters = module.active_adapters + for active_adapter in active_adapters: + if adapter_name in active_adapter: + module.delete_adapter(adapter_name) + + self.peft_config.pop(adapter_name) logger.error(f"Loading {adapter_name} was unsucessful with the following error: \n{e}") raise From 887ed4b5504b719e57d56ccf65196a537ae441e8 Mon Sep 17 00:00:00 2001 From: sayakpaul Date: Mon, 13 Jan 2025 12:43:42 +0530 Subject: [PATCH 2/3] emppty From 1d7db90927badb024f2a77370d7d775edbd2af40 Mon Sep 17 00:00:00 2001 From: Sayak Paul Date: Mon, 13 Jan 2025 17:45:03 +0530 Subject: [PATCH 3/3] Update src/diffusers/loaders/peft.py Co-authored-by: Benjamin Bossan --- src/diffusers/loaders/peft.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/diffusers/loaders/peft.py b/src/diffusers/loaders/peft.py index 4b2e1b174ad2..454496ff04d4 100644 --- a/src/diffusers/loaders/peft.py +++ b/src/diffusers/loaders/peft.py @@ -302,7 +302,7 @@ def load_lora_adapter(self, pretrained_model_name_or_path_or_dict, prefix="trans incompatible_keys = set_peft_model_state_dict(self, state_dict, adapter_name, **peft_kwargs) except Exception as e: # In case `inject_adapter_in_model()` was unsuccessful even before injecting the `peft_config`. - if getattr(self, "peft_config", None) is not None: + if hasattr(self, "peft_config"): for module in self.modules(): if isinstance(module, BaseTunerLayer): active_adapters = module.active_adapters