Hub 文档

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

数据集中心支持开源生态系统中的多个库。多亏了 huggingface_hub Python 库,在中心上共享数据集变得很容易。我们很高兴欢迎一批推动机器学习发展的开源库加入中心。

下表总结了支持的库及其集成级别。

描述 从中心下载 推送到 Hub
Argilla 面向重视高质量数据的 AI 工程师和领域专家的协作工具。
Dask 并行分布式计算库,可扩展现有 Python 和 PyData 生态系统。
数据集 🤗 Datasets 是一个用于访问和共享音频、计算机视觉和自然语言处理 (NLP) 数据集的库。
Distilabel 用于合成数据生成和 AI 反馈的框架。
DuckDB 进程内 SQL OLAP 数据库管理系统。
FiftyOne FiftyOne 是一个用于图像、视频和 3D 数据策展和可视化的库。
Pandas Python 数据分析工具包。
Polars 基于 OLAP 查询引擎的 DataFrame 库。
PyArrow Apache Arrow 是一种列式格式和工具箱,用于快速数据交换和内存分析。
Spark 分布式环境中的实时、大规模数据处理工具。
WebDataset 用于为大型数据集编写 I/O 管道的库。

将数据库和工具与中心集成

本指南旨在帮助希望与 Hugging Face 中心集成的数据库和工具的开发人员和维护人员。无论您是构建数据处理库、分析工具还是任何需要与数据集交互的软件,本文档都将帮助您实现中心集成。

本指南涵盖:

  • 将数据从中心加载到您的库/工具中的可能方法
  • 将数据从您的库/工具上传到中心的可能方法

从中心加载数据

如果您有一个用于处理数据的库,那么让您的用户从中心加载数据会很有帮助。

一般来说,我们建议您依赖现有库(如 `datasets`、`pandas` 或 `polars`)来完成此操作,除非您有特定的理由实现自己的库。如果您需要对加载过程进行更多控制,可以使用 `huggingface_hub` 库,例如,该库允许您从存储库下载特定文件子集。

您可以在此处找到有关从中心加载数据的更多信息。

通过数据集查看器和 Parquet 文件集成

中心的`数据集查看器`和 `Parquet` 转换系统提供了一种标准化的方式,可以与数据集集成,无论其原始格式如何。此基础架构是中心和外部库之间可靠的集成层。

如果数据集尚未采用 Parquet 格式,Hub 会自动将每个数据集的前 5GB 转换为 Parquet 格式,以支持数据集查看器并提供一致的访问模式。这种标准化为库集成提供了多种好处

  • 无论原始格式如何,都提供一致的数据访问模式
  • 通过中心的`数据集查看器`内置数据集预览和探索。`数据集查看器`还可以作为 iframe 嵌入到您的应用程序中,从而轻松提供丰富的数据集预览。有关嵌入查看器的更多信息,请参阅数据集查看器嵌入文档
  • 高效的列式存储,针对查询进行了优化。例如,您可以使用像 DuckDB 这样的工具来查询或筛选特定数据子集。
  • Parquet 在机器学习和数据科学生态系统中得到了很好的支持。

有关使用数据集查看器 API 的更多详细信息,请参阅数据集查看器 API 文档

将数据上传到中心

本节介绍在您的库中添加将数据上传到中心的功能的可能方法,即如何实现 `push_to_hub` 方法。

本指南将涵盖将数据上传到中心的三种主要方式

  • 使用 `datasets` 库和 `push_to_hub` 方法
  • 使用 `pandas` 写入中心
  • 使用 `huggingface_hub` 库和 `hf_hub_download` 方法
  • 直接使用 API 或 Git LFS

使用数据集库

将数据推送到中心最直接的方法是依赖 `datasets` 库中现有的 `push_to_hub` 方法。`push_to_hub` 方法将自动处理

  • 存储库的创建
  • 数据集到 Parquet 的转换
  • 将数据集分块成合适的片段
  • 数据上传

例如,如果您有一个返回字典列表的合成数据生成库,您可以简单地执行以下操作

from datasets import Dataset

data = [{"prompt": "Write a cake recipe", "response": "Measure 1 cup ..."}]
ds = Dataset.from_list(data)
ds.push_to_hub("USERNAME_OR_ORG/repo_ID")

此类集成的示例

依赖现有库与中心的集成

Polars、Pandas、Dask 和 DuckDB 都可以写入 Hugging Face Hub 存储库。有关更多详细信息,请参阅数据集库

如果您已经在代码中使用了这些库之一,那么添加将数据推送到 Hub 的功能非常简单。例如,如果您有一个可以返回 Pandas DataFrame 的合成数据生成库,那么您需要编写以下代码才能将数据写入 Hub

from huggingface_hub import HfApi

# Initialize the Hub API
hf_api = HfApi(token=os.getenv("HF_TOKEN"))

# Create a repository (if it doesn't exist)
hf_api.create_repo(repo_id="username/my-dataset", repo_type="dataset")

# Convert your data to a DataFrame and save directly to the Hub
df.to_parquet("hf://datasets/username/my-dataset/data.parquet")

使用 huggingface_hub Python 库

`huggingface_hub` Python 库提供了一种更灵活的方式将数据上传到中心。该库允许您将特定文件或文件子集上传到存储库。如果您有一个不想转换为 Parquet 的大型数据集,或者想要上传特定文件子集,或者想要对存储库结构有更多控制,这将非常有用。

根据您的用例,您可以在代码中的特定点上传文件或文件夹,例如,当用户单击“推送到中心”时,将注释从工具导出到中心。例如,

from huggingface_hub import HfApi
api = HfApi(token=HF_TOKEN)

api.upload_folder(
    folder_path="/my-cool-library/data-folder",
    repo_id="username/my-cool-space",
    repo_type="dataset",
    commit_message="Push annotations to Hub"
    allow_patterns="*.jsonl",
)

您可以在此处找到有关将数据上传到中心的更多信息。

或者,在某些情况下,您可能希望在后台上传数据,例如,每 10 分钟生成一次合成数据。在这种情况下,您可以使用 `huggingface_hub` 库的 `scheduled_uploads` 功能。有关更多详细信息,请参阅计划上传文档

您可以在以下示例中看到使用此方法将数据上传到中心:

更多支持

有关集成的技术问题,请随时通过 datasets@huggingface.co 联系数据集团队。

< > 在 GitHub 上更新