Argilla
Argilla 是一款面向 AI 工程师和领域专家的协作工具,他们需要为其项目构建高质量数据集。
Argilla 可用于收集各种 AI 项目的人工反馈,例如传统的 NLP(文本分类、命名实体识别等)、大型语言模型(检索增强生成、偏好微调等)或多模态模型(文本到图像等)。Argilla 的编程方法使您可以构建用于持续评估和模型改进的工作流程。Argilla 的目标是通过快速迭代正确的数据和模型,确保您的数据工作获得回报。
人们使用 Argilla 构建什么?
社区使用 Argilla 创建了令人惊叹的开源数据集和模型。
开源数据集和模型
Argilla 也为开源贡献了一些模型和数据集。
- 已清理的 UltraFeedback 数据集 用于微调Notus 和Notux 模型。原始的 UltraFeedback 数据集是使用 Argilla UI 过滤器整理的,用于查找和报告原始数据生成代码中的错误。基于此数据整理过程,Argilla 构建了此新版本的 UltraFeedback 数据集并微调了 Notus,在多个基准测试中优于 Zephyr。
- distilabeled Intel Orca DPO 数据集 用于微调改进的 OpenHermes 模型。此数据集是通过结合 Argilla 中的人工整理和 distilabel 的 AI 反馈构建的,从而产生了一个改进版本的 Intel Orca 数据集,并且优于在原始数据集上微调的模型。
示例用例
来自红十字会、Loris.ai 和 Prolific 等公司的 AI 团队使用 Argilla 来提高 AI 项目的质量和效率。他们在我们的AI 社区聚会上分享了他们的经验。
- AI 向善:红十字会的演示展示了红十字会的领域专家和 AI 团队如何通过对乌克兰危机难民的请求进行分类和重定向,从而简化红十字会的支持流程。
- 客户支持:在Loris 的聚会上,他们展示了他们的 AI 团队如何使用无监督和少样本对比学习来帮助他们快速验证和获得大量多标签分类器的标记样本。
- 研究研究:Prolific 的展示宣布了他们与我们平台的集成。他们利用它在他们的标注人员中积极分发数据收集项目。这使 Prolific 能够快速有效地为研究研究收集高质量数据。
先决条件
huggingface-cli login
确保您已安装 argilla>=2.0.0
pip install -U argilla
最后,您需要部署 Argilla 服务器和 UI,这可以通过在 Hugging Face Hub 上轻松完成。
导入和导出数据集和记录
本指南介绍如何将您的数据集导入和导出到 Hugging Face Hub。
在 Argilla 中,您可以导入/导出数据集的两个主要组件
- 在
rg.Settings
中定义的数据集的完整配置。如果您想分享您的反馈任务或稍后在 Argilla 中恢复它,这将很有用。 - 存储在数据集中的记录,包括
Metadata
、Vectors
、Suggestions
和Responses
。如果您想在 Argilla 之外使用数据集的记录,这将很有用。
将 Argilla 数据集推送到 Hugging Face Hub
您可以将数据集从 Argilla 推送到 Hugging Face Hub。如果您想与社区共享您的数据集或对其进行版本控制,这将很有用。您可以使用 rg.Dataset.to_hub
方法将数据集推送到 Hugging Face Hub。
import argilla as rg
client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
dataset = client.datasets(name="my_dataset")
dataset.to_hub(repo_id="<repo_id>")
包含或不包含记录
以上示例将把数据集的Settings
和记录推送到Hub。如果您只想推送数据集的配置,可以将with_records
参数设置为False
。这在您只对特定数据集模板感兴趣或想要更改数据集设置和/或记录时非常有用。
dataset.to_hub(repo_id="<repo_id>", with_records=False)
从Hugging Face Hub拉取Argilla数据集
您可以将Hugging Face Hub上的数据集拉取到Argilla。如果您想恢复数据集及其配置,这将非常有用。您可以使用rg.Dataset.from_hub
方法从Hugging Face Hub拉取数据集。
import argilla as rg
client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
dataset = rg.Dataset.from_hub(repo_id="<repo_id>")
rg.Dataset.from_hub
方法会加载数据集仓库中的配置和记录。如果您只想加载记录,可以将datasets.Dataset
对象传递给rg.Dataset.log
方法。这使您可以配置自己的数据集并重用现有的Hub数据集。
包含或不包含记录
以上示例将从Hub拉取数据集的Settings
和记录。如果您只想拉取数据集的配置,可以将with_records
参数设置为False
。这在您只对特定数据集模板感兴趣或想要更改数据集设置和/或记录时非常有用。
dataset = rg.Dataset.from_hub(repo_id="<repo_id>", with_records=False)
有了数据集的配置,您就可以对数据集进行更改。例如,您可以调整数据集的设置以适应不同的任务。
dataset.settings.questions = [rg.TextQuestion(name="answer")]
然后,您可以使用datasets
包的load_dataset
方法记录数据集的记录,并将数据集传递给rg.Dataset.log
方法。
hf_dataset = load_dataset("<repo_id>")
dataset.log(hf_dataset)