Project Icon

Data-Provenance-Collection

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

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

数据溯源倡议

论文 | 数据溯源浏览器

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

数据溯源倡议

数据溯源倡议是一项跨学科的志愿者努力,旨在提高人工智能训练数据集的透明度、文档记录和负责任使用。通过对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

收集的信息

标识信息

  • 唯一数据集标识符 --- 数据集的唯一标识符,格式为-
  • 数据集名称 --- 数据集的常用名称。
  • 论文标题 --- 相关论文的标题(如果有)。
  • 数据集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}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号