使用本地数据库跟踪实验

在本教程中,您将学习如何使用本地数据库通过 MLflow 跟踪您的实验元数据。默认情况下,MLflow 跟踪会将运行数据记录到本地文件中,这可能会由于文件碎片化和小文件而引起一些困扰,并且缺乏简单的访问接口。此外,如果您使用 Python,您可以使用 SQLite,它运行在您的本地文件系统上(例如 mlruns.db),并且内置了客户端 sqlite3,从而无需安装任何额外的依赖项和设置数据库服务器。

开始

步骤 1 - 获取 MLflow

MLflow 可以在 PyPI 上获取。如果你还没有在本地机器上安装它,你可以通过以下命令安装:

pip install mlflow

步骤 2 - 配置 MLflow 环境变量

将跟踪URI设置为本地SQLite数据库

要将 MLflow 指向您的本地 SQLite 数据库,您需要将环境变量 MLFLOW_TRACKING_URI 设置为 sqlite:///mlruns.db。(这将在当前目录中创建一个名为 mlruns.db 的 SQLite 数据库文件。如果您想将数据库文件存储在不同位置,请指定不同的路径。)

export MLFLOW_TRACKING_URI=sqlite:///mlruns.db

如果你在使用笔记本,你可以运行以下单元格来代替:

%env MLFLOW_TRACKING_URI=sqlite:///mlruns.db

备注

在使用 SQLite 数据库时,MLflow 会自动创建一个新数据库(如果它不存在)。如果你想使用不同的数据库,你需要先创建该数据库。

步骤 3:开始记录

现在你可以开始记录你的实验运行了。例如,以下代码在糖尿病数据集上运行 scikit-learn 随机森林模型的训练:

import mlflow

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes
from sklearn.ensemble import RandomForestRegressor

mlflow.sklearn.autolog()

db = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(db.data, db.target)

# Create and train models.
rf = RandomForestRegressor(n_estimators=100, max_depth=6, max_features=3)
rf.fit(X_train, y_train)

# Use the model to make predictions on the test dataset.
predictions = rf.predict(X_test)

步骤 4:在跟踪界面中查看您记录的运行

一旦你的训练任务完成,你可以运行以下命令来启动 MLflow UI(你需要使用 --backend-store-uri 选项指定 SQLite 数据库文件的路径):

mlflow ui --port 8080 --backend-store-uri sqlite:///mlruns.db

然后,在浏览器中导航到 http://localhost:8080 以查看结果。

下一步是什么?

您现在已经学会了如何将 MLflow Tracking 与远程存储和数据库连接。

还有一些更高级的主题可以探索:

  • 团队开发的远程环境设置:虽然在本地机器上存储运行和实验数据对于单人开发来说是完全可行的,但在使用 MLflow Tracking 设置团队协作环境时,您应该考虑使用 MLflow Tracking Server。阅读 使用 MLflow Tracking Server 进行远程实验跟踪 教程以了解更多信息。

  • 新功能: MLflow 团队不断开发新功能以支持更广泛的使用场景。查看 新功能 以了解最新功能。