From 609442d271bd7ed106a0933b1937289be7c1ad01 Mon Sep 17 00:00:00 2001 From: tastelikefeet <58414341+tastelikefeet@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:15:56 +0800 Subject: [PATCH] Patch dynamic module (#1554) --- modelscope/utils/hf_util/patcher.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/modelscope/utils/hf_util/patcher.py b/modelscope/utils/hf_util/patcher.py index c6c0527b..c0ebdb22 100644 --- a/modelscope/utils/hf_util/patcher.py +++ b/modelscope/utils/hf_util/patcher.py @@ -436,6 +436,25 @@ def _patch_pretrained_class(all_imported_modules, wrap=False): **ignore_file_pattern_kwargs)) all_available_modules.append(var) + + def get_class_from_dynamic_module(class_reference, *args, **kwargs): + from transformers.dynamic_module_utils import origin_get_class_from_dynamic_module + if '--' in class_reference: + repo_id, class_reference = class_reference.split('--') + if not os.path.exists(repo_id): + from modelscope import snapshot_download + repo_id = snapshot_download(repo_id) + class_reference = repo_id + '--' + class_reference + return origin_get_class_from_dynamic_module(class_reference, *args, + **kwargs) + + from transformers import dynamic_module_utils + if not hasattr(dynamic_module_utils, + 'origin_get_class_from_dynamic_module'): + dynamic_module_utils.origin_get_class_from_dynamic_module = dynamic_module_utils.get_class_from_dynamic_module + dynamic_module_utils.get_class_from_dynamic_module = get_class_from_dynamic_module + from transformers.models.auto import configuration_auto + configuration_auto.get_class_from_dynamic_module = get_class_from_dynamic_module return all_available_modules @@ -469,6 +488,13 @@ def _unpatch_pretrained_class(all_imported_modules): except: # noqa pass + from transformers import dynamic_module_utils + if hasattr(dynamic_module_utils, 'origin_get_class_from_dynamic_module'): + dynamic_module_utils.get_class_from_dynamic_module = dynamic_module_utils.origin_get_class_from_dynamic_module + from transformers.models.auto import configuration_auto + configuration_auto.get_class_from_dynamic_module = dynamic_module_utils.origin_get_class_from_dynamic_module + delattr(dynamic_module_utils, 'origin_get_class_from_dynamic_module') + def _patch_hub(): import huggingface_hub