diff --git a/clearml_serving/preprocess/preprocess_template.py b/clearml_serving/preprocess/preprocess_template.py index 274a8c3..7fda339 100644 --- a/clearml_serving/preprocess/preprocess_template.py +++ b/clearml_serving/preprocess/preprocess_template.py @@ -12,7 +12,8 @@ class Preprocess(object): def __init__(self): # set internal state, this will be called only once. (i.e. not per request) - pass + # it will also set the internal model_endpoint to reference the specific model endpoint object being served + self.model_endpoint = None # type: clearml_serving.serving.endpoints.ModelEndpoint def load(self, local_file_name: str) -> Optional[Any]: # noqa """ diff --git a/clearml_serving/serving/model_request_processor.py b/clearml_serving/serving/model_request_processor.py index 5d7d271..8380cdc 100644 --- a/clearml_serving/serving/model_request_processor.py +++ b/clearml_serving/serving/model_request_processor.py @@ -228,7 +228,8 @@ class ModelRequestProcessor(object): if len(models) > 1: print("Warning: Found multiple Models for \'{}\', selecting id={}".format(model_query, models[0].id)) endpoint.model_id = models[0].id - elif not endpoint.model_id: + elif not endpoint.model_id and endpoint.engine_type != "custom": + # if the "engine_type" is "custom" it might be there is no model_id attached print("Warning: No Model provided for \'{}\'".format(url)) # upload as new artifact diff --git a/clearml_serving/serving/preprocess_service.py b/clearml_serving/serving/preprocess_service.py index 0f1195c..5c08054 100644 --- a/clearml_serving/serving/preprocess_service.py +++ b/clearml_serving/serving/preprocess_service.py @@ -71,6 +71,8 @@ class BasePreprocessRequest(object): Preprocess.send_request = BasePreprocessRequest._preprocess_send_request # create preprocess class self._preprocess = Preprocess() + # update the model endpoint on the instance we created + self._preprocess.model_endpoint = self.model_endpoint # custom model load callback function if callable(getattr(self._preprocess, 'load', None)): self._model = self._preprocess.load(self._get_local_model_file()) @@ -129,6 +131,8 @@ class BasePreprocessRequest(object): pass def _get_local_model_file(self): + if not self.model_endpoint.model_id: + return None model_repo_object = Model(model_id=self.model_endpoint.model_id) return model_repo_object.get_local_copy()