Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

数据集 Hub 支持开源生态系统中的多个库。借助 huggingface_hub Python 库,可以轻松地在 Hub 上共享您的数据集。我们很高兴欢迎一组开源库加入 Hub,这些库正在推动机器学习向前发展。

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

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

将数据库和工具与 Hub 集成

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

本指南涵盖

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

从 Hub 加载数据

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

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

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

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

Hub 的数据集查看器和 Parquet 转换系统提供了一种与数据集集成的标准化方法,而无需考虑其原始格式。此基础设施是 Hub 和外部库之间可靠的集成层。

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

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

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

将数据上传到 Hub

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

本指南将介绍将数据上传到 Hub 的三种主要方法

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

使用 datasets 库

将数据推送到 Hub 最直接的方法是依赖 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")

此类集成的示例

依赖现有库与 Hub 的集成

Polars、Pandas、Dask、Spark 和 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 库提供了一种更灵活的方法来将数据上传到 Hub。该库允许您将特定文件或文件子集上传到仓库。如果您有一个不想转换为 Parquet 的大型数据集,想要上传特定文件子集,或者想要更好地控制仓库结构,这将非常有用。

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

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",
)

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

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

您可以在以下位置查看使用此方法将数据上传到 Hub 的示例

更多支持

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

< > 在 GitHub 上更新