MLflow 跟踪快速入门
欢迎来到 MLflow!
本快速入门旨在提供一个快速指南,介绍 MLflow Tracking 中最核心的 API。特别是那些用于记录、注册和加载模型以进行推理的 API。
备注
对于更深入且基于教程的方法(如果这是你的风格),请参阅 MLflow 入门 教程。不过,我们建议你首先从这里开始,因为这个快速入门使用了 MLflow 跟踪中最常见和最常用的 API,并为文档中的其他教程打下了良好的基础。
你将学到什么
只需跟随这个快速入门几分钟,你将学到:
如何**记录**参数、指标和模型
MLflow fluent API 的基础
如何在记录时**注册**模型
如何在 MLflow UI 中导航到模型
如何为推理 加载 一个已记录的模型
如果你想以纯笔记本格式查看此快速入门,我们提供了一个可下载和查看的仅笔记本版本的快速入门:
步骤 1 - 获取 MLflow
MLflow 可以在 PyPI 上获取。
安装稳定版本
如果你还没有在系统上安装它,你可以通过以下方式安装:
pip install mlflow
安装候选版本(RC)
如果你渴望测试新功能并验证即将发布的 MLflow 版本是否能在你的基础设施中良好运行,安装最新的候选版本可能会引起你的兴趣。
备注
候选发布版本不推荐实际使用,它们仅用于测试验证。
要安装给定版本的 MLflow 最新发布候选版本,请参见以下使用 MLflow 2.14.0 作为示例:
# install the latest release candidate
pip install --pre mlflow
# or install a specific rc version
pip install mlflow==2.14.0rc0
步骤 2 - 启动跟踪服务器
使用托管的 MLflow 跟踪服务器
有关使用托管 MLflow 跟踪服务器的选项的详细信息,包括如何创建带有托管 MLflow 的免费 Databricks 社区版账户,请参阅 跟踪服务器选项指南。
(可选)运行本地跟踪服务器
我们将启动一个本地的 MLflow 跟踪服务器,我们将连接到该服务器以记录此快速入门的数据。从终端运行:
mlflow server --host 127.0.0.1 --port 8080
备注
你可以选择任何你喜欢的端口,前提是它尚未被使用。
设置跟踪服务器URI(如果不使用Databricks托管的MLflow跟踪服务器)
如果你使用的是非Databricks提供的托管MLflow跟踪服务器,或者你正在运行一个本地跟踪服务器,请确保使用以下方式设置跟踪服务器的uri:
import mlflow
mlflow.set_tracking_uri(uri="http://<host>:<port>")
如果在您的笔记本或运行时环境中未设置此项,运行记录将被记录到您的本地文件系统中。
步骤 3 - 训练模型并准备用于记录的元数据
在本节中,我们将使用 MLflow 记录一个模型。步骤的快速概述如下:
加载并准备鸢尾花数据集以进行建模。
训练一个逻辑回归模型并评估其性能。
准备模型超参数并计算用于记录的指标。
import mlflow
from mlflow.models import infer_signature
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# Load the Iris dataset
X, y = datasets.load_iris(return_X_y=True)
# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# Define the model hyperparameters
params = {
"solver": "lbfgs",
"max_iter": 1000,
"multi_class": "auto",
"random_state": 8888,
}
# Train the model
lr = LogisticRegression(**params)
lr.fit(X_train, y_train)
# Predict on the test set
y_pred = lr.predict(X_test)
# Calculate metrics
accuracy = accuracy_score(y_test, y_pred)
步骤 4 - 将模型及其元数据记录到 MLflow
在下一步中,我们将使用我们训练的模型、为模型拟合指定的超参数,以及通过评估模型在测试数据上的性能计算出的损失指标,记录到MLflow中。
我们将采取的步骤是:
启动一个 MLflow 运行 上下文,以开始一个新的运行,我们将在此运行中记录模型和元数据。
记录 模型 参数 和性能 指标。
标记 运行以便于轻松检索。
注册 模型到 MLflow 模型注册中心,同时 **记录**(保存)模型。
备注
虽然可以将整个代码包裹在 start_run
块中是有效的,但这**不推荐**。如果模型训练或其他与MLflow无关的操作出现问题,将会创建一个空记录或部分记录的运行,这将需要手动清理无效的运行。最好将训练执行保持在运行上下文块之外,以确保可记录内容(参数、指标、工件和模型)在记录之前完全实现。
# Set our tracking server uri for logging
mlflow.set_tracking_uri(uri="http://127.0.0.1:8080")
# Create a new MLflow Experiment
mlflow.set_experiment("MLflow Quickstart")
# Start an MLflow run
with mlflow.start_run():
# Log the hyperparameters
mlflow.log_params(params)
# Log the loss metric
mlflow.log_metric("accuracy", accuracy)
# Set a tag that we can use to remind ourselves what this run was for
mlflow.set_tag("Training Info", "Basic LR model for iris data")
# Infer the model signature
signature = infer_signature(X_train, lr.predict(X_train))
# Log the model
model_info = mlflow.sklearn.log_model(
sk_model=lr,
artifact_path="iris_model",
signature=signature,
input_example=X_train,
registered_model_name="tracking-quickstart",
)
步骤 5 - 将模型加载为 Python 函数 (pyfunc) 并使用它进行推理
在记录模型之后,我们可以通过以下方式进行推理:
加载 使用 MLflow 的 pyfunc 风格模型。
使用加载的模型在新数据上运行 预测。
备注
我们使用的鸢尾花训练数据是一个 numpy 数组结构。然而,我们也可以将 Pandas DataFrame 提交给 predict 方法,如下所示。
# Load the model back for predictions as a generic Python Function model
loaded_model = mlflow.pyfunc.load_model(model_info.model_uri)
predictions = loaded_model.predict(X_test)
iris_feature_names = datasets.load_iris().feature_names
result = pd.DataFrame(X_test, columns=iris_feature_names)
result["actual_class"] = y_test
result["predicted_class"] = predictions
result[:4]
这段代码的输出将会是这样的:
萼片长度 (厘米) |
萼片宽度 (厘米) |
花瓣长度 (厘米) |
花瓣宽度 (厘米) |
实际类 |
预测类别 |
---|---|---|---|---|---|
6.1 |
2.8 |
4.7 |
1.2 |
|
|
5.7 |
3.8 |
1.7 |
0.3 |
0 |
0 |
7.7 |
2.6 |
6.9 |
2.3 |
2 |
2 |
6.0 |
2.9 |
4.5 |
1.5 |
|
|
步骤 6 - 在 MLflow UI 中查看运行
为了查看我们运行的结果,我们可以导航到 MLflow UI。由于我们已经启动了位于 http://localhost:8080 的跟踪服务器,我们只需在浏览器中导航到该 URL。
打开网站时,您将看到一个类似于以下的屏幕:
点击我们创建的实验名称(“MLflow 快速入门”),将会显示与该实验关联的运行列表。你应该会看到一个为运行生成的随机名称,并且在右侧的 Table 列表视图中不会显示其他内容。
点击运行名称将带你到运行页面,那里会显示我们记录的详细信息。下面的元素已被突出显示,以展示这些数据在用户界面中的记录方式和位置。
结论
恭喜你完成了 MLflow Tracking 快速入门!你现在应该对如何使用 MLflow Tracking API 记录模型有了基本的了解。
如果你对更深入的教程感兴趣,请参阅 开始使用 MLflow 教程,这是增加你对 MLflow 知识的一个很好的下一步!