搜索实验
在上一节中,我们创建了第一个 MLflow 实验,提供了自定义标签,以便我们可以找到属于更大项目的相关实验。
在这个简短的部分,我们将介绍如何使用 MLflow Client API 执行这些搜索。
在执行搜索之前,让我们在 UI 中查看我们的 Apple_Models
实验。
在 UI 中查看我们的新实验
和之前一样,我们将连接到正在运行的 MLflow Tracking 服务器来查看 MLflow UI。如果您关闭了运行它的浏览器窗口,只需在新浏览器窗口中导航到 http://127.0.0.1:8080
。
UI 中需要注意的重要组件
在我们开始向新实验添加更多令人兴奋的内容(如运行)之前,此时需要注意 UI 中的一些重要元素。请注意下面图中标注的元素。稍后了解这些数据位在那里会很有用。
基于标签搜索
现在我们已经看到了实验,并且理解了在创建实验时指定的哪些标签在 UI 中可见,哪些不可见,我们将探索定义这些标签的原因,因为我们将针对跟踪服务器应用搜索以查找其自定义标签值与我们的查询术语匹配的实验。
在实验中设置 tags
的更通用用途之一是能够基于通用标签搜索相关实验。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
。
执行搜索
在下一节中,我们将开始使用此实验将训练数据记录到与此实验关联的运行中,从而引入 MLflow API 的另一个方面(fluent API)和 MLflow UI 的另一个部分(运行信息页面)。