使用mlflow为评分提供自定义python模型



我使用从ML软件与mlflow生成的Python代码来读取数据帧,执行一些表操作并输出数据帧。我能够成功地运行代码并将新数据帧保存为工件。然而,我无法使用log_model记录模型,因为它不是我们训练和拟合的LR或分类器模型。我想为此记录一个模型,以便它可以与新数据一起服务,并使用rest API进行部署

df = pd.read_csv(r"/home/xxxx.csv")

with mlflow.start_run():
def getPrediction(row):
perform_some_python_operations 
return [Status_prediction, Status_0_probability, Status_1_probability]
columnValues = []
for column in columns:
columnValues.append([])
for index, row in df.iterrows():
results = getPrediction(row)
for n in range(len(results)):
columnValues[n].append(results[n])
for n in range(len(columns)):
df[columns[n]] = columnValues[n]
df.to_csv('dataset_statistics.csv')
mlflow.log_artifact('dataset_statistics.csv')

MLflow支持MLflow的自定义模型。pyfunc味道。您可以创建从mlflow.pyfunc.PythonModel继承的自定义类,它需要提供用于执行预测的功能predict,以及可选的load_context来加载必要的工件,如下所示(从文档中采用):

class MyModel(mlflow.pyfunc.PythonModel):
def load_context(self, context):
# load your artifacts
def predict(self, context, model_input):
return my_predict(model_input.values)

你可以登录到MLflow的任何工件,你需要你的模型,定义Conda环境,如有必要等。
然后你可以使用save_model与你的类来保存你的实现,可以加载load_model和做predict使用你的模型:

mlflow.pyfunc.save_model(
path=mlflow_pyfunc_model_path, 
python_model=MyModel(), 
artifacts=artifacts)
# Load the model in `python_function` format
loaded_model = mlflow.pyfunc.load_model(mlflow_pyfunc_model_path)

最新更新