Data-Provenance-Collection

Data-Provenance-Collection

跨学科倡议推动AI训练数据集透明度和责任使用

Data-Provenance-Collection项目致力于提高AI训练数据集的透明度和负责任使用。该项目审计了44个数据集合,涵盖1800多个文本微调数据集,记录了其来源、许可和创建者等元数据。开发者可通过项目脚本筛选符合许可和特征要求的数据集,促进AI训练数据的规范使用。

Data Provenance InitiativeAI数据集透明度文档化负责任使用Github开源项目

数据溯源倡议

论文 | 数据溯源浏览器

设置 | 运行 | 收集的信息 | 生成Bibtex | 添加集合 | 数据格式 | 法律声明与限制 | 联系方式

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/70b743de-df92-474a-8c6b-2d2ed1bf13ce.png" width="40%" height="40%" alt="数据溯源倡议"> </p>

数据溯源倡议是一项跨学科的志愿者努力,旨在提高人工智能训练数据集的透明度、文档记录和负责任使用。通过对44个数据集合进行大规模审计,涵盖1800多个用于微调的文本到文本数据集(称为数据溯源集合),该倡议的首次发布详细记录了这些数据集的网络和机器来源、许可证、创建者和其他元数据。

本仓库中的脚本允许开发人员根据自己的需求筛选最适合的微调数据集,从自报的许可限制到其他数据特征。查看数据溯源浏览器以查看数据组成,以及您可以在此仓库中应用的不同筛选器的影响。从此仓库生成数据子集将创建一个"数据溯源卡"——所有组成数据集的象征性归属,可用作结构化文档。完整详情将在我们即将发布的论文中提供。

本仓库不构成法律建议。 请参阅法律声明和限制

这是该倡议的第一步,我们计划扩展资源和工具,以及学术分析。如果您想贡献,请通过data.provenance.init@gmail.com与我们联系。

设置

pip install -r requirements.txt

运行

此脚本允许您下载所有数据集,并根据收集的信息中的任何标准进行筛选。您可以通过argparse传入参数,或使用类似于src/configs/default.yaml的自定义yaml配置。所有数据集都将被标准化为相同的格式。默认情况下,我们使用这种格式,因为它可以推广到多轮对话和响应排序,但您也可以将数据集标准化用于监督微调。

某些数据集需要受限访问,因此您需要在仓库中创建一个类似于.env.template.env文件,并添加您的HuggingFace令牌,并在HuggingFace页面上接受数据集的条款和条件。

python src/download_and_filter.py -c src/configs/default.yaml

收集的信息

标识信息

  • 唯一数据集标识符 --- 数据集的唯一标识符,格式为<collection>-<dataset>
  • 数据集名称 --- 数据集的常用名称。
  • 论文标题 --- 相关论文的标题(如果有)。
  • 数据集URL --- 数据集原始GitHub仓库、网站或最佳可用资源的URL。
  • GitHub URL --- 数据集原始GitHub仓库的URL(如果有)。
  • Hugging Face URL --- 数据集的Hugging Face页面URL。
  • Papers with Code URL --- 数据集的'Papers with Code'页面URL。
  • ArXiv URL --- 如果数据集附有论文,则为ArXiv摘要页面的URL。
  • Semantic Scholar语料ID --- 与数据集论文在Semantic Scholar上关联的语料ID。
  • 集合 --- 此版本数据集所属的集合。
  • 集合URL --- 集合的GitHub仓库或网站URL。

数据集特征

  • 语言 --- 文本中表示的自然或编码语言列表。
  • 任务类别 --- 数据集中表示的任务列表。
  • 文本来源 --- 文本派生的网络/离线来源列表。
  • 文本主题 --- 文本中讨论的主题列表。
  • 文本指标 --- 每个示例输入和输出的最小、平均和最大字符数统计,以及对话轮数(如适用)。
  • 格式 --- 选项包括"零样本提示"、"少样本提示"、"思维链提示"、"多轮对话"、"响应排序"或其他组合(如适用)。
  • 收集时间 --- Hugging Face、Semantic Scholar和GitHub的初始上传时间,表示数据集创建时间。
  • 引用计数 --- 如果在Semantic Scholar上,截至2023年9月的记录引用计数。
  • 下载计数 --- 如果在Hugging Face上,2023年9月的记录下载计数。
  • 数据集筛选ID -- 与Hugging Face数据集关联的数据集筛选ID列表,适用于同一集合有多个来源/语言/任务且可以分开的情况。

数据集溯源

  • 模型生成 -- 用于生成此数据集的模型(如适用)。
  • 文本来源 --- 文本抓取或派生的网络/离线来源列表。
  • 文本领域 --- 从文本来源可以使用constants/domain_groups.json推断出"文本领域"(如生物医学、法律、百科全书、书籍等)。
  • 派生自数据集 --- 此数据集派生自的其他机器学习数据集列表。
  • 人工标注 --- 在从文本来源获取数据后,数据集策划过程中是否包含额外的人工标注。
  • 创建者 --- 编制(或创建)此数据集的大学、公司和其他组织列表。
  • 许可证 --- 与此数据集相关的许可证列表,由NLP数据集的创建者/编译者提供,包括其URL。
  • 许可条件 --- 使用上述信息和constants/license_classes.json,我们对每个许可证的使用限制、归属和共享要求进行分类。
  • 许可说明 --- 人工标注者对其检索的许可信息的任何说明。

