From ce03222d5d8617c29f74a4c733b0be4b0ac896df Mon Sep 17 00:00:00 2001 From: chillpixel <124188297+chillpixelfun@users.noreply.github.com> Date: Sun, 27 Aug 2023 13:03:45 -0500 Subject: [PATCH 1/2] Update loaders.py Solves an error sometimes thrown while iterating over state_dict.keys() caused by using the .pop() method within the loop. --- src/diffusers/loaders.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/diffusers/loaders.py b/src/diffusers/loaders.py index 2acfdc594ff8..b4a551cbcd7e 100644 --- a/src/diffusers/loaders.py +++ b/src/diffusers/loaders.py @@ -1128,7 +1128,7 @@ def _maybe_map_sgm_blocks_to_diffusers(cls, state_dict, unet_config, delimiter=" # 2. check if needs remapping, if not return original dict is_in_sgm_format = False - for key in all_keys: + for key in list(all_keys): if any(p in key for p in sgm_patterns): is_in_sgm_format = True break @@ -1143,7 +1143,7 @@ def _maybe_map_sgm_blocks_to_diffusers(cls, state_dict, unet_config, delimiter=" # Retrieves # of down, mid and up blocks input_block_ids, middle_block_ids, output_block_ids = set(), set(), set() - for layer in all_keys: + for layer in list(all_keys): if "text" in layer: new_state_dict[layer] = state_dict.pop(layer) else: From 1b930f90490c57eac8a230cc694ec9e32529dcd7 Mon Sep 17 00:00:00 2001 From: chillpixel <124188297+chillpixelfun@users.noreply.github.com> Date: Sun, 27 Aug 2023 17:02:32 -0500 Subject: [PATCH 2/2] Update loaders.py --- src/diffusers/loaders.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/diffusers/loaders.py b/src/diffusers/loaders.py index b4a551cbcd7e..1fbfd12f6db9 100644 --- a/src/diffusers/loaders.py +++ b/src/diffusers/loaders.py @@ -1123,12 +1123,12 @@ def _best_guess_weight_name(cls, pretrained_model_name_or_path_or_dict, file_ext @classmethod def _maybe_map_sgm_blocks_to_diffusers(cls, state_dict, unet_config, delimiter="_", block_slice_pos=5): # 1. get all state_dict_keys - all_keys = state_dict.keys() + all_keys = list(state_dict.keys()) sgm_patterns = ["input_blocks", "middle_block", "output_blocks"] # 2. check if needs remapping, if not return original dict is_in_sgm_format = False - for key in list(all_keys): + for key in all_keys: if any(p in key for p in sgm_patterns): is_in_sgm_format = True break @@ -1143,7 +1143,7 @@ def _maybe_map_sgm_blocks_to_diffusers(cls, state_dict, unet_config, delimiter=" # Retrieves # of down, mid and up blocks input_block_ids, middle_block_ids, output_block_ids = set(), set(), set() - for layer in list(all_keys): + for layer in all_keys: if "text" in layer: new_state_dict[layer] = state_dict.pop(layer) else: