使用本地数据库跟踪实验
在本教程中,您将学习如何使用本地数据库来跟踪与 MLflow 相关的实验元数据。
默认情况下,MLflow Tracking 将运行数据记录(即 写入)到本地文件,这可能会因为生成碎片化的小文件且缺乏简单的访问接口而令人感到困扰。此外,如果您使用 Python,可以使用运行在本地文件系统上的 SQLite(例如 mlruns.db),它带有内置客户端 sqlite3,无需安装任何额外依赖或设置数据库服务器。
第 1 步:获取 MLflow
MLflow 可在 PyPI 上获取。如果您尚未在本地计算机上安装它,可以使用以下命令进行安装:
pip install mlflow
第2步。配置 MLflow 将日志记录到 SQLite 数据库
要将 MLflow 指向您本地的 SQLite 数据库,您需要设置环境变量 MLFLOW_TRACKING_URI(例如,sqlite:///mlruns.db)。这将在当前目录创建一个 SQLite 数据库文件(mlruns.db)。如果您想将数据库文件存储在不同的位置,请指定不同的路径。
export MLFLOW_TRACKING_URI=sqlite:///mlruns.db
如果您在笔记本中,请改为运行以下单元:
%env MLFLOW_TRACKING_URI=sqlite:///mlruns.db
note
在使用 SQLite 数据库时,MLflow 会在数据库不存在时自动创建一个新数据库。如果要使用不同的数据库,则需要先创建该数据库。
第3步。开始记录
现在您已准备好开始记录您的实验运行。例如,下面的代码在糖尿病数据集上对 scikit-learn 的 RandomForest 模型进行训练:
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步。 在 Tracking UI 中查看已记录的运行
一旦你的训练作业完成,你可以运行以下命令来启动 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。阅读 Remote Experiment Tracking with MLflow Tracking Server 教程以了解更多信息。