评估数据集概念
评估数据集需要一个具有SQL 后端(PostgreSQL、MySQL、SQLite 或 MSSQL)的 MLflow 跟踪服务器。由于管理数据集记录、关联和模式演进需要关系型数据,因此此功能在 FileStore(本地模式)中不可用。
什么是评估数据集?
MLflow 中的评估数据集提供了一种结构化的方式来组织和管理 GenAI 应用程序的测试数据。它们作为测试输入、可选测试输出、预期输出(期望)和评估结果的集中式存储库,从而能够系统地评估 AI 开发生命周期中的质量。
与静态测试文件不同,评估数据集是动态验证集合,旨在随着您的应用程序的增长和演进。记录可以持续地从生产跟踪、手动策划或程序化生成中添加。
它们可以直接在 MLflow UI 中查看。
核心组件
评估数据集由几个关键元素组成,它们协同工作以提供全面的测试管理
数据集记录
包含输入(输入到模型的)、期望(应输出的)、可选输出(应用程序返回的)以及关于来源和标签的元数据以进行组织的单个测试用例。
模式与配置文件
自动计算的数据集的结构和统计信息。模式跨记录跟踪字段名和类型,而配置文件提供统计摘要。
预期
地面真实值和质量标准,用于定义正确行为。这些是评估模型输出的标准集。
实验关联
到 MLflow 实验的链接使得跟踪使用了哪些数据集进行哪些模型评估成为可能,从而提供完整的谱系和组织控制。
数据集对象模式
mlflow.entities.EvaluationDataset() 对象包含以下字段:mlflow.entities.EvaluationDataset()
| 字段 | 类型 | 描述 |
|---|---|---|
dataset_id | str | 数据集的唯一标识符(格式:d-{32 个十六进制字符}) |
name | str | 数据集的可读名称 |
digest | str | 用于数据完整性验证的内容哈希 |
records | list[DatasetRecord] | 包含输入和期望的实际测试数据记录 |
schema | Optional[str] | 描述记录结构的 JSON 字符串(自动计算) |
profile | Optional[str] | 包含数据集统计信息的 JSON 字符串 |
tags | dict[str, str] | 用于组织和分类数据集的键值对 |
experiment_ids | list[str] | 此数据集关联的 MLflow 实验 ID 列表 |
created_time | int | 创建数据集的时间戳(毫秒) |
last_update_time | int | 最后修改时间戳(毫秒) |
created_by | Optional[str] | 创建数据集的用户(从标签自动检测) |
last_updated_by | Optional[str] | 最后修改数据集的用户 |
记录结构
评估数据集中的每条记录代表一个单独的测试用例,结构如下:
{
"inputs": {
"question": "What is the capital of France?",
"context": "France is a country in Western Europe",
"temperature": 0.7
},
"outputs": {
"answer": "The capital of France is Paris."
},
"expectations": {
"name": "expected_answer",
"value": "Paris",
},
"source": {
"source_type": "HUMAN",
"source_data": {
"annotator": "geography_expert@company.com",
"annotation_date": "2024-08-07"
}
},
"tags": {
"category": "geography",
"difficulty": "easy",
"validated": "true"
}
}
记录字段
- inputs(必需):将传递给模型或应用程序的测试输入数据
- outputs(可选):模型生成的实际输出(通常用于事后评估)
- expectations(可选):定义正确行为的预期输出或质量标准
- source(可选):关于如何创建此记录的出处信息(如果未提供,则自动推断)
- tags(可选):此单个记录的特定元数据,用于组织和筛选
记录标识和去重
记录通过其输入哈希进行唯一标识。在使用 mlflow.entities.EvaluationDataset.merge_records() 合并记录时,如果存在具有相同输入的记录,则会合并其期望和标签,而不是创建重复项。这使得无需数据重复即可迭代优化测试用例。
模式演进
随着您添加带有新字段的记录,数据集模式会自动演进。schema 属性会跟踪跨记录遇到的所有字段名和类型,而 profile 则维护统计摘要。这种自动适应意味着您可以从简单的测试用例开始,并逐步添加复杂性,而无需手动迁移模式。
当后续记录中引入新字段时,它们会自动包含在模式中。在评估和分析过程中,没有这些字段的现有记录会被优雅地处理。