所有捕获的跟踪都记录到 MLflow 实验。 当 MLFLOW_TRACKING_URI 设置为 databricks 时,托管的 MLflow Tracking 服务会在你的工作区中存储并提供这些内容,无需额外托管。 通过你Databricks工作区中的MLflow界面访问它们。
导航到实验:转到记录日志追踪的实验。 例如,实验设置
mlflow.set_experiment("/Shared/my-genai-app-traces")。打开“跟踪”选项卡:在试验视图中,单击“ 跟踪 ”选项卡以查看记录到该试验的所有跟踪的列表。
了解跟踪清单
追踪列表提供了你追踪的高级概览,并配有可排序的列:
跟踪 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 的详情,详见下节。
详情与时间线标签有三个面板:
跟踪分解(左侧面板):
以树状图或瀑布图的形式显示 Span 层级。 它显示了追踪中的所有 span、它们的父子关系,以及执行顺序和持续时间。
选择一个 span 来检查其详细信息。
跨度细节(中央面板):
选择跨度时,此面板会显示其详细信息,并按选项卡组织:
聊天:针对基于聊天的大型语言模型交互,提供对话流程(用户、助手和工具消息)的渲染视图。
输入/输出:传递给操作的原始输入及其返回的原始输出。 对于大型内容,使用“查看更多”/“收起”切换来展开或折叠视图。
属性:特定于该 span 的键值元数据(例如,LLM 调用的
model和temperature,或检索器 span 的doc_uri)。
事件:对于引发错误的 span,异常详细信息和堆栈跟踪。 对于流式跨度,会按其产生顺序显示各个数据块。
有些输出字段有 Markdown 切换功能,可以在内容为 Markdown 时切换原始视图和渲染视图。
评估(右侧面板):
显示整个 跟踪 或 选定段内记录的评估(用户反馈或评估)。
使用 +添加新评估 按钮,直接从界面记录反馈或评分,支持手动审核和标记工作流程。
追踪级信息:视图还会显示追踪级标签以及为整个追踪记录的所有评估;当选择根跨度或未选择任何跨度时,这些内容会显示在“Assessments”面板中。 这些内容可能来自直接用户反馈或 系统评估。
常见调试方案
使用 MLflow 跟踪界面来解决常见的调试和可观测性需求:
确定慢速跟踪(延迟瓶颈):
跟踪列表:按“执行时间”按降序排序,将最慢的跟踪排到顶部。
详细视图:打开慢速跟踪并检查“跟踪细分”面板。 瀑布式显示突出运行时间最长的操作,精准指出应用流程中的瓶颈。
查找来自特定用户的追踪:
筛选器:如果跟踪了用户信息,并且它可用作筛选器(在“属性”或“用户”筛选器下),请选择或输入用户 ID。
搜索和标签:如果用户ID被存储为标签,如
mlflow.trace.user,则使用tags.mlflow.trace.user = 'user_example_123'进行搜索。
查找有故障(错误)的跟踪:
筛选:选择
State属性并选择ERROR,只查看失败的跟踪。详细视图:在“跟踪明细”中选择出错的 span,然后打开其“事件”标签以查看异常消息和栈跟踪。
识别有负面反馈或问题的踪迹:
评估筛选器:如果你收集用户反馈或运行生成评估的评估(例如布尔值
is_correct或数字relevance_score),则按评估名称和值(例如,is_correct = false或relevance_score < 0.5)进行筛选。查看评估:打开一次追踪,查看“评估”面板或单个 span 评估,查看已记录的反馈、评分和理由。
Databricks 笔记本中的追踪
MLflow 追踪可直接在 Databricks 笔记本中查看追踪记录,作为开发和实验工作流程的一部分。
注释
MLflow Tracing 功能在 MLflow 2.20 及更高版本中,支持与 Databricks Notebook 的集成。
当你在 Databricks 笔记本中工作,且 MLflow 跟踪 URI 设置为 "databricks"(通常为默认值,或使用 mlflow.set_tracking_uri("databricks") 设置)时,跟踪界面可以自动显示在单元格的输出中。
在以下情况下会发生这种情况:
单元格的代码生成跟踪(例如,通过调用使用
@mlflow.trace装饰的函数或自动插桩的库调用)。你调用
mlflow.search_traces()并展示结果。一个
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 中的跟踪。