Skip to content

Commit 546b51f

Browse files
authored
Support for Mlflow models that return dataframes (#3573)
1 parent e833451 commit 546b51f

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

servers/mlflowserver/mlflowserver/MLFlowServer.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from mlflow import pyfunc
99
from seldon_core import Storage
10-
from seldon_core.user_model import SeldonComponent
10+
from seldon_core.user_model import SeldonComponent, SeldonNotImplementedError
1111
from typing import Dict, List, Union
1212

1313
logger = logging.getLogger()
@@ -23,6 +23,7 @@ def __init__(self, model_uri: str, xtype: str = "ndarray"):
2323
self.model_uri = model_uri
2424
self.xtype = xtype
2525
self.ready = False
26+
self.column_names = None
2627

2728
def load(self):
2829
logger.info(f"Downloading model from {self.model_uri}")
@@ -47,6 +48,11 @@ def predict(
4748
df = pd.DataFrame(data=X)
4849
result = self._model.predict(df)
4950

51+
if isinstance(result, pd.DataFrame):
52+
if self.column_names is None:
53+
self.column_names = result.columns.to_list()
54+
result = result.to_numpy()
55+
5056
logger.debug(f"Prediction result: {result}")
5157
return result
5258

@@ -64,3 +70,9 @@ def init_metadata(self):
6470
f"metadata file {file_path} present but does not contain valid yaml"
6571
)
6672
return {}
73+
74+
def class_names(self):
75+
if self.column_names is not None:
76+
return self.column_names
77+
78+
raise SeldonNotImplementedError("prediction result is not a dataframe")

0 commit comments

Comments
 (0)