跳到主要内容

搜索实验

在上一节中,我们创建了我们的第一个 MLflow 实验,提供了自定义标签,以便我们可以找到属于更大项目的相关实验。

在本节简短的内容中,我们将了解如何使用 MLflow Client API 执行这些搜索。

在执行搜索之前,让我们在 UI 中查看我们的 Apple_Models 实验。

在 UI 中查看我们的新实验

和以前一样,我们将连接到正在运行的 MLflow Tracking 服务器以查看 MLflow UI。 如果您关闭了正在运行它的浏览器窗口,只需在新浏览器窗口中导航到 http://127.0.0.1:8080

View our new experiment in the UI

MLflow UI 中的 “Apple_Models” 实验

UI 中需要注意的重要组件

在 UI 中,有一些重要的元素需要注意,在我们开始向新实验添加更多令人兴奋的内容(如运行)之前。 请注意下图中的注释元素。 知道这些数据位稍后会很有用。

Important Data on the Experiment View Page

实验视图页面的关键元素

基于标签搜索

现在我们已经看到了实验,并且了解了我们在创建实验期间指定的哪些标签在 UI 中可见,哪些不可见,我们将探索定义这些标签的原因,因为我们对跟踪服务器应用搜索,以查找其自定义标签值与我们的查询条件匹配的实验。

在 Experiments 中设置 tags 的一个更通用的用途是,基于公共标签启用对相关 Experiments 的搜索。 可以在下面看到 search_experiments API 中的筛选功能,我们在其中搜索自定义 project_name 标签完全匹配 grocery-forecasting 的实验。

请注意,用于搜索筛选的格式有一些细微之处。 对于命名实体(例如,此处的筛选字符串开头的 tags 术语),可以直接使用键。 但是,要引用自定义标签,请注意使用的特定语法。 自定义标签名称用反引号 (`) 包裹,并且我们的匹配搜索

# Use search_experiments() to search on the project_name tag key

apples_experiment = client.search_experiments(
filter_string="tags.`project_name` = 'grocery-forecasting'"
)

print(vars(apples_experiment[0]))
与创建的实验关联的元数据
<Experiment: artifact_location='mlflow-artifacts:/926031323154788454',
creation_time=1694018173427,
experiment_id='926031323154788454',
last_update_time=1694018173427,
lifecycle_stage='active',
name='Apple_Models',
tags={
'mlflow.note.content': 'This is the grocery forecasting project. This '
'experiment contains the produce models for apples.',
'project_name': 'grocery-forecasting',
'project_quarter': 'Q3-2023',
'team': 'stores-ml'}
>
注意

上面的返回结果已格式化以便于阅读。此返回类型是一个 Experiment 对象,而不是 dict

Creating a new Experiment

创建一个新实验并基于实验标签进行搜索

在下一节中,我们将开始使用此实验将训练数据记录到与此实验关联的运行中,从而引入 MLflow API(fluent API)的另一个方面以及 MLflow UI(运行信息页面)的另一部分。

您现在可以继续到本教程的下一节,或者返回到教程列表