From 944ebb1fd2a7db68a9ecdb4db241bccfb9eeec3d Mon Sep 17 00:00:00 2001 From: xin3he Date: Mon, 24 Mar 2025 10:38:45 +0800 Subject: [PATCH 1/3] fix vulnerability Signed-off-by: xin3he --- neural_compressor/utils/load_huggingface.py | 32 ++------------------- 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/neural_compressor/utils/load_huggingface.py b/neural_compressor/utils/load_huggingface.py index 6671640722d..79cfb5bda46 100644 --- a/neural_compressor/utils/load_huggingface.py +++ b/neural_compressor/utils/load_huggingface.py @@ -96,33 +96,8 @@ def from_pretrained(cls, model_name_or_path: str, **kwargs) -> torch.nn.Module: ) return model else: - logger.info("the quantization optimized model is loading.") - keys_to_ignore_on_load_unexpected = copy.deepcopy( - getattr(model_class, "_keys_to_ignore_on_load_unexpected", None) - ) - keys_to_ignore_on_load_missing = copy.deepcopy( - getattr(model_class, "_keys_to_ignore_on_load_missing", None) - ) - - # Avoid unnecessary warnings resulting from quantized model initialization - quantized_keys_to_ignore_on_load = [ - r"zero_point", - r"scale", - r"packed_params", - r"constant", - r"module", - r"best_configure", - ] - if keys_to_ignore_on_load_unexpected is None: - model_class._keys_to_ignore_on_load_unexpected = quantized_keys_to_ignore_on_load - else: - model_class._keys_to_ignore_on_load_unexpected.extend(quantized_keys_to_ignore_on_load) - missing_keys_to_ignore_on_load = [r"weight", r"bias"] - if keys_to_ignore_on_load_missing is None: - model_class._keys_to_ignore_on_load_missing = missing_keys_to_ignore_on_load - else: # pragma: no cover - model_class._keys_to_ignore_on_load_missing.extend(missing_keys_to_ignore_on_load) - + # only show logs of error level, since keys_to_ignore_on_load_unexpected is not working without specific model_class + transformers.logging.set_verbosity_error() if not os.path.isdir(model_name_or_path) and not os.path.isfile(model_name_or_path): # pragma: no cover from transformers.utils import cached_file @@ -169,9 +144,6 @@ def from_pretrained(cls, model_name_or_path: str, **kwargs) -> torch.nn.Module: **kwargs, ) - model_class._keys_to_ignore_on_load_unexpected = keys_to_ignore_on_load_unexpected - model_class._keys_to_ignore_on_load_missing = keys_to_ignore_on_load_missing - if not os.path.isdir(model_name_or_path) and not os.path.isfile(model_name_or_path): # pragma: no cover # pylint: disable=E0611 from packaging.version import Version From 608af9003c949a5a711791534d537facd48de4b7 Mon Sep 17 00:00:00 2001 From: Xin He Date: Mon, 24 Mar 2025 13:30:37 +0800 Subject: [PATCH 2/3] Update load_huggingface.py --- neural_compressor/utils/load_huggingface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/neural_compressor/utils/load_huggingface.py b/neural_compressor/utils/load_huggingface.py index 79cfb5bda46..bad65aafd25 100644 --- a/neural_compressor/utils/load_huggingface.py +++ b/neural_compressor/utils/load_huggingface.py @@ -83,7 +83,7 @@ def from_pretrained(cls, model_name_or_path: str, **kwargs) -> torch.nn.Module: **kwargs, ) - model_class = eval(f"transformers.{config.architectures[0]}") + model_class = transformers.AutoModelForSequenceClassification if config.torch_dtype is not torch.int8: model = model_class.from_pretrained( model_name_or_path, From aa8da34f71f2f472b21d82865d5fb793fa7a74e0 Mon Sep 17 00:00:00 2001 From: xin3he Date: Mon, 24 Mar 2025 15:59:04 +0800 Subject: [PATCH 3/3] change a better way to resolve it Signed-off-by: xin3he --- neural_compressor/utils/load_huggingface.py | 49 +-------------------- 1 file changed, 2 insertions(+), 47 deletions(-) diff --git a/neural_compressor/utils/load_huggingface.py b/neural_compressor/utils/load_huggingface.py index bad65aafd25..c1536736c01 100644 --- a/neural_compressor/utils/load_huggingface.py +++ b/neural_compressor/utils/load_huggingface.py @@ -96,53 +96,8 @@ def from_pretrained(cls, model_name_or_path: str, **kwargs) -> torch.nn.Module: ) return model else: - # only show logs of error level, since keys_to_ignore_on_load_unexpected is not working without specific model_class - transformers.logging.set_verbosity_error() - if not os.path.isdir(model_name_or_path) and not os.path.isfile(model_name_or_path): # pragma: no cover - from transformers.utils import cached_file - - try: - # Load from URL or cache if already cached - resolved_weights_file = cached_file( - model_name_or_path, - filename=WEIGHTS_NAME, - cache_dir=cache_dir, - force_download=force_download, - resume_download=resume_download, - use_auth_token=use_auth_token, - ) - except EnvironmentError as err: # pragma: no cover - logger.error(err) - msg = ( - f"Can't load weights for '{model_name_or_path}'. Make sure that:\n\n" - f"- '{model_name_or_path}' is a correct model identifier " - f"listed on 'https://huggingface.co/models'\n (make sure " - f"'{model_name_or_path}' is not a path to a local directory with " - f"something else, in that case)\n\n- or '{model_name_or_path}' is " - f"the correct path to a directory containing a file " - f"named one of {WEIGHTS_NAME}\n\n" - ) - if revision is not None: - msg += ( - f"- or '{revision}' is a valid git identifier " - f"(branch name, a tag name, or a commit id) that " - f"exists for this model name as listed on its model " - f"page on 'https://huggingface.co/models'\n\n" - ) - raise EnvironmentError(msg) - else: - resolved_weights_file = os.path.join(model_name_or_path, WEIGHTS_NAME) - state_dict = torch.load(resolved_weights_file, {}) - model = model_class.from_pretrained( - model_name_or_path, - cache_dir=cache_dir, - force_download=force_download, - resume_download=resume_download, - use_auth_token=use_auth_token, - revision=revision, - state_dict=state_dict, - **kwargs, - ) + config.torch_dtype = torch.float32 + model = model_class.from_config(config) if not os.path.isdir(model_name_or_path) and not os.path.isfile(model_name_or_path): # pragma: no cover # pylint: disable=E0611