【问题标题】:Use mlflow to serve a custom python model for scoring使用 mlflow 为自定义 python 模型提供评分
【发布时间】:2021-04-29 09:41:26
【问题描述】:

我正在使用从带有 mlflow 的 ml 软件生成的 Python 代码来读取数据帧、执行一些表操作并输出数据帧。我能够成功运行代码并将新数据框保存为工件。但是我无法使用 log_model 记录模型,因为它不是我们训练和拟合的 lr 或分类器模型。我想为此记录一个模型,以便可以使用新数据为其提供服务并使用休息 API 进行部署

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


with mlflow.start_run():
    def getPrediction(row):
        
        perform_some_python_operaions 

        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')
   

【问题讨论】:

    标签: python deployment mlflow mlops


    【解决方案1】:

    MLflow 支持 custom models 的 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)
    

    【讨论】:

    • 嗨@Alex。谢谢!。这真的很有帮助,因为我认为这将是正确的方法。我现在投了赞成票,我会试试这个并接受你的回答。
    • 是否有记录的端到端示例?我正在尝试将两个自定义对象保存为一个工件 - 一个自定义 sklearn 管道和一个 keras 模型。
    • 链接的文档有完整的例子。虽然可能有模型特定的东西
    猜你喜欢
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多