Hub 文档
库
并获得增强的文档体验
开始使用
库
数据集中心支持开源生态系统中的多个库。多亏了 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 上更新