繁体   English   中英

如何在运行的工件内记录 mlflow 中的自定义模型?

[英]How to log custom models in mlflow inside artifacts of a run?

我已经使用 MLProject 将我的模型存储在 Github 中,以便其他人可以以各种变体运行它。 现在我想将运行创建的模型记录为工件,以便用户可以使用 MLModel 加载它们。 由于我的模型是定制的,这并不像 spark 这样的口味那么简单。 我首先在本地保存并加载模型,以确保我的环境、模型和工件代码有效。 现在我想将模型的登录作为从 GitHub 运行的 MLProject 的一部分。 由于我所知道的文档中没有示例,我想寻求帮助并建议这可能是对文档或示例的一个很好的补充。

在代码方面,我最后在 mlrun 中写了以下内容:

模型取决于项目运行中指定的参数

 ETS_Exogen = ETS_Exogen(params=res.x, before=before,after=after)

使用先前定义的模型、环境和工件记录模型

mlflow.pyfunc.log_model(python_model=ETS_Exogen, conda_env=conda_env,artifacts=artifacts)

mlflow.pyfunc.log_model 是否自动将模型记录到运行的工件中,还是我需要定义 artifact_path? 我应该使用 mlflow.pyfunc.save_model 吗? 我定义了工件路径,以便从 GitHub 存储库中收集它们,如下所示:

artifacts = { "exogen_variables":os.path.join(os.path.dirname(os.path.abspath(file)),"exogen_variables.csv") }

这样对吗? 自定义模型文档链接: https : //mlflow.org/docs/latest/python_api/mlflow.pyfunc.html#pyfunc-create-custom-workflows

记录模型需要一个路径,标准是将它存储在文件夹模型下的工件中。 命令如下:

mlflow.pyfunc.log_model(artifact_path="model",python_model=ETS_Exogen, conda_env=conda_env)

以下是如何从 http 服务器在模型中添加数据。 不要使用 artifact,而是直接在上下文中使用 Pandas 加载它。

def load_context(self, context):
    import numpy as np
    import pandas as pd #data wrangeling
    url_to_exogen_raw = 'https://raw.githubusercontent.com/MatthiasHerp/ETS_Ex_BA_MLFlow/master/exogen_variables.csv'
    self.exogen = pd.read_csv(url_to_exogen_raw, index_col='date')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM