检测并监控跨 MLflow 追踪的问题

Important

MLflow 问题检测目前处于 测试阶段。 工作区管理员必须从预览页面启用MLflow实验问题标签页。 请参阅 Manage Azure Databricks 预览版。

MLflow问题检测使用Genie代码分析MLflow实验中的追踪数据,发现反复出现的质量和操作问题。 它检查输入、输出、跨度、工具调用、时序、错误、评估和元数据,然后将相关证据归类为你可以调查和修复的问题,例如:

  • 客户支持人员在回应退货请求时,虚构了30天退款政策。

  • 研究代理重复同一网络搜索五次,导致响应变慢,工具和代币成本增加。

  • 旅行社遗漏了所需的 departure_date 参数,导致预订工具失败。

  • 提取代理返回的是自然语言文本,而不是调用应用程序所需的 JSON 模式。

MLflow支持从发现到生产监控的持续改进周期。 你可以查看问题背后的追踪,修复和评估你的应用,然后在部署后跟踪问题发生率。

问题检测生命周期:检测重复模式,审查痕迹证据,修复和评估智能体,并在生产环境中监控问题率。

Requirements

MLflow 问题检测需要一个其实验跟踪存储在 Unity Catalog 中的实验。 请参阅 在 Unity Catalog 中存储的 OpenTelemetry 跟踪。

启动问题检测

打开一个MLflow实验,选择“问题”标签,点击“运行问题检测”。 Genie Code 开始分析实验中的跟踪信息。 分析通常需要5到30分钟,具体取决于痕迹的数量和大小。 你可以离开页面,稍后回来查看结果。

Tip

在 Genie Code 中使用 自动批准 模式以防止分析暂停进行工具审批。

问题标签页里有运行问题检测按钮。

或者,你也可以在“追踪”标签页点击“检测问题”开始同样的工作流程。

审查问题

分析结束后, 问题 标签页会列出检测到的问题,并显示支持所选问题的证据。 每条证据都链接到一个受影响的源跟踪。

“问题”标签页,显示检测到的问题、支持某一问题的支持证据,以及启用监控按钮。

如果检查结果不适用,请使用右上角下拉菜单将状态更新为 “无问题”。 MLflow会从这些反馈中学习,以避免在后续检测运行中再次出现类似问题。

修复代码代理的问题

每个问题都包含一个修复提示,包含编码代理调查问题所需的上下文和代表性跟踪信息。 将“解决此问题”部分的提示复制并将其粘贴到你应用仓库中运行的编码代理中。 代理利用问题证据检查痕迹和代码,提出针对性的变更建议,并验证修复。

在使用提示词之前:

  • 在编码代理中安装 MLflow 技能。
  • 确保编码代理能访问你的 Azure Databricks 工作区。

部署前请先审查拟议变更。 然后将评估更新后的代理与代表性案例进行比较,以确认修复并检查回归。

在生产环境中监控修复情况

开发中有效的修复在面对生产流量时仍然可能失败。 问题监控器显示部署后问题率是否下降,以及问题是否会再次出现。

选择问题,在监控部分点击启用监控。 MLflow 为该问题创建一个 评分器,并在最近的追踪记录中回填以建立基线。 MLflow随后在线运行评分器,对一部分新的追踪样本进行评估,以跟踪生产中的问题发生率。

监视器图表显示了标记和未标记的痕迹,以及过去七天的问题率。

部署修复后,使用图表比较部署前后的问题率。 当该问题不再出现在生产环境中时,标记为 已解决。

安排检测

定期安排问题检测以分析新的追踪。

点击“调度检测”“问题”标签中的,选择MLflow扫描问题的频率。 你可以通过元数据字段或标签值(如 environment = production)进行过滤,将分析限制为部分追踪。

带有节奏和跟踪筛选器设置的“排程问题”检测对话框。

自定义检测条件

点击以在齿轮图标问题页面上配置问题检测。 你可以告诉MLflow哪些发现对你的应用重要,开启或关闭内置关注区域,并为应用特定的失败添加自定义类别。 例如,你可以优先考虑用户的挫败感,忽略延迟问题。

使用 REST API 访问问题列表

使用Issues REST API将问题分诊与外部工作流程集成。 该 API 使用采用 experiments/<experiment-id>/issues/<issue-id> 形式的问题资源名称。

搜索问题

搜索支持标题文本、状态、严重性、类别、标签、排序和分页。 以下请求返回未解决的高严重性问题及其完整描述:

curl --request POST \
  "https://<workspace-host>/api/2.0/mlflow/experiments/<experiment-id>/issues:search" \
  --header "Authorization: Bearer <databricks-token>" \
  --header "Content-Type: application/json" \
  --data '{
    "parent": "experiments/<experiment-id>",
    "statuses": ["PENDING"],
    "severities": ["HIGH"],
    "sort_key": "LAST_SEEN_TIME",
    "sort_order": "DESCENDING",
    "page_size": 100,
    "view": "FULL"
  }'

更新问题

要更新问题,请包含更新掩码。 例如,以下请求标记问题已解决:

curl --request PATCH \
  "https://<workspace-host>/api/2.0/mlflow/experiments/<experiment-id>/issues/<issue-id>?update_mask=status" \
  --header "Authorization: Bearer <databricks-token>" \
  --header "Content-Type: application/json" \
  --data '{"status": "RESOLVED"}'

成本归因

手动和定时的问题检测运行使用 Genie Code。 有关定价信息,请参见 Genie定价。

其他资源