使用 MLflow 跟踪检测 GenAI 应用程序后,可以获得强大的工具来调试其行为、了解其性能并观察其输入和输出。 本指南重点介绍如何在 Databricks 中有效地使用 MLflow UI,并利用其笔记本集成实现这些目的。
在 Databricks MLflow UI 中查看记录
所有捕获的跟踪都记录到 MLflow 实验。 可以通过 Databricks 工作区中的 MLflow UI 访问它们。
-
导航到您的实验:前往记录您的跟踪信息的实验(例如,由
mlflow.set_experiment("/Shared/my-genai-app-traces")
设置的实验)。 - 打开“跟踪”选项卡:在试验视图中,单击“跟踪”选项卡。这将显示记录到该试验的所有跟踪的列表。
了解跟踪列表视图
跟踪列表提供您的跟踪的高级概览,通常会包括可排序的列:
- 跟踪 ID:每个跟踪的唯一标识符。
- 请求:预览触发跟踪的初始输入。
- 响应:追踪的最终输出预览。
- 会话:会话标识符(如果提供)对相关跟踪进行分组(例如,在会话中)。
- 用户:用户标识符(如果提供)。
- 执行时间:跟踪完成所花费的总时间。
- 请求时间:启动跟踪时的时间戳。
- 运行名称:如果跟踪与 MLflow Run 相关联,则会在此处显示其名称,并链接它们。
-
源:跟踪的来源,通常指示已检测的库或组件(例如
openai
,langchain
或自定义跟踪名称)。 -
状态:跟踪的当前状态(例如,
OK
、ERROR
、IN_PROGRESS
)。 - 跟踪名称:分配给此跟踪的特定名称,通常是根范围的名称。
-
评估:每个评估类型的单个列(例如,
my_scorer
,professional
)。 UI 还经常显示列表上方的摘要部分,其中显示当前可见跟踪的聚合评估指标(如平均值或通过/失败率)。 -
标记:单个标记可以显示为列(例如,
persona
,style
)。 可能还存在标记的汇总计数。
搜索和筛选踪迹
用户界面提供了多种查找和聚焦相关跟踪的方法:
-
搜索栏(通常标记为“按请求搜索评估”或类似):这样,您可以通过搜索其
Request
(输入)字段的内容快速找到痕迹。 -
筛选器下拉列表:有关更结构化的筛选,请使用“筛选器”下拉列表。 这通常允许基于以下项生成查询:
-
属性:例如
Request
内容、Session time
或Execution time
Request time
。 -
评估:按评估的状态或特定值进行筛选,例如
my_scorer
或professional
。 - 其他字段,如
State
,,Trace name
Session
,User
和Tags
(例如,tags.persona = 'expert'
)。
-
属性:例如
-
排序下拉列表:使用“排序”下拉列表按各种列(例如
Request time
,Execution time
等)对跟踪进行排序。 - 列下拉列表:自定义跟踪列表中可见的列,包括特定的标记或评估指标。
有关高级编程查询和了解 UI 可能使用的筛选器语法,请参阅 通过 SDK 指南的查询跟踪 。
探索单个痕迹
若要深入了解特定跟踪,请单击列表中的 “请求 ”或 “跟踪名称 ”。 这会打开详细的跟踪视图,该视图通常有几个主面板:
跟踪细分(左面板):
- 此面板(通常标题为“跟踪细分”)将 跨度层次结构 显示为树形图或瀑布图。 它显示跟踪中的所有操作(跨度)、它们的父子关系以及它们的执行顺序和持续时间。
- 可以从此细分中选择单个片段来检查其特定详细信息。
跨度详细信息(中心面板):
从“跟踪细分”中选择范围时,此面板会显示其详细信息,通常按以下选项卡进行组织:
聊天:对于基于聊天的 LLM 交互,此选项卡通常提供聊天流(用户、助理、工具消息)的呈现视图。
输入/输出:显示传递给作的原始输入数据和返回的原始输出数据。 对于大型内容,“查看更多”/“查看更少”切换可用于展开或折叠视图。
属性:显示特定于范围(例如
model
LLM 调用的名称temperature
)的键值元数据;doc_uri
对于检索器范围。事件:对于遇到错误的跨度,此选项卡通常显示异常详细信息和堆栈跟踪。 对于流式数据范围,它可能会在产出单个数据区块时显示它们。
如果内容采用 Markdown 格式,某些输出字段可能还有 一个 Markdown 切换, 可在原始视图和呈现视图之间切换。
评估(右侧面板):
- 此面板显示已针对 整个跟踪 或 当前所选范围记录的任何评估(用户反馈或评估)。
- 关键是,此面板通常包括 “+ 添加新评估” 按钮,允许你在查看跟踪时直接从 UI 记录新的反馈或评估分数。 这对于手动评审和标记工作流非常有用。
Trace-Level 信息:除了单个范围详细信息之外,视图还提供对整体跟踪信息的访问。 这包括整个跟踪的跟踪级别标记和任何评估(通常在未选择特定跨度或根跨度时显示在评估窗格中),这些可能源自直接用户反馈或系统评估。
常见调试和观察方案
下面介绍如何使用 MLflow 跟踪 UI 解决常见的调试和可观测性需求:
识别慢跟踪(延迟瓶颈):
- 在跟踪列表视图中:使用“排序”下拉列表按降序按“执行时间”对跟踪进行排序。 这会将最慢的记录带到顶部。
- 在详细跟踪视图中:打开慢速跟踪后,请检查“跟踪细分”面板。 跨度的瀑布图将直观地突出显示花费时间最长的操作,帮助你查明你的应用程序流中的延迟瓶颈。
查找特定用户的痕迹
- 使用筛选器:如果 跟踪了用户信息 ,并且它可用作筛选器选项(例如,在“筛选器”下拉列表中的“属性”或专用的“用户”筛选器下),则可以选择或输入特定的用户 ID。
-
使用搜索/标记:或者,如果用户 ID 存储为标记(例如,
mlflow.trace.user
),请使用搜索栏和查询,例如tags.mlflow.trace.user = 'user_example_123'
。
查找包含失败的跟踪(错误):
-
使用筛选器:在“筛选器”下拉列表中,选择该
State
属性并选择ERROR
仅查看失败的跟踪。 - 在详细跟踪视图中:对于错误跟踪,请选择“跟踪明细”中标记有错误的跨度。 导航到“范围详细信息”面板中的“事件”选项卡以查看异常消息和堆栈跟踪,这对于诊断故障的根本原因至关重要。
-
使用筛选器:在“筛选器”下拉列表中,选择该
识别存在负面反馈或问题的痕迹(例如,不正确的响应):
-
使用评估筛选器:如果要收集导致评估的用户反馈或运行评估(例如布尔值
is_correct
或数字relevance_score
),“筛选器”下拉列表可能会允许你按这些评估名称及其值进行筛选(例如,筛选或is_correct = false
relevance_score < 0.5
筛选)。 - 查看评估:打开追踪记录并检查“评估”面板(详细视图右侧)以及单个跨度评估。 这将显示任何记录的反馈、分数和理由,帮助你了解为什么响应被标记为质量差。
-
使用评估筛选器:如果要收集导致评估的用户反馈或运行评估(例如布尔值
这些示例演示了 MLflow 跟踪捕获的详细信息(与 UI 的查看和筛选功能相结合)如何有效地调试问题并观察应用程序的行为。
用于跟踪的 Databricks Notebook 集成
MLflow 跟踪在 Databricks 笔记本中提供无缝体验,使你可以直接将跟踪作为开发和试验工作流的一部分进行查看。
注释
MLflow Tracing 功能在 MLflow 2.20 及更高版本中,支持与 Databricks Notebook 的集成。
工作原理
在 Databricks 笔记本中工作时,如果将 MLflow 跟踪 URI 设置为 "databricks"
(这通常是默认设置,或者可以通过 mlflow.set_tracking_uri("databricks")
进行设置),跟踪用户界面可以自动显示在 cell 的输出中。
这通常在以下情况下发生:
- 单元格的代码执行生成跟踪(例如,通过调用修饰的
@mlflow.trace
函数或 自动检测的库调用)。 - 显式调用
mlflow.search_traces()
并显示结果。 -
mlflow.entities.Trace
对象(例如,frommlflow.get_trace()
)是单元格中的最后一个表达式或传递给display()
。
此笔记本内视图提供了在主 MLflow 试验 UI 中找到的相同丰富交互式跟踪浏览功能,帮助你在不切换上下文的情况下更快地循环访问。
控制笔记本显示
- 若要禁用笔记本单元输出中跟踪的自动显示,请运行以下命令:
mlflow.tracing.disable_notebook_display()
- 若要 重新启用 它,请运行:
mlflow.tracing.enable_notebook_display()
编程访问和管理
除了 UI,MLflow 还提供用于以编程方式与跟踪交互的 API:
- 通过 SDK 查询跟踪:了解如何使用 Python 搜索、筛选和检索跟踪数据,以便进行自定义分析、生成评估数据集或与其他系统集成。
- 删除跟踪:了解如何根据数据生命周期管理的特定条件删除跟踪。
通过将基于 UI 的探索与编程访问相结合,你可以获得一个全面的工具包来调试 GenAI 应用程序、了解其行为,并不断提高其性能和质量。
后续步骤
继续您的旅程,并参考这些推荐的行动和教程。
- 通过 SDK 查询跟踪 - 以编程方式搜索和分析自定义工作流的跟踪
- 使用跟踪提高质量 - 利用跟踪见解进行应用程序改进
- 生成评估数据集 - 将 跟踪转换为测试数据进行系统评估
参考指南
浏览本指南中提到的概念和功能的详细文档。