跟踪到数据库,工件到特定目的地

Track to database, artifacts to specific destination

我正在 运行宁 mlflow ui 和 docker 编写 PostgreSQL 数据库。

Mlflow UI 容器 运行 是这样的:mlflow ui --backend-store-uri "postgresql+psycopg2://postgres:passw0rd@database:5432/postgres" --host 0.0.0.0

然后我 运行 我的模型在本地从 jupyter,例如

remote_server_uri = "postgresql+psycopg2://postgres:passw0rd@localhost:5432/postgres"
mlflow.set_tracking_uri(remote_server_uri)
mlflow.set_experiment("exp2")

X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
y = np.array([0, 0, 1, 1, 1, 0])
lr = LogisticRegression()
lr.fit(X, y)
score = lr.score(X, y)
print("Score: %s" % score)
with mlflow.start_run():
    mlflow.log_metric("score", score)

一切正常 - 实验记录到 PostgreSQL 和 mlflow UI 可以从 PostgreSQL 读取它。

让我困扰的一件事是工件在本地存储在 ./ml运行s 文件夹中。如何更改它以将其保存在其他地方?

显然 --default-artifact-root 启动时必须使用参数 server/ui。唯一的缺点是默认工件根目录是相对于开发环境的,所以如果你是 docker 中的 运行 mlflow 服务器并指定 default-artifact-root 例如some/path 然后工件将被保存到您的 本地计算机 到该路径( 不在 docker 容器内 ) .可能最好的解决方案是使用远程存储,例如 S3/Blob.