Data Provenance
数据溯源记录数据的来源、处理人员、相关权利,以及数据在模型训练前经历的变化。介绍 PROV、用途和工具。
数据溯源是对一项数据的完整历史记录:数据来源、创建或收集者、所依据的许可或同意,以及数据到达模型前经过的每一次转换。在机器学习中,溯源涵盖原始图像或文本、应用于这些数据的数据标注、清理和数据预处理步骤、数据集划分与版本,以及使用这些数据的训练运行,因此可以追溯任何已部署模型背后的确切训练数据。数据沿袭常被用作同义词。若区分两者,数据沿袭描述数据如何在流水线和系统中流动与转换,而数据溯源还包括数据来源、所有权和使用权。
W3C PROV 模型#
W3C 于 2013 年发布了用于表示数据溯源的一系列标准 PROV。它用三种类型描述任何历史记录:实体,例如文件和数据集;活动,例如使用并生成实体的标注或训练;以及负责活动的代理,例如个人、组织或软件。应用于视觉数据集时,记录会构成如下图结构:
数据溯源为何重要#
数据溯源首先有助于调试和复现。当生产环境中准确率下降或出现数据漂移时,工程师可以查明是哪个标注批次、来源摄像头或清理步骤引入了问题,并使用完全相同的数据重新运行训练。同样的记录还能揭示数据集偏差,例如只在白天或某个国家采集的行人数据集;还能帮助处理数据投毒:如果每个样本的来源都有记录,就可以移除来自受损来源的所有样本。
第二个关注点是权利。2023 年,Data Provenance Initiative审计了 1,800 多个文本数据集,发现热门托管网站上超过 70% 的数据集未注明许可,超过 50% 的许可分类有误。在医学图像分析中,溯源记录会注明每张扫描图来自哪家医院、使用数据所依据的同意或法律依据,以及是否移除了身份标识信息;这些都是组织必须根据数据隐私法规证明的事项。随着生成图像和文本在网上传播,追踪哪些样本属于合成数据,也有助于避免模型崩溃;而 Content Credentials会将这些溯源信息直接保存在媒体文件中。
现在,法规也对数据溯源提出了要求。《欧盟人工智能法案》要求高风险系统的提供者记录数据收集流程和数据来源,并要求通用人工智能模型的提供者使用欧盟委员会于 2025 年 7 月发布的模板,公开训练内容摘要。
在实践中记录数据溯源#
数据溯源分三个层级收集。数据集文档(例如 Timnit Gebru 及其同事于 2018 年提出的 Datasheets for Datasets)会回答有关数据集动机、组成、收集流程、预处理和预期用途的问题,并与针对这些数据训练的模型的模型卡配套使用。版本管理工具会为数据集创建快照,并通过内容哈希标识文件,因此模型可以关联到不可变的数据集版本。流水线工具会在作业运行时生成数据沿袭事件,并遵循 OpenLineage等开放规范。
第三个层级是存储在制品本身中的元数据。每次 Ultralytics YOLO训练运行都会将完整的配置(包括数据集 YAML路径和数据增强设置)写入运行目录中的 args.yaml;保存的检查点也会携带相同的训练参数,以及 Ultralytics 版本和保存日期:
from ultralytics import YOLO
# 加载检查点;Ultralytics 权重文件会记录生成该文件的训练运行
model = YOLO("yolo26n.pt")
ckpt = model.ckpt
# 训练所用的数据集和设置,以及包版本和保存日期
print(ckpt["train_args"]["data"], ckpt["train_args"]["epochs"], ckpt["train_args"]["imgsz"])
print(ckpt["version"], ckpt["date"])此记录将模型权重与生成权重的数据引用和设置关联起来,为AI 透明度和AI 治理审查提供所需证据。训练结束时,Ultralytics 会从 best.pt 中移除优化器状态以缩小文件,但会保留这些字段,因此部署的文件仍携带这份记录。