生成Bibtex

我们收集了数据溯源集合中每个有相关论文的数据集的bibtex条目。这些可以在data_summaries/中找到,您还可以通过运行数据准备脚本自动生成任何数据子集的完整bibtex文件

要在不下载数据的情况下生成bibtex,只需运行数据下载和筛选脚本,但在此代码行之后停止:https://github.com/Data-Provenance-Initiative/Data-Provenance-Collection/blob/main/src/download_and_filter.py#L419。

添加集合

说明:

  1. 对于新集合,在data_summaries/中添加一个json文件。尝试将所有数据集或数据集的可分离拆分(按语言、任务、许可证、来源等)作为json文件中的单独实体列举,每个实体都有自己的"唯一数据集标识符"。 请参考data_summaries/_template.json以获取参考和所需字段的信息。

  2. src/downloaders.py中为您的集合编写一个下载器函数。 下载器应下载集合,并过滤掉accepted_filter_ids参数中未表示的任何子集。 此参数对应于每个唯一数据集的"数据集筛选ID",可用于基于Hugging Face数据集对象可能具有的某些列(例如source)进行筛选。 此下载器返回一个任意格式的列表,以在下一步中解析。 "数据集筛选ID"也应该是每行的一个字段,以便我们稍后可以将示例映射回其来源。

def download_<your_collection>(accepted_filter_ids):
    """下载您的数据集并过滤到`accepted_filter_ids`中的子集。

    accepted_filter_ids: 来自数据集摘要文件的"数据集筛选ID"列表,
    其"唯一数据集标识符"在运行时通过许可证/语言/任务等筛选器。
    使用这些来将下载的数据集分割成仅相关的数据点。

    返回一个代表数据集的行列表(任意格式)。

    例如,Flan集合有数百个具有不同许可证的数据集。
    `accepted_filter_ids`将是我们许可证筛选后剩余的数据集列表,
    它们应该对应于huggingface下载中的示例标签。
    """
    # 使用此辅助函数从Hugging Face下载您的数据集,例如:
    dset = huggingface_download('nomic-ai/gpt4all-j-prompt-generations', split='train')
    # 或使用此辅助函数直接从URL下载您的数据集,例如:
    dset = direct_data_request("https://raw.githubusercontent.com/<your-repo>/data.json")
    # 您现在可以返回dset,或者可以进一步筛选下载的数据集(见下文)。
    return dset
# 接下来,我们过滤出相关的数据子集,由`accepted_filter_ids`表示。
# 如果`dset`中有多个数据集,那么通过过滤的数据集的`dataset_filter_key`将被传入`accepted_filter_ids`。
# 你可以使用`pool_filter`并行过滤数据集(参见文档)。
# 'source'是`pool_filter`中定义的`task_key`的一个例子,在downloader.py中
return pool_filter(dset, "source", accepted_filter_ids)
  1. src/preparers.py中为你的集合编写数据准备函数。 准备函数将接收你的自定义下载函数的输出,并按以下格式格式化数据(也在这里解释过):

以下是你如何编写数据集准备函数的示例:

def prepare_<your_collection>(row):
    """ 
        准备函数可以使用`convert_inputs_taergets_to_messages`函数,该函数接收你的自定义下载函数的输出,并按以下格式格式化数据:

        对话中的消息列表:[{"from": <>, "text": <>, "parent": <>, "score": <>}, ...]

        'from'可以是'user'或'assistant'
        'text'是单条消息的内容
        'parent'是对话列表中前一条消息的0索引ID,或列表中第一条消息的唯一数据集标识符(随后是0,然后是1,等等)
        'score'(可选)是该回复的分数,如果适用的话

        你也可以自定义你自己的准备处理函数,只要它们有相同的输出格式。
    """

    return convert_inputs_targets_to_messages(row['prompt'], row['response'],'<dset_name>')


  1. 将你的集合添加到src/collection_mapper.py中的COLLECTION_FN_MAPPER,格式如下:
"<你的数据集文件名(不带扩展名)>":{
    "download_function": downloaders.download_<your_collection>,
    "prepare_function": "preparers.prepare_<your_collection>",
}

  1. 运行以下测试以确认你的代码是否正常工作(或帮助调试):
python src/test_new_collection.py --collection "<你的集合>"

如果你想运行所有内容并集中打印所有错误,在上一个命令后使用--no_halt

python src/test_new_collection.py --collection "<你的集合>" --no_halt

数据集格式

