项目介绍:Fondant
Fondant 是一个数据框架,旨在促进联合构建数据集的能力。它专为合作开发和制作数据集设计,鼓励共享可复用的操作以及完整的数据处理流程。Fondant 允许用户初始化数据集,对其应用各种操作,并从其他用户加载数据集,便利了共享操作和数据集版本管理,而这一切都可以在无需移动源数据的情况下进行。
背景与优势
Fondant 的出现旨在解决数据处理中复杂协作的难题。通过 Fondant,用户能够在多个云服务上管理和执行数据操作,使得数据处理过程简单化,且极具分享性。
开始使用 Fondant
使用 Fondant 可以轻松定义由复用组件和自定义组件组成的工作流。比如,用户可以利用 load_from_hf_hub
组件从 Hugging Face Hub 中加载数据集,并通过自定义组件处理这些数据(如调整图像大小),最终生成新的数据集。
import pyarrow as pa
from fondant.dataset import Dataset
# 从 Hugging Face Hub 加载数据初始化数据集
raw_data = Dataset.create(
"load_from_hf_hub",
arguments={
"dataset_name": "fondant-ai/fondant-cc-25m",
"n_rows_to_load": 100,
},
produces={
"alt_text": pa.string(),
"image_url": pa.string(),
"license_location": pa.string(),
"license_type": pa.string(),
"webpage_url": pa.string(),
"surt_url": pa.string(),
"top_level_domain": pa.string(),
},
)
# 从 URL 下载图像
images = raw_data.apply(
"download_images",
arguments={
"input_partition_rows": 100,
"resize_mode": "no",
},
)
# 调整图像大小
dataset = images.apply(
"resize_images",
arguments={
"resize_width": 128,
"resize_height": 128,
},
)
运行你的流水线
一旦建立好流水线,用户可以通过内置的命令行接口轻松运行和编译:
fondant run local pipeline.py
用户可通过 fondant --help
命令了解所有可用的命令和参数。
Fondant 的运作原理
- 数据集:Fondant 的核心构建块是数据集,一个数据集由多个列组成。用户可以通过处理现有数据集,创建新的数据集。Fondant 优化了数据传输过程,并能根据需要加载和储存列,同时进行分区处理。
- 操作:对数据集进行的操作会生成新的数据集。操作可包括加载、过滤、新增列等操作,这些操作是可以共享的,便于在其他工作流中复用。
- 可共享的树形结构:数据集是经过多个操作处理的结果,包含完整的处理历史,用户可以根据现有数据集进行扩展或创建分支。
核心功能
Fondant 提供了以下功能:
- 组合式的可即插即用数据处理工作流
- 包含即用型可复用组件的库
- 简单的 Pandas 数据框接口,用于创建自定义组件
- 内置数据线索跟踪、缓存和数据浏览器
- 支持生产级的可扩展部署
- 支持在不同云平台(如 Google Cloud 的 Vertex、AWS 的 Sagemaker、任意 k8s 集群的 Kubeflow)上的运行整合
示例流水线
Fondant 提供了多个现成的示例流水线,用户可以将其作为起点,以便于探索 Fondant。每个流水线均托管在单独的代码库中,包含教程笔记,用户可以轻松克隆并开始。
安装
要开始使用 Fondant,可以通过以下命令进行基本安装:
pip install fondant
Fondant 还包含额外的依赖项,以支持特定的运行器、存储整合以及将组件发布到注册表。对于本地运行器(docker),默认包括这些依赖项。
贡献方式
Fondant 欢迎各种形式的贡献:
- 提交问题或错误到 GitHub Issue
- 提出建议和反馈
- 欢迎开发者参与框架代码贡献
- 扩展 Fondant 的可复用组件库
对于想参与 Fondant 开发的用户,可以通过使用 poetry 和 pre-commit 工具进行环境设置,以确保平滑的开发流程。
通过从贡献指南开始,开发者能够了解更多细节以及如何进行有效的贡献。