如何在 python 中从 mlflow 下载工件

qua*_*ant 6 python python-3.x mlflow mlops

我正在创建一个 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')
Run Code Online (Sandbox Code Playgroud)

对于某些数据 ( x_train, y_train, x_test, y_test)

有没有办法访问此 run_name 的特定实验 ID 的工件并读取train.csvmodel

Ale*_*Ott 6

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

local_path = client.download_artifacts(run_id, "train.csv", local_dir)
Run Code Online (Sandbox Code Playgroud)

模型工件可以使用相同的函数下载(应该有一个被调用的对象model/model.pkl(用于 scikit-learn 或其他东西),或者您可以通过运行加载模型:

loaded_model = mlflow.pyfunc.load_model(f"runs:/{run_id}/model")
Run Code Online (Sandbox Code Playgroud)