Argilla:开源的数据策展工具

许多博客都在讨论如何针对特定用例微调模型,从而节省成本并提高隐私性。直到最近,微调自己的模型仍然面临诸多挑战:

• 数据获取 • 数据准备 • 微调基础设施(GPU) • 部署和推理基础设施 • 成本因素

由于这些障碍,许多个人和公司选择直接使用厂商提供的基础模型,例如 ChatGPT 或 Claude 等应用。一些人也对更高级的 AI 聊天应用感兴趣,例如使用 Ollama 或其他开源模型的 OpenWebUI。当然,市面上还有很多其他应用,但你应该明白我的意思。

如果你想更进一步,微调自己的模型——无论是使用合成数据、标注数据,甚至是现有对话数据——现在你可以使用 Argilla 和 OpenPipe 等开源技术,只需点击几下鼠标,几乎无需编写任何代码即可完成。

0、我们使用的工具

数据生成:

微调:

  • OpenPipe
  • OpenAI(可选)

推理:

  • OpenPipe
  • OpenAI(可选)
  • Ollama(可选)
什么是数据集生成器和 Argilla

简而言之,数据集生成器使用AI生成数据。也就是说,用户指定数据的内容(例如,客户支持请求),然后让AI猜测人类的响应,例如,对请求的恰当回复。Argilla 更进一步,允许您使用相同的生成数据集,并让人工进行审核,并在必要时进行修正。最终的数据集随后用于微调模型,使其成为执行此任务的专家。

开始吧!

1、启动Argilla

克隆 Argilla 的 HF Space 并启动它。确保它是公开的,以便数据集生成器可以发布数据集。

在 Space 的设置中,设置一个用户名和密码,以便稍后登录。如果一切正常,您应该会看到类似这样的信息:

使用您提供的用户名和密码登录。

点击“从 Python 导入”(如下图所示),并保存 Argilla 的 URL 和密钥,以便稍后在数据集生成器中输入:

请注意,API 密钥会在每次 Space 重启时更改,因此最好将 Argilla 的设置持久化,如本文所述。您可以在日志中查看启动进度。

前往合成数据生成器 Space 并将其克隆。

打开设置,并提供至少以下四个环境变量:

Argilla 空间看起来是这样的:https://airabbitx-argilla.hf.space

默认模型是 meta-llama/Llama-3.1–8B-Instruct。

请注意,要使用 meta-llama 模型,您需要在 meta-llama/Llama-3.1–8B-Instruct 的模型页面上申请访问权限。您需要填写一份表单,并等待大约半小时才能获得访问权限。> 另请注意,上述模型需要 Hugging Face Pro 订阅,每月费用约为 10 美元。您也可以尝试使用较小的模型,例如 3.2–3B,但我尚未对其进行测试。您可以使用 Hugging Face 模型 Playground 或通过 cURL 调用端点来检查您是否拥有模型预测端点的访问权限。cURL 代码片段可以在 Playground 中找到。

2、创建示例数据集

在聊天数据选项卡中选择第一个示例,然后点击“创建”,即可生成一个简单的聊天数据集。

如果遇到任何错误,建议您查看如下所示的空间日志,或者在空间 URL 中添加“/settings?logs=container”。

如果一切正常,您现在应该可以看到生成的示例数据集。请注意,您可以在创建后编辑生成的系统提示。

什么是生成的数据集?

如果您想知道生成数据集的具体含义:它只是使用系统提示调用模型,并保存模型返回的补全结果(同样的概念也适用于其他类型的微调,例如文本分类)。

为什么需要 Argilla?

模型生成的答案是微调的良好起点(您可以将 LLM 答案替换为人类答案),尤其是在生成这些答案的模型比您计划微调的模型更智能的情况下(例如,使用 GPT-4 作为教师模型来微调 Llama 3B)。

在某些情况下,您可能需要通过人工审核 LLM 在生成过程中猜测的标签来进一步改进数据集。

好的,我们继续。

3、生成新样本

当您对结果满意后,即可进入最终阶段。创建完整数据集的步骤。请注意,步骤 2 中创建的只是一个样本。

点击“保存”后,它将根据之前生成的系统提示开始生成新的样本。

对于文本分类数据集,结果可能如下所示:

对于聊天补全(我们将在本教程中用它来微调 Llama,以及可选的 OpenAI),点击几次后结果如下所示:

完成后,点击“推送到 Hub”。现在它将创建完整数据集(不仅仅是发布!),并将其发布到 Hugging Face 和 Argilla(如果提供了 API 密钥)。

请注意,微调通常至少需要 50-100 个数据集(参见下文 OpenPipe)。

如有需要,请务必选中“私有数据集”选项。

在 Argilla 中,您还可以从 Hugging Face 导入公共数据集,但您必须自行配置标注。因此,数据集生成器自带的导出功能可以简化您的操作。

几分钟后,您应该可以在 Hugging Face 中看到导出的数据集。现在,您可以在 Argilla 中使用该数据集进行人工标注(可选)。

您的数据集现在应该可以在 Hugging Face 个人资料的“数据集”部分以及 Argilla 中找到:

Argilla 中也应该提供相同的完整数据集:

4、(可选)标注数据

现在我们可以开始在 Argilla 中标注数据,并最终将其保存到 Hugging Face。在下面的示例中,我们生成了一个文本分类数据集,用户现在可以编辑 LLM 做出的分类(有用 vs. 无用)。然后,我们将 LLM 标注和人工标注的数据集保存起来以进行微调:

请注意,在聊天补全的情况下(例如,我们在 ChatGPT 中看到的,人与 LLM 之间的一轮或多轮对话),标注方式略有不同。您可以查看对话,包括 AI 的回答以及评分(并非由 AI 标注!)。

用户可以对结果进行评分。之后,在微调过程中,我们可以只选择那些由人工标注者评分较高的结果。


现在我们已经完成了数据集生成步骤。这是最难的部分——现在我们可以使用此数据集进行微调。


原文链接:From Synthetic Data Generation to Fine-Tuned LLM

汇智网翻译整理,转载请标明出处