在 Databricks MLflow UI 中查看记录

所有捕获的跟踪都记录到 MLflow 实验。 当 MLFLOW_TRACKING_URI 设置为 databricks 时,托管的 MLflow Tracking 服务会在你的工作区中存储并提供这些内容,无需额外托管。 通过你Databricks工作区中的MLflow界面访问它们。

  1. 导航到实验:转到记录日志追踪的实验。 例如,实验设置 mlflow.set_experiment("/Shared/my-genai-app-traces")。

  2. 打开“跟踪”选项卡:在试验视图中,单击“ 跟踪 ”选项卡以查看记录到该试验的所有跟踪的列表。

    跟踪列表视图

了解跟踪清单

追踪列表提供了你追踪的高级概览,并配有可排序的列:

  • 跟踪 ID:每个跟踪的唯一标识符。

  • 请求:触发追踪的输入预览。

  • 回复:追踪最终输出预览。

  • 会话:用于分组相关跟踪的会话标识符,例如对话中的回合。 提供时显示。

  • 用户:用户标识符。 提供时显示。

  • 执行时间:跟踪完成所需的总时间。

  • 请求时间:追踪开始的时间戳。

  • 运行名称:当跟踪属于某个运行时,关联的MLflow运行名称。

  • 来源:跟踪的来源,例如被监测的库或组件(openai、langchain 或自定义跟踪名称)。

  • 状态:跟踪状态(OK, ERROR, IN_PROGRESS)。

  • 跟踪名称:分配给跟踪的名称,通常是根跨度的名称。

  • 评估:每个评估类型一列(例如, my_scorer, professional)。 列表上方的汇总部分展示了可见追踪记录中的综合评估指标,如平均值或通过/不通过率。

  • 标签:以列形式显示的标签(例如, persona, style)。

搜索和筛选日志

界面提供了多种查找相关追踪的方法:

  • 搜索栏:默认情况下,可按关键词在追踪的 ID、输入和输出中搜索。

  • 筛选器下拉列表:基于以下内容生成结构化查询:

    • 属性:Request内容、Session time、Execution time或Request time。

    • 评估:按评估的存在或值进行筛选,如my_scorer或professional。

    • 其他字段如 User、Tags、tags.persona = 'expert'、Session 和 Trace name(例如,State)。

  • 排序下拉选单:按列对跟踪进行排序,如 Request time 或 Execution time。

  • 列下拉菜单:选择可见的列,包括特定标签或评估指标。

跟踪列表筛选器

元数据筛选器

在 MLflow UI (跟踪选项卡)中,可以查看附加的元数据:

跟踪元数据

在 MLflow UI 中,使用以下搜索查询筛选跟踪:

# Find all traces for a specific user
metadata.`mlflow.trace.user` = 'user-123'

# Find all traces in a session
metadata.`mlflow.trace.session` = 'session-abc-456'

# Find traces for a user within a specific session
metadata.`mlflow.trace.user` = 'user-123' AND metadata.`mlflow.trace.session` = 'session-abc-456'

# Find traces from production environment
metadata.`mlflow.source.type` = 'production'

# Find traces from a specific app version
metadata.app_version = '1.0.0'

浏览单个踪迹

要检查特定追踪,请点击列表中的 请求 或 追踪名称 。 详细的跟踪视图有两个标签页:

  • 摘要:对跟踪记录的高级别概览。 它显示根跨度的输入和输出、关键中间跨度以及在追踪过程中引发的任何异常。 使用 默认、 JSON和 表格 开关来更改输入和输出的渲染方式。

  • 详情与时间线:完整 span 细分及每个 span 的详情,详见下节。

跟踪详细信息概述

详情与时间线标签有三个面板:

  1. 跟踪分解(左侧面板):

    • 以树状图或瀑布图的形式显示 Span 层级。 它显示了追踪中的所有 span、它们的父子关系,以及执行顺序和持续时间。

    • 选择一个 span 来检查其详细信息。

  2. 跨度细节(中央面板):

    • 选择跨度时,此面板会显示其详细信息,并按选项卡组织:

      • 聊天:针对基于聊天的大型语言模型交互,提供对话流程(用户、助手和工具消息)的渲染视图。

        范围详细信息聊天选项卡

      • 输入/输出:传递给操作的原始输入及其返回的原始输出。 对于大型内容,使用“查看更多”/“收起”切换来展开或折叠视图。

        跨度详细信息 IO 选项卡

      • 属性:特定于该 span 的键值元数据(例如,LLM 调用的 model 和 temperature,或检索器 span 的 doc_uri)。

        “跨度详细信息属性”选项卡

      • 事件:对于引发错误的 span,异常详细信息和堆栈跟踪。 对于流式跨度,会按其产生顺序显示各个数据块。

      • 有些输出字段有 Markdown 切换功能,可以在内容为 Markdown 时切换原始视图和渲染视图。

  3. 评估(右侧面板):

    • 显示整个 跟踪 或 选定段内记录的评估(用户反馈或评估)。

    • 使用 +添加新评估 按钮,直接从界面记录反馈或评分,支持手动审核和标记工作流程。

    跟踪详细信息添加评估

