搜索实验

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

在这一简短部分中,我们将了解如何使用 MLflow 客户端 API 执行这些搜索。

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

在UI中看到我们的新实验

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

在用户界面中查看我们的新实验

MLflow UI 中的“Apple_Models”实验

需要注意的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