99import tempfile
1010
1111import cloudpickle
12+ import fsspec
13+ import tempfile
1214import oci
1315import pandas as pd
1416from oci .data_science import DataScienceClient , DataScienceClientCompositeOperations
3840
3941class ModelDeploymentManager :
4042 def __init__ (
41- self ,
42- spec : ForecastOperatorSpec ,
43- additional_data : AdditionalData ,
44- previous_model_version = None ,
43+ self ,
44+ spec : ForecastOperatorSpec ,
45+ additional_data : AdditionalData ,
46+ previous_model_version = None ,
4547 ):
4648 self .spec = spec
4749 self .model_name = spec .model
@@ -61,7 +63,9 @@ def __init__(
6163 )
6264 if self .project_id is None or self .compartment_id is None :
6365 raise ValueError ("Either project_id or compartment_id cannot be None." )
64- self .path_to_artifact = f"{ self .spec .output_directory .url } /artifacts/"
66+
67+ tmp_dir_obj = tempfile .TemporaryDirectory ()
68+ self .path_to_artifact = tmp_dir_obj .name
6569 self .pickle_file_path = f"{ self .spec .output_directory .url } /model.pkl"
6670 self .model_version = previous_model_version + 1 if previous_model_version else 1
6771 self .catalog_id = None
@@ -121,8 +125,14 @@ def _copy_score_file(self):
121125
122126 def save_to_catalog (self ):
123127 """Save the model to a model catalog"""
124- with open (self .pickle_file_path , "rb" ) as file :
125- self .model_obj = pickle .load (file )
128+ with fsspec .open (
129+ self .pickle_file_path ,
130+ "rb" ,
131+ ** (
132+ default_signer () if ObjectStorageDetails .is_oci_path (self .pickle_file_path ) else {}
133+ ),
134+ ) as f :
135+ self .model_obj = pickle .load (f )
126136
127137 if not os .path .exists (self .path_to_artifact ):
128138 os .mkdir (self .path_to_artifact )
0 commit comments