Hub 文档
库
并获得增强的文档体验
开始使用
库
数据集 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 上更新