diff --git a/CHANGELOGS.rst b/CHANGELOGS.rst index 9ab5c3b2..a0809cb4 100644 --- a/CHANGELOGS.rst +++ b/CHANGELOGS.rst @@ -4,6 +4,8 @@ Change Logs 0.7.11 ++++++ +* :pr:`220`: adds a patch for PR `#40791 `_ in transformers + 0.7.10 ++++++ diff --git a/onnx_diagnostic/torch_export_patches/patches/patch_transformers.py b/onnx_diagnostic/torch_export_patches/patches/patch_transformers.py index 9a96a2b7..e95a0a47 100644 --- a/onnx_diagnostic/torch_export_patches/patches/patch_transformers.py +++ b/onnx_diagnostic/torch_export_patches/patches/patch_transformers.py @@ -35,6 +35,9 @@ from ...ext_test_case import has_transformers from ...helpers.torch_helper import is_torchdynamo_exporting +patch_is_initialized = pv.Version(transformers.__version__) > pv.Version("4.56.99") + + if patch_masking_utils: # Introduced in 4.52 from transformers.masking_utils import ( @@ -213,6 +216,8 @@ def lazy_initialization(self, key_states: torch.Tensor): new_shape[-2] = 0 self.keys = torch.empty(new_shape, dtype=self.dtype, device=self.device) self.values = torch.empty(new_shape, dtype=self.dtype, device=self.device) + if patch_is_initialized: + self.is_initialized = True def _patch_make_causal_mask( diff --git a/onnx_diagnostic/torch_models/validate.py b/onnx_diagnostic/torch_models/validate.py index 42d60c1e..d6b3994f 100644 --- a/onnx_diagnostic/torch_models/validate.py +++ b/onnx_diagnostic/torch_models/validate.py @@ -113,6 +113,7 @@ def _make_folder_name( dtype: Optional[Union[str, torch.dtype]] = None, device: Optional[Union[str, torch.device]] = None, subfolder: Optional[str] = None, + opset: Optional[int] = None, ) -> str: "Creates a filename unique based on the given options." els = [model_id.replace("/", "_")] @@ -136,6 +137,8 @@ def _make_folder_name( else: raise AssertionError(f"unexpected value for device={device}, sdev={sdev!r}") els.append(sdev) + if opset is not None: + els.append(f"op{opset}") return "-".join(els) @@ -412,7 +415,13 @@ def validate_model( folder_name = None if dump_folder: folder_name = _make_folder_name( - model_id, exporter, optimization, dtype=dtype, device=device, subfolder=subfolder + model_id, + exporter, + optimization, + dtype=dtype, + device=device, + subfolder=subfolder, + opset=opset, ) dump_folder = os.path.join(dump_folder, folder_name) if not os.path.exists(dump_folder): @@ -1509,6 +1518,8 @@ def call_torch_export_custom( "default+onnxruntime+os_ort", None, } + if optimization == "none": + optimization = "" assert ( optimization in available ), f"unexpected value for optimization={optimization}, available={available}"