创建实验
在上一个部分,我们熟悉了 MLflow Client 及其 search_experiments API。在深入创建实验和为它们添加元数据标签之前,让我们简要了解一下 MLflow UI。
在本教程的第一个部分,我们从命令提示符启动了 MLflow Tracking Server,指定主机为 127.0.0.1,端口为 8080。让我们转到 UI,看看 Default Experiment 的样子。
查看 MLflow UI
要查看 MLflow UI,我们只需使用网络浏览器连接到 MLflow Tracking Server 并导航到 http://127.0.0.1:8080。导航到 MLflow UI 的 URL 后,您将看到默认实验,其中没有运行数据。
如您所见,没有记录运行,并且只有 Default Experiment(ID 为 0)存在。这种情况不会持续太久,因为我们将要添加一个新实验。
关于标签与实验的说明
虽然 MLflow 确实提供了一个默认实验,但它主要用作没有指定活动实验的运行的“兜底”安全网。然而,不建议常规使用。相反,为特定运行集合创建唯一的实验提供了许多优势,如下文所述。
定义唯一实验的好处
-
增强的组织性:实验允许您对相关运行进行分组,从而更容易跟踪和比较它们。这在管理大量运行(例如大型项目)时尤其有用。
-
元数据注解:实验可以携带元数据,有助于组织和将运行与更大的项目关联起来。
考虑以下场景:我们正在模拟参与一个大型需求预测项目。该项目涉及为连锁杂货店的各个部门构建预测模型,每个部门都有大量产品。我们的重点是“农产品”部门,该部门有几个不同的商品,每个商品都需要自己的预测模型。组织这些模型至关重要,以确保易于导航和比较。
何时应定义实验?
创建实验的指导原则是输入数据的一致性。如果多个运行使用相同的数据集(即使它们使用了其中的不同部分),它们就属于同一个实验。对于其他分层分类,建议使用标签。
示例:
考虑以下模型结构,映射到业务产品层级
- 需求预测项目
- 乳制品
- 奶酪
- 帕玛森
- 切达
- 牛奶
- 全脂
- 2%
- 农产品
- 水果
- 苹果
- 樱桃
- 蔬菜
- 胡萝卜
在这里,produce 和 dairy 部门属于同一个总体项目,但它们依赖于不同的数据集,并且可能会产生不同的模型指标。将部门分组在一起肯定没有意义。
然而,可能会出现将所有农产品产品组合在一起的诱惑。将苹果、樱桃和胡萝卜等各种商品组合在一个实验下,可能会稀释该实验内运行比较的有效性。因此,划定实验的清晰界限对于确保有意义的见解至关重要。
虽然本例中的业务产品层级不一定需要包含在标签中,但没有任何东西可以阻止您这样做。您可以应用的标签数量没有限制。前提是使用的键在实验和运行中保持一致,以使搜索能够正常运行,可以应用任意数量的跟踪模型与您的特定业务规则之间的映射。
为了有效地应用这些边界,如下面的图所示,应使用标签。
创建带有有意义标签的 Apples 实验
# Provide an Experiment description that will appear in the UI
experiment_description = (
"This is the grocery forecasting project. "
"This experiment contains the produce models for apples."
)
# Provide searchable tags that define characteristics of the Runs that
# will be in this Experiment
experiment_tags = {
"project_name": "grocery-forecasting",
"store_dept": "produce",
"team": "stores-ml",
"project_quarter": "Q3-2023",
"mlflow.note.content": experiment_description,
}
# Create the Experiment, providing a unique name
produce_apples_experiment = client.create_experiment(
name="Apple_Models", tags=experiment_tags
)
在下一部分,我们将看看这些标签可以在 UI 中看到什么,以及我们如何利用 tags 的强大功能来简化对属于更大项目的实验的访问。
您现在可以 继续本教程的下一部分,或 返回教程列表。