繁体   English   中英

如何从 python 中的 mlflow 下载工件

[英]How to download artifacts from mlflow in python

我正在创建一个 mlflow 实验,它记录逻辑回归 model 以及一个度量和一个工件。

import mlflow
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_recall_fscore_support

with mlflow.start_run(run_name=run_name, experiment_id=experiment_id):

        logreg = LogisticRegression()
        logreg.fit(x_train, y_train)
        print('training over', flush=True)
        y_pred = logreg.predict(x_test)
        mlflow.sklearn.log_model(logreg, "model")
   
        mlflow.log_metric("f1", precision_recall_fscore_support(y_test, y_pred, average='weighted')[2])
        mlflow.log_artifact(x_train.to_csv('train.csv')

对于一些数据( x_train, y_train, x_test, y_test

有什么方法可以访问此 run_name 的特定 experiment_id 的工件并阅读train.csv并阅读model吗?

有一个download_artifacts function允许您访问记录的工件:

local_path = client.download_artifacts(run_id, "train.csv", local_dir)

model 工件可以使用相同的 function 下载(应该有 object 称为model/model.pkl (用于 scikit-learn,或其他),或者您可以通过运行加载 model:

loaded_model = mlflow.pyfunc.load_model(f"runs:/{run_id}/model")

我无法使用 python api 来使用 mlflow 实例,该实例使用文件系统存储工件(从另一台机器访问,在本地它应该可以正常工作)。 此外, REST api 也没有帮助,因为没有下载工件的方法。 但是我能够使用 HTML 来让它工作,这里的示例将提供的运行 ID 的工件 csv 文件加载到 pandas dataframe 中:

import pandas as pd
import urllib.request
import io

with urllib.request.urlopen('http://server:5000/get-artifact?path=dataframe.csv&run_uuid=75hf8234h9dj29jr943909') as f:
    file = pd.read_csv(io.BytesIO(f.read()))

暂无
暂无

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

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