适用于 GenAI 的 MLflow 提供了一个专为开发、评估和监视生成式 AI 应用程序而设计的综合数据模型。 本页介绍核心概念及其协同工作方式。
概述
MLflow 的核心是在 试验中组织所有 GenAI 应用程序数据。 将试验视为一个项目文件夹,其中包含整个应用生命周期中的每个跟踪、评估运行、应用版本、提示和质量评估。
- 试验:单个应用程序数据的容器
注释
MLflow 仅要求使用 跟踪。 数据模型的其他所有方面都是可选的,但高度推荐!
2. MLflow 提供 SDK,用于与应用的数据交互,以评估和提高质量:
-
_
mlflow.genai.scorers._
*:用于分析跟踪质量并创建反馈评估的函数 -
mlflow.genai.evaluate()
:用于使用 评估数据集 和 评分器 评估应用的版本的 SDK,用于识别和改进质量问题 -
mlflow.genai.add_scheduled_scorer()
:用于在生产跟踪上运行 记分器 以监视质量 的 SDK
- 查看应用:用于收集域专家评估的 Web UI
- MLflow 试验 UI:用于查看和与跟踪、评估结果、标记会话、应用版本和提示进行交互的 UI。
1. 数据模型
下面提供了 MLflow 数据模型中每个实体的概述。
实验
MLflow 中的 试验 是一个命名容器,用于组织和组合与单个 GenAI 应用程序相关的所有项目。 试验类似于项目,可确保应用程序及其数据在逻辑上是分开的。
如果您熟悉经典 ML 的 MLflow,那么经典 ML 和 GenAI 之间的实验容器是相同的。
可观测性数据
跟踪
追踪记录 捕获 GenAI 应用程序的完整运行过程,包括输入、输出以及每个中间步骤(LLM 调用、检索、工具使用)。 踪迹:
追踪的用途是:
- 观察和调试应用程序行为和性能(延迟、成本等)
- 基于生产日志创建 评估数据集 ,以用于质量评估
在 跟踪数据模型参考中了解详细信息,请按照 快速入门 记录第一个跟踪,或按照 应用 指南在应用中实现跟踪。
评估
评估 是附加到 跟踪的质量测量和基准标签。 有 2 种类型的 评估:
-
反馈:对应用输出质量的判断
- 由最终用户、域专家或自动评分者添加
- 用于识别质量问题
- 示例
- 终端用户的点赞/踩评价
- LLM 评判员评估回答的正确性
-
期望:定义给定输入的正确输出的真实标签
- 由领域专家添加
- 用作评估应用是否生成正确响应的“黄金标准”
- 示例
- 对问题的预期响应
- 必须在响应中存在的必需事实
注释
使用 MLflow 测量质量不需要地面真相标签(期望)。 大多数应用程序将没有或只有一组最少的地实标签。
详细了解 日志记录评估、了解如何 收集用户反馈,或了解如何 使用记分器 创建自动 评估。
评估数据
评估数据集
评估数据集 是测试用例的特选集合,用于系统地测试应用程序。 评估数据集:
- 通常通过从生产或开发中选择具有代表性 的跟踪 来创建
- 包括输入和可选的期望(真实数据)
- 进行版本控制以跟踪测试套件随时间的演变
评估数据集 用于:
- 以迭代方式评估和提高应用的质量
- 验证更改以防止质量回归
在 评估数据集参考中了解详细信息,请按照指南 生成评估数据集,或了解如何 使用生产跟踪 来改进数据集。
评估测试
评估运行是使用一组评分器对评估数据集进行应用程序版本测试的结果。 运行评估:
评估测试 用于:
- 确定应用程序更改是否改善或降低了质量
- 将应用程序版本进行并排比较
- 跟踪一段时间内的质量评估
注释
评估运行是一种特殊的 MLflow Run 类型,可以通过mlflow.search_runs()
进行查询。
人工标记数据
标记会话
标记会话 用于组织 跟踪 以供领域专家进行人工评审。 标记会话:
标签会话 用于:
- 收集有关复杂或模糊案例的专家反馈
- 为评估数据集创建基本事实数据
注释
标签会话是一种特殊的 MLflow 运行类型,可以通过 mlflow.search_runs()
进行查询。
了解 标记会话的更多信息,按照指南 收集领域专家反馈,或了解如何 在开发过程中进行标记。
标记架构
标记架构定义在标记会话中收集的评估,确保跨域专家进行一致的标签收集。 标记架构:
- 指定询问审阅者的问题(例如“此响应准确吗?”等)
- 定义对问题的有效响应(例如点赞/点踩、1-5 等级、自由文本评论等)
在 标记架构参考 中了解详细信息,或在 “查看应用”指南中查看示例。
应用程序版本控制数据
提示语
提示 是用于 LLM 提示的版本管理模板。 提示:
- 使用类似于 Git 的版本历史进行跟踪
- 包括
{{variables}}
用于动态生成 - 链接到 评估运行,以便随着时间的推移跟踪其质量。
- 支持使用“生产”等别名来进行部署管理
已记录的模型
记录的模型 表示特定时间点的应用程序快照。 已记录模型:
记录的模型可以:
- 充当元数据中心,将概念应用程序版本链接到其特定的外部代码(例如,指向 Git 提交的指针)
- 将应用程序的代码和配置打包为完全可部署的项目
详细了解 版本跟踪、了解如何 跟踪应用程序版本,或了解如何 将跟踪链接到版本。
2. 用于评估质量的 SDK
这些是评估轨迹质量的关键过程,将评估结果附在包含该结果的轨迹上。
得分者
mlflow.genai.scorers.*
是用于评估 跟踪 质量的函数。
记分器:
- 分析要评估的相关数据字段的跟踪
- 使用该数据通过确定性代码或基于 LLM 的评估标准评估质量
- 返回具有该评估结果的 1 个或多个反馈实体
重要的是,相同的 记分器 可用于开发和生产中的评估。
注释
得分员与评委:如果你熟悉 LLM 评委,你可能会想知道他们与得分手的关系。 在 MLflow 中, 法官 是一个可调用的 SDK(例如 mlflow.genai.judge.is_correct
),它基于特定条件评估文本。 但是,法官不能直接处理痕迹——他们只理解文本输入。 这就是 记分器 发挥作用的地方:它们从跟踪中提取相关数据(例如请求、响应和检索的上下文),并将这些数据传递给法官进行评估。 可以将记分器视作一种“适配器”,用于将你的跟踪连接到评估逻辑中,无论是 LLM 判断还是自定义代码。
详细了解 评分员、探索 预定义的 LLM 评委,或了解如何 创建自定义评分器。
开发中的评估
mlflow.genai.evaluate()
是 MLflow 的 SDK,用于系统地评估应用程序的质量。 评估工具以评估数据集、一组评分器和应用程序的预测函数作为输入,并创建一个评估运行,其中包含反馈评估的跟踪,方法是:
评估工具包用于反复评估应用程序的可能的改进,帮助你:
- 验证变更是否提升了(或降低了)质量
- 确定进一步提高质量的其他改进
在生产环境中评估
databricks.agents.create_external_monitor()
允许您安排 记分器 来自动评估已部署应用程序的 跟踪。 计划安排一位评分员后,生产监控服务:
生产监视用于快速检测质量问题,并识别有问题的查询或用例,以改进开发。
详细了解 生产监视概念,请按照指南 在生产环境中运行评分器。
3. 用户界面
查看应用
评审应用 是一个网络用户界面,其中领域专家使用评估标记跟踪。 它提供标记会话中的跟踪,并根据标记架构收集评估。
了解详细信息: 查看应用指南
MLflow 实验 UI
MLflow 实验 UI 提供以下界面:
- 查看和搜索 踪迹
- 查看有关跟踪的反馈和期望
- 分析评估结果
- 管理 评估数据集
- 管理版本和 提示