[英]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.