跳到主要内容

评估数据集概念

需要 SQL 后端

评估数据集需要一个具有SQL 后端(PostgreSQL、MySQL、SQLite 或 MSSQL)的 MLflow 跟踪服务器。由于管理数据集记录、关联和模式演进需要关系型数据,因此此功能在 FileStore(本地模式)中不可用

什么是评估数据集?

MLflow 中的评估数据集提供了一种结构化的方式来组织和管理 GenAI 应用程序的测试数据。它们作为测试输入、可选测试输出、预期输出(期望)和评估结果的集中式存储库,从而能够系统地评估 AI 开发生命周期中的质量。

与静态测试文件不同,评估数据集是动态验证集合,旨在随着您的应用程序的增长和演进。记录可以持续地从生产跟踪、手动策划或程序化生成中添加。

它们可以直接在 MLflow UI 中查看。

核心组件

评估数据集由几个关键元素组成,它们协同工作以提供全面的测试管理

数据集记录

包含输入(输入到模型的)、期望(应输出的)、可选输出(应用程序返回的)以及关于来源和标签的元数据以进行组织的单个测试用例。

模式与配置文件

自动计算的数据集的结构和统计信息。模式跨记录跟踪字段名和类型,而配置文件提供统计摘要。

预期

地面真实值和质量标准,用于定义正确行为。这些是评估模型输出的标准集。

实验关联

到 MLflow 实验的链接使得跟踪使用了哪些数据集进行哪些模型评估成为可能,从而提供完整的谱系和组织控制。

数据集对象模式

mlflow.entities.EvaluationDataset() 对象包含以下字段:mlflow.entities.EvaluationDataset()

字段类型描述
dataset_idstr数据集的唯一标识符(格式:d-{32 个十六进制字符}
namestr数据集的可读名称
digeststr用于数据完整性验证的内容哈希
recordslist[DatasetRecord]包含输入和期望的实际测试数据记录
schemaOptional[str]描述记录结构的 JSON 字符串(自动计算)
profileOptional[str]包含数据集统计信息的 JSON 字符串
tagsdict[str, str]用于组织和分类数据集的键值对
experiment_idslist[str]此数据集关联的 MLflow 实验 ID 列表
created_timeint创建数据集的时间戳(毫秒)
last_update_timeint最后修改时间戳(毫秒)
created_byOptional[str]创建数据集的用户(从标签自动检测)
last_updated_byOptional[str]最后修改数据集的用户

记录结构

评估数据集中的每条记录代表一个单独的测试用例,结构如下:

json
{
"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 则维护统计摘要。这种自动适应意味着您可以从简单的测试用例开始,并逐步添加复杂性,而无需手动迁移模式。

当后续记录中引入新字段时,它们会自动包含在模式中。在评估和分析过程中,没有这些字段的现有记录会被优雅地处理。

后续步骤