如何从 python 中的 mlflow 下载工件
How to download artifacts from mlflow in python
我正在创建一个 mlflow 实验,它记录逻辑回归模型以及一个指标和一个工件。
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/model.pkl
的对象(用于 scikit-learn 或其他),或者您可以通过 运行 加载模型:
loaded_model = mlflow.pyfunc.load_model(f"runs:/{run_id}/model")
我无法 python api 使用 mlflow 实例,该实例使用文件系统存储工件(从另一台机器访问,在本地它应该可以正常工作)。此外,REST api 没有任何帮助,因为没有下载工件的方法。但是我能够使用 HTML 来让它工作,这里的示例将提供的 运行 id 的工件 csv 文件加载到 pandas 数据帧中:
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()))
我正在创建一个 mlflow 实验,它记录逻辑回归模型以及一个指标和一个工件。
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/model.pkl
的对象(用于 scikit-learn 或其他),或者您可以通过 运行 加载模型:
loaded_model = mlflow.pyfunc.load_model(f"runs:/{run_id}/model")
我无法 python api 使用 mlflow 实例,该实例使用文件系统存储工件(从另一台机器访问,在本地它应该可以正常工作)。此外,REST api 没有任何帮助,因为没有下载工件的方法。但是我能够使用 HTML 来让它工作,这里的示例将提供的 运行 id 的工件 csv 文件加载到 pandas 数据帧中:
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()))