From 08fee6b91a3380b0ce088150994d96d4a35cb06c Mon Sep 17 00:00:00 2001 From: Ella Charlaix Date: Fri, 1 Mar 2024 18:22:00 +0100 Subject: [PATCH] Add reference to the temporary directory for windows fix --- optimum/intel/openvino/modeling_diffusion.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/optimum/intel/openvino/modeling_diffusion.py b/optimum/intel/openvino/modeling_diffusion.py index 1570a22457..5e8a0cdc59 100644 --- a/optimum/intel/openvino/modeling_diffusion.py +++ b/optimum/intel/openvino/modeling_diffusion.py @@ -94,9 +94,18 @@ def __init__( self._device = device.upper() self.is_dynamic = dynamic_shapes self.ov_config = ov_config if ov_config is not None else {} - self._model_save_dir = ( - Path(model_save_dir.name) if isinstance(model_save_dir, TemporaryDirectory) else model_save_dir - ) + + # This attribute is needed to keep one reference on the temporary directory, since garbage collecting + # would end-up removing the directory containing the underlying OpenVINO model + self._model_save_dir_tempdirectory_instance = None + if isinstance(model_save_dir, TemporaryDirectory): + self._model_save_dir_tempdirectory_instance = model_save_dir + self._model_save_dir = Path(model_save_dir.name) + elif isinstance(model_save_dir, str): + self._model_save_dir = Path(model_save_dir) + else: + self._model_save_dir = model_save_dir + self.vae_decoder = OVModelVaeDecoder(vae_decoder, self) self.unet = OVModelUnet(unet, self) self.text_encoder = OVModelTextEncoder(text_encoder, self) if text_encoder is not None else None