将Pickle文件记录为Mlflow运行的一部分

更新时间:2023-04-02 12:01:54

问题阐述

我正在运行一个MLflow实验,作为其中的一部分,我想将几个项目记录为Python Pickle。

示例:尝试不同的分类编码器,因此希望将编码器对象记录为Pickle文件。

有没有办法做到这一点?

精准答案

有两个函数:

  1. log_artifact-将本地文件或目录记录为项目
  2. log_artifacts-记录本地目录的内容

这样简单:

with mlflow.start_run():
    mlflow.log_artifact("encoder.pickle")

您将需要使用custom MLflow model来使用该已腌制的文件,如下所示:

import mlflow.pyfunc

class my_model(mlflow.pyfunc.PythonModel):
    def __init__(self, encoders):
        self.encoders = encoders

    def predict(self, context, model_input):
        _X = ...# do encoding using self.encoders.
        return str(self.ctx.predict([_X])[0])