diff --git a/optimum/commands/export/openvino.py b/optimum/commands/export/openvino.py index 916cf6181..3d8b44a56 100644 --- a/optimum/commands/export/openvino.py +++ b/optimum/commands/export/openvino.py @@ -262,6 +262,9 @@ def run(self): "scale_estimation": self.args.scale_estimation, } + if quantization_config.get("dataset", None) is not None: + quantization_config["trust_remote_code"] = self.args.trust_remote_code + if self.args.weight_format in {"int4_sym_g128", "int4_asym_g128", "int4_sym_g64", "int4_asym_g64"}: logger.warning( f"--weight-format {self.args.weight_format} is deprecated, possible choices are fp32, fp16, int8, int4" diff --git a/optimum/intel/openvino/configuration.py b/optimum/intel/openvino/configuration.py index f66760e8b..2354ade80 100644 --- a/optimum/intel/openvino/configuration.py +++ b/optimum/intel/openvino/configuration.py @@ -263,6 +263,7 @@ def __init__( sym: bool = False, group_size: Optional[int] = None, tokenizer: Optional[str] = None, + trust_remote_code: bool = False, dataset: Optional[Union[str, List[str]]] = None, ratio: float = 1.0, all_layers: Optional[bool] = None, @@ -275,6 +276,7 @@ def __init__( ): super().__init__(bits=bits, sym=sym, ignored_scope=ignored_scope, num_samples=num_samples) self.tokenizer = tokenizer + self.trust_remote_code = trust_remote_code self.dataset = dataset self.group_size = group_size or (-1 if bits == 8 else 128) self.ratio = ratio diff --git a/optimum/intel/openvino/modeling_decoder.py b/optimum/intel/openvino/modeling_decoder.py index 256e027ef..753c8f90d 100644 --- a/optimum/intel/openvino/modeling_decoder.py +++ b/optimum/intel/openvino/modeling_decoder.py @@ -310,6 +310,7 @@ def _from_transformers( stateful=None, load_in_8bit=load_in_8bit, quantization_config=quantization_config, + trust_remote_code=trust_remote_code, **kwargs, ) @@ -781,6 +782,9 @@ def _from_pretrained( if isinstance(quantization_config, dict) and quantization_config == {"bits": 4}: quantization_config = get_default_int4_config(config.name_or_path) + if quantization_config.get("dataset", None) is not None: + quantization_config["trust_remote_code"] = kwargs.get("trust_remote_code", False) + quantization_config = cls._prepare_weight_quantization_config(quantization_config, load_in_8bit) enable_compilation = kwargs.pop("compile", True) and not quantization_config diff --git a/optimum/intel/openvino/quantization.py b/optimum/intel/openvino/quantization.py index b1bef80a3..8262a1cff 100644 --- a/optimum/intel/openvino/quantization.py +++ b/optimum/intel/openvino/quantization.py @@ -672,7 +672,9 @@ def _remove_unused_columns(self, dataset: "Dataset"): def _prepare_builtin_dataset(self, quantization_config: OVWeightQuantizationConfig): from optimum.gptq.data import get_dataset, prepare_dataset - tokenizer = AutoTokenizer.from_pretrained(quantization_config.tokenizer) + tokenizer = AutoTokenizer.from_pretrained( + quantization_config.tokenizer, trust_remote_code=quantization_config.trust_remote_code + ) nsamples = quantization_config.num_samples if quantization_config.num_samples else 128 calibration_dataset = get_dataset(quantization_config.dataset, tokenizer, seqlen=32, nsamples=nsamples) calibration_dataset = prepare_dataset(calibration_dataset)