From 59c78a5e9e236ef304259d33ac1cd39dd3549da1 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Mon, 26 May 2025 23:48:44 +0800 Subject: [PATCH 1/4] fix convert to original state dict --- src/transformers/modeling_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/transformers/modeling_utils.py b/src/transformers/modeling_utils.py index 32a3689bba4b..5524352b0a24 100644 --- a/src/transformers/modeling_utils.py +++ b/src/transformers/modeling_utils.py @@ -3648,7 +3648,7 @@ def save_pretrained( for key, value in state_dict.items(): for pattern, replacement in reverse_key_mapping.items(): replacement = replacement.lstrip("^") # strip off un-needed chars and patterns - replacement = re.sub(r"\(.*?\)", "", pattern) + replacement = re.sub(r"\(.*?\)", "", replacement) key, n_replace = re.subn(pattern, replacement, key) # Early exit of the loop if n_replace > 0: From 9d41a93b6d268115b10913051af8e5e9b7b71de3 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Tue, 27 May 2025 00:23:19 +0800 Subject: [PATCH 2/4] fix --- src/transformers/modeling_utils.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/transformers/modeling_utils.py b/src/transformers/modeling_utils.py index 5524352b0a24..766d5b19168a 100644 --- a/src/transformers/modeling_utils.py +++ b/src/transformers/modeling_utils.py @@ -3647,9 +3647,18 @@ def save_pretrained( original_state_dict = {} for key, value in state_dict.items(): for pattern, replacement in reverse_key_mapping.items(): - replacement = replacement.lstrip("^") # strip off un-needed chars and patterns - replacement = re.sub(r"\(.*?\)", "", replacement) - key, n_replace = re.subn(pattern, replacement, key) + depth = 0 + replacement_str = [] + for char in replacement: # strip off un-needed chars and patterns + if char == "(": + depth += 1 + elif char == ")": + depth = max(0, depth - 1) + elif depth == 0 and char not in ["^", "$"]: + replacement_str.append(char) + + replacement_str = ''.join(replacement_str) + key, n_replace = re.subn(pattern, replacement_str, key) # Early exit of the loop if n_replace > 0: break From 7c45ce9320676129f5c611282af95e40e8588471 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Tue, 27 May 2025 00:26:36 +0800 Subject: [PATCH 3/4] lint --- src/transformers/modeling_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/transformers/modeling_utils.py b/src/transformers/modeling_utils.py index 766d5b19168a..1c3260cc8025 100644 --- a/src/transformers/modeling_utils.py +++ b/src/transformers/modeling_utils.py @@ -3657,7 +3657,7 @@ def save_pretrained( elif depth == 0 and char not in ["^", "$"]: replacement_str.append(char) - replacement_str = ''.join(replacement_str) + replacement_str = "".join(replacement_str) key, n_replace = re.subn(pattern, replacement_str, key) # Early exit of the loop if n_replace > 0: From de76d12aa276a5effc262bcab29f0a5765ba01b2 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Tue, 27 May 2025 18:14:17 +0800 Subject: [PATCH 4/4] Update modeling_utils.py --- src/transformers/modeling_utils.py | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/transformers/modeling_utils.py b/src/transformers/modeling_utils.py index 1c3260cc8025..e595bc07b0b0 100644 --- a/src/transformers/modeling_utils.py +++ b/src/transformers/modeling_utils.py @@ -3647,18 +3647,9 @@ def save_pretrained( original_state_dict = {} for key, value in state_dict.items(): for pattern, replacement in reverse_key_mapping.items(): - depth = 0 - replacement_str = [] - for char in replacement: # strip off un-needed chars and patterns - if char == "(": - depth += 1 - elif char == ")": - depth = max(0, depth - 1) - elif depth == 0 and char not in ["^", "$"]: - replacement_str.append(char) - - replacement_str = "".join(replacement_str) - key, n_replace = re.subn(pattern, replacement_str, key) + replacement = replacement.lstrip("^") # strip off un-needed chars and patterns + replacement = re.sub(r"\(.*\)", "", replacement) + key, n_replace = re.subn(pattern, replacement, key) # Early exit of the loop if n_replace > 0: break