5 分钟追踪服务器概览

在本指南中,我们将引导您如何通过不同类型的跟踪服务器配置查看您的 MLflow 实验结果。从高层次来看,有三种方式查看您的 MLflow 实验:

  • [方法1] 启动你自己的 MLflow 服务器。

  • [方法2] 使用一个免费的托管跟踪服务器 - Databricks社区版。

  • [方法3] 使用生产环境中的 Databricks/AzureML。

在这三种方法中选择,我们的建议是:

  • 如果你有隐私顾虑(数据/模型/技术栈),使用 方法1 - 启动你自己的服务器

  • 如果你是学生、个人研究者,或者你在基于云的笔记本(例如,Google Colab)中开发,请使用 方法2 - 免费托管的跟踪服务器

  • 企业用户,或者如果您想为生产用例提供或部署您的模型,请使用 方法3 - 生产 Databricks/AzureML

总的来说,方法2 - 免费托管的跟踪服务器 是开始使用MLflow的最简单方式,但请选择最适合您需求的方法。

方法1:启动你自己的 MLflow 服务器

免责声明: 本指南的这一部分不适合在云提供的 IPython 环境中运行(例如,Collab, Databricks)。请在您的本地机器(笔记本电脑/台式机)上按照以下指南操作。

托管的跟踪服务器是存储和查看 MLflow 实验的最简单方式,但并不适合所有用户。例如,您可能不希望在云服务提供商账户中向他人公开您的数据和模型。在这种情况下,您可以使用本地托管的 MLflow 服务器来存储和查看您的实验。为此,有两个步骤:

启动本地 MLflow 服务器

如果你还没有安装 MLflow,请运行以下命令来安装它:

$ pip install mlflow

MLflow 的安装包括 MLflow CLI 工具,因此您可以通过在终端中运行以下命令来启动带有 UI 的本地 MLflow 服务器:

$ mlflow ui

它将生成包含IP地址的日志,例如:

(mlflow) [master][~/Documents/mlflow_team/mlflow]$ mlflow ui
[2023-10-25 19:39:12 -0700] [50239] [INFO] Starting gunicorn 20.1.0
[2023-10-25 19:39:12 -0700] [50239] [INFO] Listening at: http://127.0.0.1:5000 (50239)

在浏览器中打开MLflow跟踪服务器的URL,将进入MLflow UI。下图来自开源版本的MLflow UI,与Databricks CE上的MLflow UI略有不同。以下是登录页面的截图:

OSS MLflow 服务器的登录页面

备注

也可以在云平台上部署您自己的 MLflow 服务器,但这超出了本指南的范围。

连接 MLflow 会话到您的服务器

现在服务器已经启动,让我们将 MLflow 会话连接到本地服务器。这与我们连接到远程托管的跟踪提供商(如 Databricks 平台)非常相似。

mlflow.set_tracking_uri("http://localhost:5000")

接下来,让我们尝试记录一些虚拟指标。我们可以在本地托管的UI上查看这些测试指标:

mlflow.set_experiment("check-localhost-connection")

with mlflow.start_run():
    mlflow.log_metric("foo", 1)
    mlflow.log_metric("bar", 2)

将以下代码复制到您的编辑器中,并将其保存为 log_mlflow_with_localhost.py

import mlflow

mlflow.set_tracking_uri("http://localhost:5000")
mlflow.set_experiment("check-localhost-connection")

with mlflow.start_run():
    mlflow.log_metric("foo", 1)
    mlflow.log_metric("bar", 2)

然后通过以下方式执行它:

$ python log_mlflow_with_localhost.py

在您的 MLflow 服务器上查看实验

现在让我们在本地服务器上查看您的实验。在浏览器中打开URL,在本例中是 http://localhost:5000。在UI中,左侧边栏内您应该会看到名为 “check-localhost-connection” 的实验。点击这个实验名称应该会带您进入实验视图,类似于下面所示。

OSS MLflow 服务器的实验视图

点击运行(在本例中为 “clumsy-steed-426”,您的将有所不同)将带您进入运行视图,如下所示。

OSS MLflow 服务器的运行视图

结论

这就是如何启动你自己的 MLflow 服务器并查看你的实验的全部内容。请参阅以下这种方法的优缺点:

  • 优点

    • 您完全控制您的数据和模型,这对隐私问题非常有利。

    • 无需订阅。

    • 实验/运行的无限配额。

    • 你甚至可以通过fork MLflow仓库并修改UI代码来自定义你的UI。

  • 缺点

    • 需要手动设置和维护。

    • 团队协作比使用托管的跟踪服务器更困难。

    • 不适合基于云的笔记本,例如 Google Colab。

    • 如果在云虚拟机上部署服务器,则需要额外的端口转发。

    • 不支持服务。

方法2:使用免费托管的跟踪服务器(Databricks社区版)

注意: 本指南的这一部分可以直接在基于云的笔记本中执行,例如 Google Colab 或 Databricks Notebook。