追踪级信息:视图还会显示追踪级标签以及为整个追踪记录的所有评估;当选择根跨度或未选择任何跨度时,这些内容会显示在“Assessments”面板中。 这些内容可能来自直接用户反馈或 系统评估。

常见调试方案

使用 MLflow 跟踪界面来解决常见的调试和可观测性需求:

  1. 确定慢速跟踪(延迟瓶颈):

    • 跟踪列表:按“执行时间”按降序排序,将最慢的跟踪排到顶部。

    • 详细视图:打开慢速跟踪并检查“跟踪细分”面板。 瀑布式显示突出运行时间最长的操作,精准指出应用流程中的瓶颈。

    识别慢速跟踪记录用户界面

  2. 查找来自特定用户的追踪:

    • 筛选器:如果跟踪了用户信息,并且它可用作筛选器(在“属性”或“用户”筛选器下),请选择或输入用户 ID。

    • 搜索和标签:如果用户ID被存储为标签,如mlflow.trace.user,则使用tags.mlflow.trace.user = 'user_example_123'进行搜索。

    查找用户痕迹界面

  3. 查找有故障(错误)的跟踪:

    • 筛选:选择 State 属性并选择 ERROR,只查看失败的跟踪。

    • 详细视图:在“跟踪明细”中选择出错的 span,然后打开其“事件”标签以查看异常消息和栈跟踪。

    查找错误跟踪 UI

  4. 识别有负面反馈或问题的踪迹:

    • 评估筛选器:如果你收集用户反馈或运行生成评估的评估(例如布尔值 is_correct 或数字 relevance_score),则按评估名称和值(例如, is_correct = false 或 relevance_score < 0.5)进行筛选。

    • 查看评估:打开一次追踪,查看“评估”面板或单个 span 评估,查看已记录的反馈、评分和理由。

    识别负面反馈 UI

Databricks 笔记本中的追踪

MLflow 追踪可直接在 Databricks 笔记本中查看追踪记录,作为开发和实验工作流程的一部分。

注释

MLflow Tracing 功能在 MLflow 2.20 及更高版本中,支持与 Databricks Notebook 的集成。

Databricks Notebook 调试界面

当你在 Databricks 笔记本中工作,且 MLflow 跟踪 URI 设置为 "databricks"(通常为默认值,或使用 mlflow.set_tracking_uri("databricks") 设置)时,跟踪界面可以自动显示在单元格的输出中。

在以下情况下会发生这种情况:

  1. 单元格的代码生成跟踪(例如,通过调用使用 @mlflow.trace 装饰的函数或自动插桩的库调用)。

  2. 你调用 mlflow.search_traces() 并展示结果。

  3. 一个 mlflow.entities.Trace 对象(例如,来自 mlflow.get_trace())是单元格中的最后一个表达式,或者被传递给 display()。

笔记本内视图提供了与主MLflow实验界面相同的跟踪探索功能,因此你可以在不切换上下文的情况下迭代。

控制笔记本显示

若要启用或禁用笔记本单元输出中跟踪的自动显示,请运行: mlflow.tracing.disable_notebook_display()mlflow.tracing.enable_notebook_display()

局限性

  • 追踪列表最多返回 1,000 条追踪。 筛选器和跟踪 ID 搜索仅适用于此集,而不适用于完整试验,因此大型试验中的较旧跟踪可能不会显示。 若要查找较旧的跟踪记录,请将时间范围缩小到包含该记录的时间段。

  • 不在 Unity Catalog 中的实验最多只能包含 100,000 个跟踪。 对于没有跟踪限制的可缩放、受治理的存储,Databricks 建议在 Unity Catalog 中存储跟踪。 若要移动现有试验跟踪,请迁移到 Unity Catalog 中的跟踪。

其他资源

下一步:检测并监控跨 MLflow 跟踪的问题