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