Databricks 社区版 (CE) 是基于云的大数据平台 Databricks 的免费、有限使用版本。Databricks CE 用户可以访问微型集群以及集群管理器和笔记本环境。所有用户都可以免费共享他们的笔记本并托管它们。您可以使用 Databricks CE 存储和查看您的 MLflow 实验而无需付费。

要使用 Databricks CE 来存储和查看我们的 MLflow 实验,基本上我们需要:

  • 创建一个免费的 Databricks CE 账户。

  • 在我们的开发环境中设置 Databricks CE 认证。

  • 在我们的 MLflow 实验会话中连接到 Databricks CE。

然后实验结果将自动发送到 Databricks CE,您可以在 MLflow 实验 UI 中查看它。现在让我们看一下代码。

创建一个 Databricks CE 账户

如果你还没有Databricks CE的账户,你可以在 这里 创建一个。整个过程应该不会超过3分钟。

安装依赖项

%pip install -q mlflow databricks-sdk

设置 Databricks CE 的身份验证

要设置 Databricks CE 认证,我们可以使用 API mlflow.login(),它将提示您输入所需信息:

如果认证成功,您应该会看到一条消息“成功登录 Databricks!”。

import mlflow

mlflow.login()
2023/10/25 22:59:27 ERROR mlflow.utils.credentials: Failed to sign in Databricks: default auth: cannot configure default credentials
Databricks Host (should begin with https://): https://community.cloud.databricks.com/
Username: weirdmouse@gmail.com
Password: ··········
2023/10/25 22:59:38 INFO mlflow.utils.credentials: Succesfully signed in Databricks!

将 MLflow 会话连接到 Databricks CE

我们已经设置了凭证,现在需要告诉 MLflow 将数据发送到 Databricks CE。为此,我们将使用 mlflow.set_tracking_uri("databricks") 将 MLflow 端口到 Databricks CE。基本上是下面的命令。请注意,您需要始终使用 “databricks” 作为关键字。

mlflow.set_tracking_uri("databricks")

现在你已经准备好了!让我们尝试启动一个 MLflow 实验并记录一些虚拟指标,然后在我们的 UI 中查看它。

mlflow.set_experiment("/check-databricks-connection")

with mlflow.start_run():
    mlflow.log_metric("foo", 1)
    mlflow.log_metric("bar", 2)
2023/10/25 23:15:42 INFO mlflow.tracking.fluent: Experiment with name '/check-databricks-ce-connection' does not exist. Creating a new experiment.

在 Databricks CE 上查看您的实验

现在让我们导航到 Databricks CE 以查看实验结果。登录到您的 Databricks CE 账户,然后点击左上角以在下拉列表中选择机器学习。接着点击实验图标。请参见下面的截图:

Databricks MLflow 服务器的登录页面

在“实验”视图中,你应该能够找到实验“/check-databricks-ce-connection”,类似于

Databricks MLflow 服务器的实验视图

点击运行名称,在我们的例子中是“youthful-lamb-287”(这是一个随机生成的名称,您将在CE控制台中看到不同的名称),将带您进入运行视图,类似于

Databricks MLflow 服务器的实验视图

在运行视图中,您将看到我们的虚拟指标 “foo”“bar” 已成功记录。

结论

这就是如何使用 Databricks CE 作为跟踪服务器的全部内容。请参见以下这种方法的优缺点:

  • 优点

    • 轻松设置。

    • 免费。

    • 适合协作,例如,你可以轻松地与你的队友分享你的 MLflow 实验。

    • 兼容基于云的笔记本开发环境,例如 Google Colab。

    • 兼容在云虚拟机上开发。

  • 缺点

    • 实验/运行的配额限制。

    • 不支持模型注册/服务。

方法3:使用生产托管跟踪服务器

如果您是企业用户并希望将您的模型投入生产,您可以使用 Databricks 或 Microsoft AzureML 等生产平台。如果您使用 Databricks,MLflow 实验会将您的模型记录到 Databricks MLflow 服务器中,然后您可以通过几次点击来注册并服务您的模型。服务功能仅在生产 Databricks 工作区中可用,而在 Databricks CE 中不可用。

使用生产 Databricks 的方法与使用 Databricks CE 相同,您只需将主机更改为生产工作区。例如,https://dbc-1234567-123.cloud.databricks.com。有关 Databricks 如何支持您的机器学习工作流程的更多信息,请参阅 此处文档

要使用 AzureML 作为跟踪服务器,请阅读 这里的文档

结论

这就是如何将生产平台用作跟踪服务器的内容。请参阅以下这种方法的优缺点:

  • 优点

    • 轻松设置。

    • 适合协作,例如,你可以轻松地与你的队友分享你的 MLflow 实验。

    • 兼容基于云的笔记本开发环境,例如 Google Colab。

    • 兼容在云虚拟机上开发。

    • 无缝模型注册/服务支持。

    • 高于 Databricks CE 的配额(按使用付费)。

  • 缺点

    • 不免费。

    • 需要管理一个账单账户。