我们的数据集结构是一个字典列表,每个字典代表对话中的一条单独消息。每条消息字典包含以下字段:

  • "from":这表示发送者,可以是"user"或"assistant"。
  • "text":这提供了消息的实际内容。
  • "parent":对于开始对话的消息,此字段包含数据集的ID。对于后续消息,它包含列表中它所回复的消息的0索引位置。
  • "score"(可选):某些消息,尤其是回复,可能带有分数。这在单条消息有多个竞争回复的情况下很有用,展示了对话的潜在分支。

消息通常以对组织,其中"assistant"回复"user",反之亦然,但可能有多个回复对应一条消息,表示对话中的不同路径。

[
    {
        "from": "user",
        "text": "你好,你怎么样?",
        "parent": "dataset1234"
    },
    {
        "from": "assistant",
        "text": "我很好!我能为您做些什么?",
        "parent": 0,
        "score": 1
    },
    {
        "from": "assistant",
        "text": "你好!",
        "parent": 0,
        "score": 0
    },
    ...
]

法律声明和限制

数据溯源计划是一项旨在增加机器学习透明度的研究努力。 本页面提供的信息以及数据溯源计划的任何输出并不构成,也不意图构成法律建议;相反,所有信息、内容和材料仅供一般信息参考。 本项目的任何读者、用户或浏览者不应基于数据溯源计划的信息采取行动或避免采取行动,而应首先向相关司法管辖区的法律顾问寻求法律建议。

本仓库中的代码采用Apache 2.0许可。

联系方式和引用

联系data.provenance.init@gmail.com更新或为此资源做出贡献。

@article{longpre2023data,
  title={The Data Provenance Initiative: A Large Scale Audit of Dataset Licensing \& Attribution in AI},
  author={Longpre, Shayne and Mahari, Robert and Chen, Anthony and Obeng-Marnu, Naana and Sileo, Damien and Brannon, William and Muennighoff, Niklas and Khazam, Nathan and Kabbara, Jad and Perisetla, Kartik and others},
  journal={arXiv preprint arXiv:2310.16787},
  year={2023}
}

编辑推荐精选

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

TRELLIS

TRELLIS

用于可扩展和多功能 3D 生成的结构化 3D 潜在表示

TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。

ai-agents-for-beginners

ai-agents-for-beginners

10 节课教你开启构建 AI 代理所需的一切知识

AI Agents for Beginners 是一个专为初学者打造的课程项目,提供 10 节课程,涵盖构建 AI 代理的必备知识,支持多种语言,包含规划设计、工具使用、多代理等丰富内容,助您快速入门 AI 代理领域。

AEE

AEE

AI Excel全自动制表工具

AEE 在线 AI 全自动 Excel 编辑器,提供智能录入、自动公式、数据整理、图表生成等功能,高效处理 Excel 任务,提升办公效率。支持自动高亮数据、批量计算、不规则数据录入,适用于企业、教育、金融等多场景。

UI-TARS-desktop

UI-TARS-desktop

基于 UI-TARS 视觉语言模型的桌面应用,可通过自然语言控制计算机进行多模态操作。

UI-TARS-desktop 是一款功能强大的桌面应用,基于 UI-TARS(视觉语言模型)构建。它具备自然语言控制、截图与视觉识别、精确的鼠标键盘控制等功能,支持跨平台使用(Windows/MacOS),能提供实时反馈和状态显示,且数据完全本地处理,保障隐私安全。该应用集成了多种大语言模型和搜索方式,还可进行文件系统操作。适用于需要智能交互和自动化任务的场景,如信息检索、文件管理等。其提供了详细的文档,包括快速启动、部署、贡献指南和 SDK 使用说明等,方便开发者使用和扩展。

Wan2.1

Wan2.1

开源且先进的大规模视频生成模型项目

Wan2.1 是一个开源且先进的大规模视频生成模型项目,支持文本到图像、文本到视频、图像到视频等多种生成任务。它具备丰富的配置选项,可调整分辨率、扩散步数等参数,还能对提示词进行增强。使用了多种先进技术和工具,在视频和图像生成领域具有广泛应用前景,适合研究人员和开发者使用。

爱图表

爱图表

全流程 AI 驱动的数据可视化工具,助力用户轻松创作高颜值图表

爱图表(aitubiao.com)就是AI图表,是由镝数科技推出的一款创新型智能数据可视化平台,专注于为用户提供便捷的图表生成、数据分析和报告撰写服务。爱图表是中国首个在图表场景接入DeepSeek的产品。通过接入前沿的DeepSeek系列AI模型,爱图表结合强大的数据处理能力与智能化功能,致力于帮助职场人士高效处理和表达数据,提升工作效率和报告质量。

Qwen2.5-VL

Qwen2.5-VL

一款强大的视觉语言模型,支持图像和视频输入

Qwen2.5-VL 是一款强大的视觉语言模型,支持图像和视频输入,可用于多种场景,如商品特点总结、图像文字识别等。项目提供了 OpenAI API 服务、Web UI 示例等部署方式,还包含了视觉处理工具,有助于开发者快速集成和使用,提升工作效率。

下拉加载更多