我们很高兴在 Hugging Face Spaces 上推出 Argilla。现在,您只需点击几下即可在 Hugging Face Hub 上部署 Argilla。如果您有 Hugging Face 帐户,只需点击下方的一键部署按钮
在 Argilla,我们的目标是为 NLP 从业者提供最强大的工具,以便迭代 NLP 数据。因此,我们很高兴与 Hugging Face 合作,并将数据标注和 Argilla 以数据为中心的方法带给成千上万的从业者。
工作原理
要开始使用 Argilla,您应该部署其服务器。您可以选择本地部署或通过云提供商部署。借助 Hugging Face Spaces 上的 Argilla,您可以快速且零成本地启动自己的 Argilla 服务器,而无需任何本地设置。只需在几分钟内启动
- 在 HF Spaces 上部署。如果您计划经常使用 Space 或处理用于数据标注和反馈收集的大型数据集,则升级硬件,使用更强大的 CPU 和更大的 RAM 可以提高性能。
- 可选地,设置您的用户凭据和 API 密钥。默认用户名和密码为:owner 和
12345678
。 - 复制直接 URL 以用于 argilla 库,进行数据读取和写入。
- 打开您最喜欢的 Python 编辑器,开始构建出色的数据集!继续阅读以查看一些示例用例
有关更多详细信息,请查看我们文档上的分步指南。现在,让我们探索一些令人兴奋的用例和应用。
标注数据集并使用 SetFit 构建自定义分类器
Argilla 的核心应用是高效地标注您的数据集。可以使用预训练模型和少样本库(如 SetFit)进一步简化此过程。您可以按照 Argilla 文档上的分步教程,了解如何标注数据集并训练 SetFit 模型。该教程可以在 Colab 或 Jupyter Notebook 上运行。以下是您需要的大部分代码
创建用于数据标注的数据集
import argilla as rgfrom datasets import load_dataset# You can find your Space URL behind the Embed this space buttonrg.init( api_url="<https://your-direct-space-url.hf.space>", api_key="team.apikey")banking_ds = load_dataset("argilla/banking_sentiment_setfit", split="train")# Argilla expects labels in the annotation column# We include labels for demo purposesbanking_ds = banking_ds.rename_column("label", "annotation")# Build argilla dataset from datasetsargilla_ds = rg.read_datasets(banking_ds, task="TextClassification")# Create datasetrg.log(argilla_ds, "bankingapp_sentiment")
完成此步骤后,您现在可以开始使用 Argilla UI 来标注您的数据。
加载数据集并训练 SetFit 模型
一旦您标注了一些示例,您就可以运行以下代码来训练 SetFit 模型
labelled_ds = rg.load("banking_sentiment").prepare_for_training()labelled_ds = labelled_ds.train_test_split()model = SetFitModel.from_pretrained("sentence-transformers/paraphrase-mpnet-base-v2")# Create trainertrainer = SetFitTrainer( model=model, train_dataset=labelled_ds["train"], eval_dataset=labelled_ds["test"], loss_class=CosineSimilarityLoss, batch_size=8, num_iterations=20,)trainer.train()metrics = trainer.evaluate()
使用 Gradio 为 Flan-T5 构建反馈循环
Argilla 的另一个应用是从第三方应用收集数据和反馈。我们将 Argilla 设计为可以无缝集成到现有工具和工作流程中。如果您想从自定义应用或服务构建数据集,您现在可以轻松地将 Argilla 与 Gradio、Streamlit 或 Inference endpoints 连接起来。
在此示例中,我们将 Gradio Space 与 Argilla 连接,以收集 Flan-T5 的输入和预测。此数据可用于通过 Argilla 收集人工反馈,以便为您的用例微调 Flan-T5 或使用 TRL 构建 RLHF 工作流程。以下是您需要添加到 app.py 中的所有内容
import argilla as rgclass ArgillaLogger(FlaggingCallback): def __init__(self, api_url, api_key): rg.init(api_url=api_url, api_key=api_key) def setup(self, components: List[IOComponent], flagging_dir: str): pass def flag( self, flag_data: List[Any], flag_option: Optional[str] = None, flag_index: Optional[int] = None, username: Optional[str] = None, ) -> int: text = flag_data[0] inference = flag_data[1] # build and add record to argilla dataset rg.TextClassificationRecord(inputs={"answer": text, "response": inference}) rg.log( name="i-like-tune-flan", records=record, )io = gr.Interface( allow_flagging="manual", flagging_callback=ArgillaLogger( api_url="https://dvilasuero-argilla-template-space.hf.space", api_key="team.apikey", ), # other params)
您可以在下方与生成的 Gradio 应用进行交互
每当用户提交文本并按下 Flag 按钮时,输入和生成的响应都会记录在 Argilla 中。借助 Argilla,您可以评估 Flan-T5 生成的响应,如下所示
此演示 Space 是 Omar Sanseviero 令人惊叹的 Space 的修改版本,但您可以使用 Hub 上的几乎任何 NLP 模型构建自己的 Argilla 驱动的 Gradio 应用。提示:使用模型 Hub 页面上的 Deploy 按钮,启动 Space,并添加 ArgillaLogger 块。
请注意,您可以使用 Gradio 的标记选项 直接从用户那里收集反馈,并将此反馈记录在 Argilla 上。如果您对此用例感兴趣,请在 Argilla 的 discord 上与我们联系。
使用 Streamlit 上传和下载 Argilla 数据集
不想编写代码?查看这个简单的 Streamlit 应用。它允许您从 CSV 文件创建 Argilla 数据集,并以 CSV 或 JSON 格式下载已标注的数据集。
在 Jupyter Notebook 或 Colab 中嵌入 Argilla
您想直接从 notebook 中标注数据吗?只需使用下面的代码片段并开始标注
%%html<iframe src="https://your-argilla-space.hf.space" frameborder="0" width=100% height="700"></iframe>
在 Colab 或 Notebooks 上运行 Argilla 教程
最后,您可以使用我们新的“在 Colab 中打开”和“查看源代码”按钮运行所有 Argilla 教程。这些教程按 ML 生命周期阶段、库、技术和 NLP 任务进行组织。我们希望您能找到一个适合您需求的教程!
下一步
将 Argilla Spaces 与其他工具和服务相结合的潜在应用是无限的。正如我们在推出 Argilla 时所提到的,我们的目标是让更多人参与到 AI 开发过程中,我们期待看到您使用 Spaces 上的 Argilla 创造出什么。如果您想分享反馈、展示您的作品或讨论未来的计划,请加入我们的 discord!