@@ -122,7 +122,7 @@ def get_origin_ml_task(self):
122122 if fmi is not None :
123123 return DSSMLTask .from_full_model_id (self .client , fmi , project_key = self .project_key )
124124
125- def import_mlflow_version_from_path (self , version_id , path , code_env_name = "INHERIT" ):
125+ def import_mlflow_version_from_path (self , version_id , path , code_env_name = "INHERIT" , container_exec_config_name = "INHERIT" ):
126126 """
127127 Create a new version for this saved model from a path containing a MLFlow model.
128128
@@ -133,6 +133,10 @@ def import_mlflow_version_from_path(self, version_id, path, code_env_name="INHER
133133 :param str code_env_name: Name of the code env to use for this model version. The code env must contain at least
134134 mlflow and the package(s) corresponding to the used MLFlow-compatible frameworks.
135135 If value is "INHERIT", the default active code env of the project will be used
136+ :param str container_exec_config_name: Name of the containerized execution configuration to use while creating
137+ this model version.
138+ If value is "INHERIT", the container execution configuration of the project will be used.
139+ If value is "NONE", local execution will be used (no container)
136140 :return a :class:MLFlowVersionHandler in order to interact with the new MLFlow model version
137141 """
138142 # TODO: Add a check that it's indeed a MLFlow model folder
@@ -144,13 +148,13 @@ def import_mlflow_version_from_path(self, version_id, path, code_env_name="INHER
144148 archive_filename = _make_zipfile (os .path .join (archive_temp_dir , "tmpmodel.zip" ), path )
145149
146150 with open (archive_filename , "rb" ) as fp :
147- self .client ._perform_empty ("POST" , "/projects/%s/savedmodels/%s/versions/%s?codeEnvName=%s" % (self .project_key , self .sm_id , version_id , code_env_name ),
151+ self .client ._perform_empty ("POST" , "/projects/%s/savedmodels/%s/versions/%s?codeEnvName=%s&containerExecConfigName=%s " % (self .project_key , self .sm_id , version_id , code_env_name , container_exec_config_name ),
148152 files = {"file" : (archive_filename , fp )})
149153 return self .get_mlflow_version_handler (version_id )
150154 finally :
151155 shutil .rmtree (archive_temp_dir )
152156
153- def import_mlflow_version_from_managed_folder (self , version_id , managed_folder , path , code_env_name = "INHERIT" ):
157+ def import_mlflow_version_from_managed_folder (self , version_id , managed_folder , path , code_env_name = "INHERIT" , container_exec_config_name = "INHERIT" ):
154158 """
155159 Create a new version for this saved model from a path containing a MLFlow model in a managed folder.
156160
@@ -162,6 +166,10 @@ def import_mlflow_version_from_managed_folder(self, version_id, managed_folder,
162166 :param str code_env_name: Name of the code env to use for this model version. The code env must contain at least
163167 mlflow and the package(s) corresponding to the used MLFlow-compatible frameworks.
164168 If value is "INHERIT", the default active code env of the project will be used
169+ :param str container_exec_config_name: Name of the containerized execution configuration to use for evaluating
170+ this model version.
171+ If value is "INHERIT", the container execution configuration of the project will be used.
172+ If value is "NONE", local execution will be used (no container)
165173 :return a :class:MLFlowVersionHandler in order to interact with the new MLFlow model version
166174 """
167175 # TODO: Add a check that it's indeed a MLFlow model folder
@@ -172,8 +180,8 @@ def import_mlflow_version_from_managed_folder(self, version_id, managed_folder,
172180 folder_ref = managed_folder
173181
174182 self .client ._perform_empty (
175- "POST" , "/projects/{project_id}/savedmodels/{saved_model_id}/versions/{version_id}?codeEnvName={codeEnvName}" .format (
176- project_id = self .project_key , saved_model_id = self .sm_id , version_id = version_id , codeEnvName = code_env_name
183+ "POST" , "/projects/{project_id}/savedmodels/{saved_model_id}/versions/{version_id}?codeEnvName={codeEnvName}&containerExecConfigName={containerExecConfigName} " .format (
184+ project_id = self .project_key , saved_model_id = self .sm_id , version_id = version_id , codeEnvName = code_env_name , containerExecConfigName = container_exec_config_name
177185 ),
178186 params = {"folderRef" : folder_ref , "path" : path },
179187 files = {"file" : (None , None )} # required for backend-mandated multipart request
@@ -343,7 +351,7 @@ def set_core_metadata(self,
343351 "/projects/%s/savedmodels/%s/versions/%s/external-ml/metadata" % (self .saved_model .project_key , self .saved_model .sm_id , self .version_id ),
344352 body = metadata )
345353
346- def evaluate (self , dataset_ref ):
354+ def evaluate (self , dataset_ref , container_exec_config_name = "INHERIT" ):
347355 """
348356 Evaluates the performance of this model version on a particular dataset.
349357 After calling this, the "result screens" of the MLFlow model version will be available
@@ -352,11 +360,15 @@ def evaluate(self, dataset_ref):
352360
353361 :meth:`set_core_metadata` must be called before you can evaluate a dataset
354362 :param str dataset_ref: Evaluation dataset to use (either a dataset name, "PROJECT.datasetName", :class:`DSSDataset` instance or :class:`dataiku.Dataset` instance)
363+ :param str container_exec_config_name: Name of the containerized execution configuration to use for running the evaluation process.
364+ If value is "INHERIT", the container execution configuration of the project will be used.
365+ If value is "NONE", local execution will be used (no container)
355366 """
356367 if hasattr (dataset_ref , 'name' ):
357368 dataset_ref = dataset_ref .name
358369 req = {
359- "datasetRef" : dataset_ref
370+ "datasetRef" : dataset_ref ,
371+ "containerExecConfigName" : container_exec_config_name
360372 }
361373 self .saved_model .client ._perform_empty ("POST" ,
362374 "/projects/%s/savedmodels/%s/versions/%s/external-ml/actions/evaluate" % (self .saved_model .project_key , self .saved_model .sm_id , self .version_id ),
0 commit comments